アプリケーション (音楽プレーヤー) 用の音楽サービスを作成しました。いくつかのテストを行った後、解決方法がわからないため、頭痛の種となる動作を観察しています。
テスト目的で、サービスを変更して、サービスが開始されるとすぐに、SD カードから特定の mp3 ファイルを再生するようにしました。また、最初のアクティビティが開始され、サービスが開始されてから「finish()」が呼び出されるように、アプリケーションを変更しました。
わかりました... アプリケーションを起動すると、最初のアクティビティが開始され、サービスが起動して音楽が再生され、アクティビティが終了してアプリケーションが閉じられ、... 音楽が停止し、数秒後にサービスが再開されます (私は START_STICKY フラグを使用しているので、それは正常だと思います)。
アプリケーションを閉じたときに音楽が停止したくない、つまり、アプリケーションを閉じたときにサービスが停止されたくない (停止されたためにサービスが再開されたくない) ということです。
現在、音楽サービスを制御するために、サービスを開始してバインドし、インターフェイスで定義したサービス関数を呼び出せるようにします。
何か案は?
ありがとう!
編集:
これは、私のアプリケーションとサービスが (私が行っているテストで) 行うことの例です。
アクティビティ:
public class FirstActivity extends SherlockFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startService(new Intent(this, MyService.class));
...
// Here is a postDelayed that will run after 2 seconds and call finish()
}
}
サービス:
public class MyService extends Service {
private MediaPlayer mPlayer;
@Override
public void onCreate() {
mPlayer = new MusicPlayer(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Here is the code that plays the music using MediaPlayer
return START_STICKY;
}
}