我正在使用Android的Exoplayer创建一个简单的音乐播放器。(在存储中播放本地MP3 )
问题是播放音乐在应用程序之外停止,如果手机打开睡眠模式的话。因此,我试图实现前台服务,但它没有工作。
下面是我的代码,没有我试图实现前台服务的部分。
请让我知道如何解决这个问题或如何正确地实现前台服务。
类AudioviewActivity : AppCompatActivity() {
private var player: SimpleExoPlayer? = null
private var playbackPosition = 0L
private var currentWindow = 0
private var playWhenReady = false
override fun onBackPressed() {
super.onBackPressed()
player!!.stop()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_audioview)}
private fun initializePlayer() {
if (player == null) {
player = ExoPlayerFactory.newSimpleInstance(this)
val userAgent = Util.getUserAgent(this, "Mymusicplayer")
val mediaSource = ExtractorMediaSource(
Uri.parse("asset:///trackone.mp3"),
DefaultDataSourceFactory(this, userAgent), DefaultExtractorsFactory(),
null, null)
player!!.prepare(mediaSource)
player!!.seekTo(currentWindow, playbackPosition)
player!!.playWhenReady = playWhenReady
player!!.repeatMode = SimpleExoPlayer.REPEAT_MODE_ONE
}
}
private fun releasePlayer() {
player?.let {
playbackPosition = it.currentPosition
currentWindow = it.currentWindowIndex
playWhenReady = it.playWhenReady
it.release()
player = null
}
}
override fun onResume() {
super.onResume()
initializePlayer()
}
override fun onRestart() {
super.onRestart()
initializePlayer()
}
override fun onStop() {
super.onStop()
releasePlayer()
}}
发布于 2020-08-02 08:27:37
因为您是在Onstop中发布播放器,所以当您的应用程序处于后台时,就会调用Onstop,并且您正在释放播放器,所以不要在OnStop()中发布player,请删除代码的这一部分。
https://stackoverflow.com/questions/63211934
复制相似问题