Activity 中直接創建 MediaPlayer,旋轉屏幕導致 Activity 重建,音樂重播或停止。
public class PlaybackService extends Service {
private MediaPlayer mediaPlayer;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String path = intent.getStringExtra("path");
if (mediaPlayer == null) {
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(path);
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) { e.printStackTrace(); }
}
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) { return null; }
@Override
public void onDestroy() {
if (mediaPlayer != null) mediaPlayer.release();
super.onDestroy();
}
}
// 啟動播放
Intent svc = new Intent(this, PlaybackService.class);
svc.putExtra("path", filePath);
startService(svc);
// 停止播放
stopService(new Intent(this, PlaybackService.class));
<service android:name=".PlaybackService" />
MediaSessionCompat 實現標準媒體控制界面。