在Android 2.3.3的睡眠/待机模式下播放音乐



我正在尝试开发一个简单的媒体播放器,用于播放Android 2.3.3的SD卡/音乐目录的mp3。问题是,当我按下电源按钮或设备进入睡眠状态时,音乐就会停止。通过谷歌搜索和stackoverflow,我发现我需要使用唤醒锁定选项,但无论我做什么,当设备进入睡眠状态时,音乐都会停止(在模拟器上按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));

我认为您应该使用服务在后台运行媒体所以你创建了一个服务,把你的媒体代码放在里面,然后把它连接到启动和停止按钮上,也许是这样的:

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停止该服务

最新更新