- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发的 Android TV (ATV) 应用具有语音控制功能。基本上,当用户按下 Remote 上的麦克风按钮时,按键事件(由 KeyEvent.KEYCODE_SEARCH
标识)由应用处理,语音识别开始(使用 android.speech.SpeechRecognizer
),结果(已解析的语音)由应用逻辑获取并进一步解析(例如,显示用户搜索结果或执行某些应用内操作)。
一切都按预期和上述描述进行,直到最近,Google Assistant (GA) 被引入 ATV 平台(第一个是 Nvidia Shield box)。现在,当按下 RCU 麦克风按钮时,会出现 GA 叠加层,并且麦克风键事件甚至不会到达应用程序。
在过去的几天里,我做了一些广泛的研究(文档、互联网、论坛、stackoverflow 等)并尝试了一些潜在的解决方法,但到目前为止没有任何效果,而且我无法找到有关该主题的任何明确信息(可能是因为 ATV+GA 组合在现场相当新,而且 ATV 生态系统不像 Android 生态系统那么大)。
到目前为止,我得到的最好提示是 Spotify app for Android TV 所做的事情。 。当它在没有 GA 的 ATV 设备上运行时,它的行为基本上与我上面描述的一样;但是当 GA 存在时,GA 覆盖层就会出现,接收解析后的语音并显示搜索结果,其中来自 Spotify 的结果位于第一行 - 因此,Spotify 应用程序与 GA 集成,并且这种集成取代了应用程序内的语音控制机制。这表明要么无法在应用程序内忽略/禁用 GA 以便接收麦克风按键事件并像往常一样继续进行语音控制,或者至少这是现在处理语音命令的首选方式。它还表明有一些 ATV 应用程序可以按照我描述的方式进行语音控制,所以也许这里有人已经遇到了类似的问题。
我的问题:
最佳答案
从你的最后一个问题开始:
if not, is there a resource documenting how to integrate with GA (the way Spotify for ATV app does)?
我在 Android Developer's Blog 上写了有关如何集成的文章。 Spotify 有 onboarded their content catalog to Google's services这就是为什么 Google Assistant 能够如此出色地工作。如果您使您的应用程序可搜索(在博客中介绍),您可以获得类似的结果。
is it possible to prevent Google Assistant from taking over RCU mic button signal?
不,现在不行。 Google 助理是一款系统应用,可以控制麦克风,为所有应用提供统一的体验。
is it ok to do so? (by "not ok" I would mean - are there any official guidelines that discourage such behavior - or at least are there valid reasons not to do so?)
if so, can it be done?
您仍然可以拥有 in-app search经验。 Leanback 示例中有一个示例。您需要set a listener on a BrowseFragment并实现 SearchFragment 。我们知道这可能会令人困惑,应用内搜索和 Google 助理搜索存在竞争,但我们正在研究如何改进这一点。
关于java - 是否可以阻止 Google Assistant 接管 Android TV 应用中的 RCU 麦克风按钮信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47314128/
Read-Copy-Update (RCU) 是一种手动内存管理技术,在 Linux 内核中越来越流行。 是否可以设计一种使用 RCU 而不是传统垃圾收集器来回收无法访问的内存的语言和 VM? 最佳答
我有许多读取器线程读取缓存数据,例如 struct { hash_table *cache; int64_t version; } ctx; 许多读取器线程读取缓存,例如 void *ge
你好, 我是 linux 内核中 rcu 锁定机制的新手。 在尝试了解 rcu 的工作原理和提供的 API 时,我看到 rcu_read_lock()、rcu_synchronize() 不采用任何锁
我有一个样板函数,可以在树状数据库中找到一个结构: struct foo { struct foo *child1; /* RCU-protected. */ struct foo *
(来自 LWN 上的一篇文章) 1 rcu_read_lock(); 2 list_for_each_entry_rcu(p, head, list) { 3 do_something_wi
我正在阅读 Read-copy-update (RCU) .对于 SMP,我不确定我是否理解正确。据我所知,RCU 确保更新以原子方式执行。在单链表的例子中,很明显可以在一个操作中完成用新元素交换旧元
在做教程时,我将数据批量加载到我的 dynamoDB JobsApplication 表中,其中包含大约 400 个随机职位发布。 使用 Node.js 和 aws-sdk 我执行了扫描操作。 var
任务 我有一个我为我的 RaspBerry Pi 2 编写的小内核模块,它实现了一个额外的系统调用来生成功耗指标。我想修改系统调用,以便只有在特殊用户(例如“root”或用户“pi”)发出时才会调用它
看了很多文章,还是搞不懂WCU和RCU是什么意思。 Dynamo 提供以下免费套餐: 25 个预置写入容量单元 (WCU) 25 个预置读取容量单元 (RCU) “每秒 25 次读写”是什么意思?我有
看了很多文章,还是搞不懂WCU和RCU是什么意思。 Dynamo 提供以下免费套餐: 25 个预置写入容量单元 (WCU) 25 个预置读取容量单元 (RCU) “每秒 25 次读写”是什么意思?我有
我已经安装了 OBIEE12c(12.2.1.4)。 OBIEE12c 认证矩阵表示 RCU 创建实用程序支持 oracle 数据库 19c。但是,当我运行 RCU 创建实用程序时,它无法满足先决条件
我试图了解一些内核同步机制(顺序锁、RCU(读取-复制-更新)和每 CPU 锁)的不同用例,建议用于编写您的设备驱动程序或内核模块。任何示例将不胜感激。 最佳答案 顺序锁 这是一种巧妙的锁定方法,写入
我想知道 nf_conntrack_find_get() 在 linux 内核中是否真的通过 RCU 保护了 ct 指针。 Read-Copy-Update(RCU) 可以在节点更新时保护访问(读取)
我正在开发的 Android TV (ATV) 应用具有语音控制功能。基本上,当用户按下 Remote 上的麦克风按钮时,按键事件(由 KeyEvent.KEYCODE_SEARCH 标识)由应用处理
我正在使用 AWS 免费套餐,并且我有 5 个 DynamoDB 表,每个表具有 5 个读/写容量,尽管我不确定是否需要 5 个 - 我只是将它们用于简单的 Lambda 函数,并且绝对没有太多的写入
在 Windows 10 机器上安装 Oracle Data Integrator (ODI) 12.2.1.4.0 时,Studio 安装成功,但 rcu.bat 脚本不运行,无法创建存储库。 双击
为了考虑将 AWS Keyspaces 作为本地 Cassandra 集群的替代方案,我想进行成本估算。但是, key 空间定价基于写入请求单位 (WRU) 和读取容量单位 (RCU)。 https:
我是一名优秀的程序员,十分优秀!