私は現在、ストリーミング Android アプリを構築しており、リモート コントロール クライアントを統合しようとしています (たとえば、ICS+ のロック画面からコントロールできるようにするため)。
そのために、ストリーミング サービスの起動時に次のようにしています。
    int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
    if (result != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        stopSelf();
    }
    mediaButtonReceiverComponent = new ComponentName(this, RemoteControlReceiver.class);
    audioManager.registerMediaButtonEventReceiver(mediaButtonReceiverComponent);
    if (remoteControlClientCompat == null) {
        final Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
        mediaButtonIntent.setComponent(mediaButtonReceiverComponent);
        remoteControlClientCompat = new RemoteControlClientCompat(
                PendingIntent.getBroadcast(
                        getApplicationContext(),
                        0,
                        mediaButtonIntent,
                        PendingIntent.FLAG_UPDATE_CURRENT
                )
        );
        RemoteControlHelper.registerRemoteControlClient(audioManager, remoteControlClientCompat);
    }
    final int flags = RemoteControlClient.FLAG_KEY_MEDIA_STOP;
    remoteControlClientCompat.setTransportControlFlags(flags);
remoteControlClientCompatサンプルからのRemoteControlClientCompatの単なるインスタンスです。
その後、ストリーミング中にメタデータを更新しています。コントロールが my に送信されても、すべてが正常に機能していRemoteControlReceiverます。ロック画面にデータと画像がきれいに表示されます。
アプリからのストリーミングを停止するとロック画面が破棄されますが、ウィジェット自体から (停止ボタンを押して) 破棄しようとすると、奇妙なことが起こります。停止ボタンを押すと、放送受信機がストリーミング サービスを停止します。次に、サービスの onDestroy() メソッドで、次のようにしています。
    RemoteControlHelper.unregisterRemoteControlClient(audioManager, remoteControlClientCompat);
    audioManager.unregisterMediaButtonEventReceiver(mediaButtonReceiverComponent);
    audioManager.abandonAudioFocus(this);
audioManager.unregisterMediaButtonEventReceiver(mediaButtonReceiverComponent);呼び出されるとすぐにウィジェットが点滅します。行にコメントを付けてみましたが、点滅はaudioManager.abandonAudioFocus(this);. 他の行にコメントすると、サービスが停止したときにも点滅します。
通知からストリーミングを停止しているときにも、これが発生することに気付きました。
私は何を間違っていますか?この呼び出しの順序を変更しようとしましたが、解決できませんでした。Spotify が数バージョン前にまったく同じ問題を抱えていたことに気付きました。どうやって解決したのか気になる…