Итак, у меня есть звук, который я хочу воспроизводить непрерывно на протяжении всего моего приложения.Но как только приложение переходит в фоновый режим, звук должен прекратиться.Я пытаюсь сделать это во время onStop ().Проблема в том, что onStop () вызывается каждый раз, когда действие останавливается, независимо от того, остаюсь я в приложении или нет.Есть ли способ провести различие между этими случаями?Примерно так:
override fun onStop() {
if [App is left but not destroyed] {
super.onStop()
mediaLength = mediaPlayer.currentPosition
mediaPlayer.pause()
}
else { //i.e. activity is left but the new activity is from the same app.
super.onStop()
}
}
РЕДАКТИРОВАТЬ:
Я пытался реализовать этот ответ , но пришлось перевести его на kotlin.Я думаю, что все сделал правильно, но я получаю unresolved reference: mediaPlayer
в Lifecycleobserver.
Вот Обозреватель:
package com.example.asdasd.soulfetch
import android.app.Application
import android.arch.lifecycle.Lifecycle
import android.arch.lifecycle.LifecycleObserver
import android.arch.lifecycle.OnLifecycleEvent
import android.arch.lifecycle.ProcessLifecycleOwner
class CheckLifeCycle: Application(), LifecycleObserver {
override fun onCreate() {
super.onCreate()
ProcessLifecycleOwner.get().getLifecycle().addObserver(this)
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun onAppBackground() {
MainActivity.mediaPlayer.pause()
}
}
А вот соответствующие части MainActivity
class MainActivity : AppCompatActivity() {
lateinit var mediaPlayer: MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mediaPlayer = MediaPlayer()
fun playBordun() {
mediaPlayer = MediaPlayer.create(this, R.raw.cbordun)
mediaPlayer.isLooping = true
mediaPlayer.start()
}
playBordun()
}
override fun onDestroy() {
super.onDestroy()
mediaPlayer.stop()
mediaPlayer.reset()
mediaPlayer.release()
}
Есть идеи, что мне здесь не хватает?