Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 触发Google Assistant命令时,如何获取回调?_Java_Android_Exoplayer_Android Tv_Google Assistant Sdk - Fatal编程技术网

Java 触发Google Assistant命令时,如何获取回调?

Java 触发Google Assistant命令时,如何获取回调?,java,android,exoplayer,android-tv,google-assistant-sdk,Java,Android,Exoplayer,Android Tv,Google Assistant Sdk,我有一个Android cordova应用程序,它启用了Exoplayer媒体会话,在使用谷歌助手在AndroidTV上搜索后,播放器没有恢复 因此,我尝试将playwhenrady保存在本地属性wasPlaying中的dispatchsetplaywhenrady(打开Google助手时调用)上,以检查它是否应该在搜索后恢复(如果之前正在播放) 这解决了最初的问题,但当用户暂停然后搜索时,我遇到了一个问题,都是使用谷歌助手。当用户调用PAUSE命令时(打开助手时在dispatchSetPlay

我有一个Android cordova应用程序,它启用了Exoplayer媒体会话,在使用谷歌助手在AndroidTV上搜索后,播放器没有恢复

因此,我尝试将
playwhenrady
保存在本地属性
wasPlaying
中的
dispatchsetplaywhenrady
(打开Google助手时调用)上,以检查它是否应该在搜索后恢复(如果之前正在播放)

这解决了最初的问题,但当用户暂停然后搜索时,我遇到了一个问题,都是使用谷歌助手。当用户调用
PAUSE
命令时(打开助手时在
dispatchSetPlayWhenReady
上),它将
wasPlaying
另存为
true
,并在不应该的时候搜索后恢复

因此,基本上我需要从google assistant获得
PAUSE
命令回调,以便与打开assistant时调用的
dispatchSetPlayWhenReady
有所区别。并确保在用户调用
PAUSE
命令时将
wasPlaying
设置为
false
,并防止其在搜索后恢复

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