Я использую следующее: Установите будильник, который воспроизводит несколько песен в фиксированное время. Я зарегистрировал тревогу и создал 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);
}
});