Есть ли способ уведомить, когда автомобильный плеер выключен с помощью Media-Button в Android?
Я занимаюсь разработкой музыкального плеера и пытаюсь управлять плеером через 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();
Я ожидаю, что этот метод предупредит игрока об отключении автомобиля, но это не