Есть ли способ уведомить, когда автомобильный плеер выключен с помощью Media-Button в Android? - PullRequest
0 голосов
/ 19 мая 2019

Я занимаюсь разработкой музыкального плеера и пытаюсь управлять плеером через Bluetooth в автомобиле, но я не мог определить, когда автомобильный плеер выключен. Приемник MEDIA_BUTTON контролирует события.

Я пытался обнаружить это действие с помощью действия отключения Bluetooth, но когда автомобиль включен и автомобильный проигрыватель выключен, Bluetooth не отключается.

в Манифесте:

  <receiver android:name=".broadcast.RemoteControlReceiver">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON" />
            </intent-filter>
        </receiver>

в MusicPlayerService (создается):

mAudioManager.registerMediaButtonEventReceiver(
                    mRemoteControlResponder);

в MusicPlayerService (создается):

mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        mRemoteControlResponder = new ComponentName(getPackageName(),
                RemoteControlReceiver.class.getName());

Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON);
    i.setComponent(mRemoteControlResponder);
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
    mRemoteControlClient = new RemoteControlClient(pi);
    mAudioManager.registerRemoteControlClient(mRemoteControlClient);

    int flags = RemoteControlClient.FLAG_KEY_MEDIA_PREVIOUS
            | RemoteControlClient.FLAG_KEY_MEDIA_NEXT
            | RemoteControlClient.FLAG_KEY_MEDIA_PLAY
            | RemoteControlClient.FLAG_KEY_MEDIA_PAUSE
            | RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE
            | RemoteControlClient.FLAG_KEY_MEDIA_STOP
            | RemoteControlClient.FLAG_KEY_MEDIA_FAST_FORWARD
            | RemoteControlClient.FLAG_KEY_MEDIA_REWIND


            | RemoteControlClient.FLAG_KEY_MEDIA_POSITION_UPDATE
            | RemoteControlClient.FLAG_KEY_MEDIA_RATING

            | RemoteControlClient.PLAYSTATE_BUFFERING
            | RemoteControlClient.PLAYSTATE_ERROR
            | RemoteControlClient.PLAYSTATE_FAST_FORWARDING
            | RemoteControlClient.PLAYSTATE_PAUSED
            | RemoteControlClient.PLAYSTATE_PLAYING
            | RemoteControlClient.PLAYSTATE_REWINDING
            | RemoteControlClient.PLAYSTATE_SKIPPING_BACKWARDS
            | RemoteControlClient.PLAYSTATE_SKIPPING_FORWARDS
            | RemoteControlClient.PLAYSTATE_STOPPED;

    mRemoteControlClient.setTransportControlFlags(flags);

в MusicPlayerService (onTracksChanged):

 RemoteControlClient.MetadataEditor ed = mRemoteControlClient.editMetadata(true);
    ed.putString(MediaMetadataRetriever.METADATA_KEY_TITLE, songNamesMap.get(currentPos));
    ed.putString(MediaMetadataRetriever.METADATA_KEY_ALBUM, albumNamesMap.get(currentPos));
    ed.putString(MediaMetadataRetriever.METADATA_KEY_ARTIST, artistName);
    ed.apply();

Я ожидаю, что этот метод выдаст предупреждение об отключении проигрывателя автомобиля, но это не так

...