私は音楽プレーヤーに取り組んでいます
ロジックは次のようなものです。まず、再生ボタンをクリックし、音楽が再生されている場合はサービスを停止し、そうでない場合はサービスを開始します。
再生/一時停止ボタン:
playM.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AudioManager manager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);
if (!manager.isMusicActive()) {
playM.setText("Pause");
Intent svc=new Intent(getContext(), Music.class);
svc.putExtra("uri", tt1.getText().toString());
getContext().startService(svc);
} else {
playM.setText("Play");
//if (mPlayer != null && mPlayer.isPlaying()) {
Intent svc=new Intent(getContext(), Music.class);
getContext().stopService(svc);
//}
}
}
});
サービス:
public int onStartCommand(Intent intent, int flags, int startId) {
path = (String) intent.getExtras().get("uri");
Uri uriMusic = Uri.parse(path);
player = MediaPlayer.create(this, uriMusic);
player.start();
player.setLooping(true); // Set looping
return 1;
}
@Override
public void onDestroy() {
player.stop();
player.release();
}
問題は、音楽が別のアプリで再生されている場合、音楽プレーヤーがクラッシュすることです。しかし、サービスの状態を追跡する方法が見つかりません。たとえば、音楽を再生してアプリを閉じると、音楽はまだ再生されていますが、アプリを再度開いたときに、特定のサービスを知る方法 (この場合、自分のアプリでのみ起動される音楽を再生する) が実行されています。 ? ありがとう