Exoplayer - воспроизводит одно и то же аудио снова и снова при возобновлении активности - PullRequest
0 голосов
/ 02 июля 2019

Я создаю экземпляр 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 запускался при повторном открытии действия, а также отключал этот конкретный экземпляр

1 Ответ

0 голосов
/ 11 июля 2019

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

...