Java 触发Google Assistant命令时,如何获取回调?
我有一个Android cordova应用程序,它启用了Exoplayer媒体会话,在使用谷歌助手在AndroidTV上搜索后,播放器没有恢复 因此,我尝试将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
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);