Android Media Player остановлен ОС - PullRequest
0 голосов
/ 29 марта 2020

Я использую следующее: Установите будильник, который воспроизводит несколько песен в фиксированное время. Я зарегистрировал тревогу и создал Broadcast Manager. Будильник срабатывает в нужное время. Затем я запускаю экземпляр медиаплеера. Проблема в том, что ОС убивает и песня перестает играть примерно через 2-3 минуты. Вот подробный код метода onReceive.

public void onReceive(final Context context, Intent intent) {
    Log.d(TAG, "Receving signal!!");

    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    final PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);
    //Acquire the lock
    wl.acquire();

    //filePaths is an array which contains the list of songs.
    final String[] filePathArray = filePaths.toArray(new String[0]);
    int randomIndex = (int)(Math.random() * filePathArray.length);
    mediaPlayer = MediaPlayer.create(context, Uri.fromFile(new File(filePathArray[randomIndex])));
    mediaPlayer.start();
    Log.d(TAG, "Sucessfully started media player !!");

    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        int songCount = 0;
        @Override
        public void onCompletion(MediaPlayer mp) {
            songCount++;
            if(songCount < maxSongCount){
                int randomIndex = (int)(Math.random() * filePathArray.length);
                mediaPlayer.release();
                mediaPlayer = MediaPlayer.create(context, Uri.fromFile(new File(filePathArray[randomIndex])));
                mediaPlayer.start();
            }
            else {
                mediaPlayer.stop();
                mediaPlayer.release();
                wl.release();
            }
            Log.d(TAG, "Song count = "+songCount);
        }
    });
...