#android #lockscreen #remote-control
#Android #экран блокировки #пульт дистанционного управления
Вопрос:
У меня есть служба медиаплеера с пользовательскими декодерами для воспроизведения потоков. Я перепробовал все, что смог найти в Интернете для регистрации кнопок управления мультимедиа на экране, но они не отображаются.
Служба работает следующим образом:
-
В
onCreate()
я сделал следующее:audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); Intent buttonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); ComponentName component = new ComponentName(this, MediaControlReceiver.class); buttonIntent.setComponent(component); PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, buttonIntent, 0); myRemoteControlClient = new RemoteControlClient(pendingIntent); audioManager.registerRemoteControlClient(myRemoteControlClient); 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; myRemoteControlClient.setTransportControlFlags(flags);
-
Когда служба получила сообщение о воспроизведении, я запускаю песню и вызываю следующий код для кнопок экрана блокировки:
int result = audioManager.requestAudioFocus(focusChangeListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { Log.d("RemoteControl", "Status: PLAY" result); myRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_PLAYING); setRemoteControlMetadata(null, "test", "test", 1); }
У меня также зарегистрирован прослушиватель смены фокуса, но он бесполезен. Можете ли вы помочь мне подключить мое приложение к кнопкам виджета?