Я создаю экземпляр exoplayer и добавляю URL-адрес потока в качестве источника прогрессивного мультимедиа, подготавливаю проигрыватель и проигрываю звук. Когда я возвращаюсь к предыдущему действию и снова открываю действие проигрывателя, другой экземпляр проигрывателя запускает тот же звук (два экземпляра одновременно воспроизводят один и тот же звук). Также у меня есть кнопка отключения звука. Он работает, как и ожидалось, когда я открываю активность в первый раз. При повторном открытии действия кнопка отключения звука отключает звук только экземпляра ExoPlayer текущего действия.
Я попытался переместить код ExoPlayer в другой класс и вызвать их с помощью общедоступных функций, но это не сработало.
val dataSourceFactory = DefaultDataSourceFactory(this, Util.getUserAgent(this, packageName))
val newMediaSource = ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(Uri.parse("STREAM URL"));
val exoPlayer = ExoPlayerFactory.newSimpleInstance(this);
exoPlayer.prepare((newMediaSource));
exoPlayer.playWhenReady = true;
muteButton.setOnClickListener {
if(muteButton.tag == "muted")
{
exoPlayer.volume = 1f;
muteButton.tag = "unmuted";
}
else
{
exoPlayer.volume = 0f;
muteButton.tag = "muted";
}
}
Я хочу, чтобы тот же ExoPlayer запускался при повторном открытии активности, а также отключал звук этого конкретного экземпляра.
onBackPressed()
и вызовитеfinish()
внутри него. Даже не думайте, что вам нужно звонитьfinish()
. - person HB.   schedule 02.07.2019onCreate
, если служба запущена, если это так, вы должны сначала остановить ее, а затем снова запустить, передав новый файл. - person HB.   schedule 03.07.2019