Android MediaPlayerクラスを使用して、実行中のServiceクラスからmp3ファイルを再生しています。ユーザーが5つのアクティビティのいずれかを表示しなくなった場合に、音楽プレーヤーの再生を停止したかったのです。
ここのコードを使用して、MediaPlayerを保持するサービスにブロードキャストインテントを送信してみました。そうすれば、サービス内のブロードキャストレシーバーがこのインテントを受信すると、player.pause()メソッドを呼び出して、音楽の再生を停止します。
しかし、それは機能していません。アクティビティの1つを表示しながらプレーヤーを起動し、次にアプリケーションを終了して、Androidカレンダーアプリなどの他のアプリを表示しました。音楽は止まらず、再生を続けます。
この問題を解決する方法について何かアイデアはありますか?
public class Monitor extends Application {
@Override
public void onCreate(){
super.onCreate();
if(activityVisible==false){
Intent intent = new Intent();
intent.setAction("com.sample.test");
sendBroadcast(intent);
}
}
public static boolean isActivityVisible() {
return activityVisible;
}
public static void activityResumed() {
activityVisible = true;
}
public static void activityPaused() {
activityVisible = false;
}
private static boolean activityVisible;
}
そして、これが私が他の5つの活動のそれぞれに入れたものです。
@Override
protected void onResume() {
super.onResume();
Monitior.activityResumed();
}
@Override
protected void onPause() {
super.onPause();
Monitor.activityPaused();
}