Как получить обратный вызов при запуске команды Google Assistant? - PullRequest
1 голос
/ 03 апреля 2020

У меня есть приложение Android cordova, в котором включен Exoplayer Media Session, плеер не возобновляет работу после поиска на AndroidTV с помощью Google Assistant.

Поэтому я попытался сохранить playWhenReady на dispatchSetPlayWhenReady (который вызывается при открытии Google Assistant) в локальном свойстве wasPlaying, чтобы проверить, должно ли оно возобновиться после поиска (если оно воспроизводилось раньше).

private class MyControlDispatcher implements ControlDispatcher {

        private boolean wasPlaying = false;

        @Override
        public boolean dispatchSetPlayWhenReady(Player player, boolean playWhenReady) {
            this.wasPlaying = player.getPlayWhenReady();
            player.setPlayWhenReady(playWhenReady);
            return true;
        }

        @Override
        public boolean dispatchSeekTo(Player player, int windowIndex, long positionMs) {
            if (this.wasPlaying) {
                player.setPlayWhenReady(true);
            }

            player.seekTo(windowIndex, positionMs);
            return true;
        }

        ...

    }
MyControlDispatcher myControlDispatcher = new MyControlDispatcher();
MediaSessionConnector mediaSessionConnector = new MediaSessionConnector(mediaSession);
mediaSessionConnector.setControlDispatcher(myControlDispatcher);

Это решило Первоначальная проблема, но затем у меня есть проблема, когда пользователь делает паузу, а затем ищет, оба с помощью Google Assistant. Он сохранит wasPlaying как true, когда пользователь вызовет команду PAUSE (на dispatchSetPlayWhenReady, когда помощник открыт), и возобновит поиск после того, как это не следует.

Так что в принципе мне нужно как-то получить обратный вызов команды PAUSE от помощника Google, чтобы я мог отличить его от dispatchSetPlayWhenReady, который вызывается при открытии помощника. И убедитесь, что wasPlaying установлен на false, когда пользователь вызывает команду PAUSE, и предотвратите его возобновление после поиска.

...