BGM付きのゲームアプリを作っています。アクティビティを変えながらBGMを流したかったので、Android Serviceを使ってBGMを流しました。私の問題は、各アクティビティの onPause メソッドで finish() を宣言したことです (ユーザーに戻ってアクティビティを強制終了させたくない)。
そのため、他のアクティビティを意図すると、onDestroy が呼び出されてサービスが停止します。サービスを正確に停止したい (ホームボタンを押す) アプリを終了し、onPause() で BGM と finish() を使用してアクティビティを実行したい。これは可能ですか? または別の解決策がありますか?
public class BackgroundMusicService extends Service {
private static final String TAG = null;
MediaPlayer player;
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
player = MediaPlayer.create(this, R.raw.topbgm);
player.setLooping(true); // Set looping
player.setVolume(100, 100);
}
public int onStartCommand(Intent intent, int flags, int startId) {
player.start();
return 1;
}
public void onStart(Intent intent, int startId) {
// TO DO
}
public IBinder onUnBind(Intent arg0) {
// TO DO Auto-generated method
return null;
}
public void onStop() {
}
public void onPause() {
}
@Override
public void onDestroy() {
player.stop();
player.release();
Log.i("service", "service killed");
}
@Override
public void onLowMemory() {
}
}
マニフェストで
<service android:name=".BackgroundMusicService" android:process=":remote" />