[英]How can I get the callback when Google Assistant command is triggered?
我有一个启用了 Exoplayer Media Session 的 Android cordova 应用程序,播放器在使用 Google 助理在 AndroidTV 上搜索后没有恢复。
因此,我尝试将playWhenReady
保存在本地属性wasPlaying
中的dispatchSetPlayWhenReady
(打开 Google Assistant 时调用)上,以检查它是否应该在搜索后恢复(如果之前播放过)。
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。 当用户调用PAUSE
命令(打开助手时在dispatchSetPlayWhenReady
上)时,它会将wasPlaying
保存为true
,并在不应该搜索时恢复。
所以基本上我需要以某种方式从谷歌助手获取PAUSE
命令回调,以便我可以区分打开助手时调用的dispatchSetPlayWhenReady
。 并保证当用户调用PAUSE
命令时将wasPlaying
设置为false
并防止其在搜索后恢复。
我想你可能会处理这些 MediaSessionCompat 的回调:
mMediaSessionCompat.setCallback(new MediaSessionCompat.Callback() {
@Override
public void onPrepare() {
super.onPrepare();
}
@Override
public void onPrepareFromSearch(String query, Bundle extras) {
super.onPrepareFromSearch(query, extras);
}
@Override
public void onPrepareFromMediaId(String mediaId, Bundle extras) {
super.onPrepareFromMediaId(mediaId, extras);d
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.