class OnCompletionListener implements android.media.MediaPlayer.OnCompletionListener {
@Override
public void onCompletion(MediaPlayer mp) {
Log.i("mp3", "服务执行了OnCompletionListener方法");
statethreadFlag = true;
mp.stop();
if (currIndex >= (list.size() - 1)) {
Toast.makeText(getApplicationContext(), "歌曲全部播放完毕", Toast.LENGTH_LONG).show();
} else {
currIndex++;
start();
}
}
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.i("mp3", "服务执行了onstartcommand方法");
player = new MediaPlayer();
bundle = intent.getBundleExtra("sendListToService");
list = (ArrayList<HashMap<String, String>>) bundle.getSerializable("arraylist");
currIndex = bundle.getInt("currIndex");
start();
player.setOnCompletionListener(new OnCompletionListener());
return super.onStartCommand(intent, flags, startId);
}
public void start() {
Log.i("mp3", "服务执行了start方法,开始播放歌曲");
if (bundle.getBoolean("flag")) {
hMap = list.get(currIndex);
player.reset();
try {
player.setDataSource(hMap.get("path"));
player.prepare();
// Log.i("mp3", "播放器准备完毕");
} catch (Exception e) {
e.printStackTrace();
}
player.start();
serviceFlag = 1;
statethreadFlag = false;
new Thread(new StateThread()) {
}.start();
} else {
}
}
播放器是写在服务中的,想让播放器在放完一首歌后自动播放下一曲,可是有时候会重复一首或者跳一首和两首歌。找了半天也不知道哪里出了问题。