我正在开发的Android TV(ATV)应用程序具有语音控制功能。基本上,当用户按下遥控器上的麦克风按钮时,关键事件(由KeyEvent.KEYCODE_SEARCH
标识)由app处理,语音识别开始(使用android.speech.SpeechRecognizer
),结果(解析语音)由app逻辑获取并进一步解析(例如,显示用户搜索结果或执行一些应用内操作)。
一切都按照预期和上述方式进行,直到最近,Google助理(GA)被引入ATV平台(第一个是Nvidia Shield盒子)。现在,当按下RCU麦克风按钮时,会出现GA叠加层,麦克风键事件甚至无法到达应用程序。
在过去的几天里,我做了一些广泛的研究(文档,互联网,论坛,堆栈溢出等)并尝试了一些潜在的解决方法,但到目前为止还没有任何工作,我无法找到任何明确的信息关于这个话题(可能是由于ATV + GA组合在现场很新,而且ATV生态系统没有Android那么大)。
到目前为止,我得到的最好的提示是使用Spotify app for Android TV做了什么。当它在没有GA的ATV设备上运行时,它基本上如上所述;但是当GA出现时,GA叠加层出现,接收解析后的语音并显示搜索结果,Spotify的结果显示在第一行 - 因此,Spotify应用程序与GA集成,此集成取代了应用内语音控制机制。这表明无法忽略/禁用应用内的GA以接收麦克风键事件并像往常一样继续进行语音控制,或者至少这是现在处理语音命令的首选方式。它还表明ATV的应用程序以我描述的方式接近语音控制,所以也许有人在这里遇到过类似的问题。
我的问题:
答案 0 :(得分:0)
从上一个问题开始:
如果没有,是否有资源记录如何与GA集成(Spotify for ATV app的方式)?
我写了关于如何整合Android Developer's Blog的文章。 Spotify有onboarded their content catalog to Google's services这就是为什么Google智能助理能够很好地运作的原因。如果您可以搜索应用程序(在博客中介绍),您可以获得类似的结果。
是否可以阻止Google智能助理接管RCU麦克风按键信号?
不,不是在这个时候。 Google智能助理是一款系统应用,可控制麦克风,为所有应用提供统一的体验。
这样做可以吗? (通过"不好"我的意思是 - 是否有任何官方指导方针阻止此类行为 - 或者至少是否有正当理由不这样做?)
如果是的话,可以吗?
您仍然可以获得in-app search经验。 leanback样本中有一个例子。您需要set a listener on a BrowseFragment并实施SearchFragment。我们知道这可能令人困惑,有应用内搜索和Google智能助理搜索竞争,但我们正在努力改进这一点。