RemoteControlClient в службе, не показывает виджет

#android #lockscreen #remote-control

#Android #экран блокировки #пульт дистанционного управления

Вопрос:

У меня есть служба медиаплеера с пользовательскими декодерами для воспроизведения потоков. Я перепробовал все, что смог найти в Интернете для регистрации кнопок управления мультимедиа на экране, но они не отображаются.

Служба работает следующим образом:

  1. В 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);
      
  2. Когда служба получила сообщение о воспроизведении, я запускаю песню и вызываю следующий код для кнопок экрана блокировки:

     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);
    }
      

У меня также зарегистрирован прослушиватель смены фокуса, но он бесполезен. Можете ли вы помочь мне подключить мое приложение к кнопкам виджета?