アプリが停止しているときにヘッドセットのボタンをクリックすると、アプリから音楽の再生を開始できるようにしようとしています。
MediaSession.CallbackonMediaButtonEvent()
または現在廃止されているを使用して、アプリが音楽を再生しているときregisterMediaButtonEventReceiver()
にメディア ボタンのクリックをリッスンできますが、アクティビティと再生サービスを実行したまま音楽を 1 分間一時停止してからヘッドセット ボタンを押すと、メディア ボタン ブロードキャストを受信できなくなっていることがわかりました。代わりに、Google Now が開きます。
私がやろうとしているのは、Google Play Music のようなものです。アプリが完全に停止していても、音楽の再生を開始できます...バックグラウンドでサービスがありません。
これにはsetMediaButtonReceiver()を使用すると思いますが、動作させることができませんでした。
setMediaButtonReceiver(PendingIntent mbr)
メディア ボタン レシーバーの保留中のインテントを設定して、セッションが停止した後に再生を再開できるようにします。アプリがこの方法で開始された場合、ACTION_MEDIA_BUTTON インテントが保留中のインテントを介して送信されます。
サービスに次のスニペットがあります。
PendingIntent pi = PendingIntent.getBroadcast(HeadsetService.this, 0, new Intent(HeadsetService.this, RemoteControlReceiver.class), 0);
mMediaSession.setMediaButtonReceiver(pi);
私の RemoteControlReceiver BroadcastReceiver はマニフェストに登録されていますが、ボタンを押してもブロードキャストを受信しません。
また、他の音楽プレーヤー アプリでは、再生を約 1 分間停止すると、メディア ボタンのブロードキャストを受信できなくなることも確認しています。
より堅牢なメディア ボタン コントロールを使用する方法はありますか?
前もって感謝します!