Как мне заставить Exoplayer работать в фоновом режиме? - PullRequest
0 голосов
/ 02 августа 2020

Я создаю простой c проигрыватель музыки с Exoplayer в Android Kotlin. (Воспроизведение локального MP3 в хранилище)

Проблема в том, что воспроизведение c музыки останавливается вне приложения и если мобильный телефон переходит в спящий режим. Итак, я попытался реализовать службу переднего плана, но это не сработало.

Ниже мой код без той части, которую я пытался реализовать службу переднего плана.

Пожалуйста, дайте мне знать, как для решения этой проблемы или как правильно реализовать службу переднего плана.

класс 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()
}

}

1 Ответ

3 голосов
/ 02 августа 2020

Поскольку вы выпускаете проигрыватель в Onstop, поэтому, когда ваше приложение переходит в фоновый режим, вызывается Onstop, и вы освобождаете проигрыватель, поэтому не отпускайте проигрыватель в OnStop (), удалите эту часть кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...