[英]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.