【发布时间】:2019-01-29 15:02:33
【问题描述】:
所以我有一个声音,我想在整个应用程序中连续播放。但是一旦应用程序进入后台,声音就会停止。我正在尝试在 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()
}
}
编辑:
我尝试实现this answer,但不得不将其翻译成kotlin。我认为我做的一切都是正确的,但我在 Lifecycleobserver 中得到了 unresolved reference: mediaPlayer。
这是观察者:
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()
}
知道我在这里缺少什么吗?
【问题讨论】:
标签: android audio kotlin android-mediaplayer android-lifecycle