Android Widget: кнопки skip_to_next и skip_to_previous не работают

В настоящее время я пытаюсь разработать виджет для аудио приложения. Виджет включает в себя переход к предыдущему, воспроизведение и кнопку перехода к следующему, как на картинке ниже.

Я придерживался этого рекомендуемого подхода, и кнопка play_pause работает правильно, но пока только если воспроизведение началось.

Для начала воспроизведения пользователь должен 1) Открыть приложение. 2) Выберите подкаст. 3) Выберите эпизод для игры. 4) Дождитесь завершения буферизации

Просто установив правильный PendingIntent для кнопки play_pause, все заработало. Поэтому, когда эта кнопка нажата, мой MediaSession.Callback.onPlay() метод называется.

К сожалению, дело обстоит не так с кнопками skip_to_next и skip_to_previous. Я хочу, чтобы при нажатии кнопки виджета skip_to_next MediaSession.Callback.onSkipToNext() быть названным.

Вот мой класс AppWidgetProvider, а также MediaBrowserService.

1 ответ

Решение

Я не уверен, что это полное решение, но кажется, что предыдущая и следующая кнопки не были зарегистрированы? Я до сих пор не использовал MediaButtonReceiver, так что я догадываюсь, но я добавил ACTION_SKIP_TO_PREVIOUS в getPlaybackStateFromPlayerState в PlayBackUtils, теперь код получает предыдущее событие и фактически меняется на предыдущий трек.

        case STARTED:
            return stateBuilder.setState(PlaybackStateCompat.STATE_PLAYING, currentPosition, playbackSpeed)
                    .setActions(PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
                            | PlaybackStateCompat.ACTION_STOP | PlaybackStateCompat.ACTION_SEEK_TO
                            | PlaybackStateCompat.ACTION_PLAY)
                    .build();
Другие вопросы по тегам