Когда останавливать музыку в музыкальном проигрывателе - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю музыкальный плеер с exoplayer. Я использую отдельный сервис для воспроизведения музыки, но проблема в том, что музыка продолжает воспроизводиться, даже когда я закрываю основной вид деятельности, переходя к последним событиям. Я попытался решить эту проблему, остановив службу при вызове onDestroy (). Однако это также останавливает музыкальный сервис при нажатии кнопки назад. Я проверил оба случая в Musixmatch, и он останавливается, если вы закрываете приложение от последних, но не останавливается, когда вы нажимаете кнопку «Назад» в приложении, хотя я вижу, что основное действие создается снова при повторном запуске приложения. Так как же добиться того же в моем приложении?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

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

В основном предлагает остановить службу при вызове public void onTaskRemoved(Intent rootIntent).

1). В свой манифест добавьте атрибут stopWithTask, в котором вы определите свой сервис:

<service
    android:enabled="true"
    android:name=".YourService"
    android:exported="false"
    android:stopWithTask="true" />

2). Если вышеупомянутый подход делает работу тогда, делает реверс

<service
    android:enabled="true"
    android:name=".MyService"
    android:exported="false"
    android:stopWithTask="false" />  //change to false

Таким образом, будет вызван метод вашего сервиса onTaskRemoved. (Помните, что он не будет вызываться, если вы установите для stopWithTask значение true).

public class YourService extends Service {

    @Override
    public void onStartService() {
        //your code
    }

    @Override
    public void onTaskRemoved(Intent rootIntent) {
        System.out.println("onTaskRemoved called");
        super.onTaskRemoved(rootIntent);
        //do something you want
        //stop service
        this.stopSelf();
    }
}
0 голосов
/ 07 сентября 2018

У меня есть пример звукового проекта для Android - когда я захожу в «Недавние» и «закрываю все», мой звук останавливается. А используя goBack - вы можете сделать паузу, но если вы этого не сделаете, она продолжит играть.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_audio);
    mediaPlayer = MediaPlayer.create(this,R.raw.oldcar);
    mediaPlayer.start();
}

public void goBack(View view){
    //mediaPlayer.pause();
    Log.i("info","ending audio activity");
    finish();
}
...