Воспроизведение музыки в режиме сна / ожидания в Android 2.3.3
Я пытаюсь разработать простой медиаплеер для воспроизведения mp3-файлов из каталога sdcard/music для Android 2.3.3. Проблема в том, что когда я нажимаю кнопку питания или когда устройство переходит в спящий режим, музыка останавливается. В результате поиска в Google и поиска в стеке, я обнаружил, что мне нужно использовать параметры блокировки пробуждения, но что бы я ни делал, музыка останавливается, когда устройство переходит в спящий режим (нажатие клавиши F7 на эмуляторе также останавливает музыку). Поскольку я боролся с этим слишком долго, я подумал, что буду просить о помощи. Я был бы искренне признателен за любой вклад. Благодарю. Вот мой код:
FileInputStream fis = new FileInputStream(songList.get(0));
FileDescriptor fd = fis.getFD();
if (mediaPlayer != null) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.release();
mediaPlayer = null;
}
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mediaPlayer.setDataSource(fd);
mediaPlayer.prepare();
playPauseButton.setImageResource(android.R.drawable.ic_media_pause);
mediaPlayer.seekTo(songPosition);
mediaPlayer.start();
appMsg.setText(songList.get(0));
1 ответ
Я думаю, что вы должны запускать мультимедиа в фоновом режиме с помощью сервисов. Итак, вы создаете сервис, вставляете в него медиакод и прикрепляете его к кнопкам запуска и остановки, что-то вроде этого:
public class MediaPlayerService extends Service {
MediaPlayer myMediaPlayer;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
FileInputStream fis = new FileInputStream(songList.get(0));
FileDescriptor fd = fis.getFD();
if (mediaPlayer != null) {
if (mediaPlayer.isPlaying()) {
mediaPlayer.release();
mediaPlayer = null;
}
}
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(fd);
mediaPlayer.prepare();
playPauseButton.setImageResource(android.R.drawable.ic_media_pause);
mediaPlayer.seekTo(songPosition);
appMsg.setText(songList.get(0));
}
@Override
public void onStart(Intent intent, int startid) {
myMediaPlayer.start();
}
@Override
public void onDestroy() {
myMediaPlayer.stop();
}
}
После этого вы запускаете эту службу, когда кнопка запуска нажата с помощью методаstartService
и прекратить это с помощью метода stopService
в вашем классе деятельности