面向 Android 11 时 SpeechRecognizer 不可用
Posted
技术标签:
【中文标题】面向 Android 11 时 SpeechRecognizer 不可用【英文标题】:SpeechRecognizer not available when targeting Android 11 【发布时间】:2021-01-26 20:11:45 【问题描述】:在将 targetLevel 增加到 30 后测试应用程序时,我发现 SpeechRecognizer 不再可用,即 SpeechRecognizer.isRecognitionAvailable()
总是返回 false。
如果我将 targetLevel 设置回 29,而不更改任何其他内容,它就会再次可用。这发生在真实设备(Pixel 3a)和模拟器上。
它似乎不是behaviour change。识别器 API 提到的唯一要求是 Manifest.permission.RECORD_AUDIO
我在logcat中也没有发现任何线索。
【问题讨论】:
【参考方案1】:我终于找到了解决办法。
尝试实际使用(据称不可用)识别器会导致 logcat 中出现此消息:
10-13 09:19:50.273 1531 1799 I AppsFilter: interaction: PackageSettingeb6a1b2 my.application.package/10225 -> PackageSettingab34503 com.google.android.googlequicksearchbox/10140 BLOCKED
10-13 09:19:50.273 1531 1799 W ActivityManager: Unable to start service Intent act=android.speech.RecognitionService cmp=com.google.android.googlequicksearchbox/com.google.android.voicesearch.serviceapi.GoogleRecognitionService U=0: not found
10-13 09:19:50.273 25348 25348 E SpeechRecognizer: bind to recognition service failed
所以问题似乎与这个new Android 11 "feature"有关,解决方案是在清单中添加查询以获取被阻止的意图:
<manifest ...>
<queries>
<intent>
<action android:name="android.speech.RecognitionService" />
</intent>
</queries>
【讨论】:
哇,不错的发现。 你好,你能检查一下这个问题***.com/questions/65476014/… 哇,真的没想到会这样。谢谢你,伙计! 伟大的发现人,问题的确切解决方案。 +1 添加意图会导致另一个问题出现在“:app:processDebugMainManifest”中。不添加意图标签,应用程序运行但语音识别不起作用以上是关于面向 Android 11 时 SpeechRecognizer 不可用的主要内容,如果未能解决你的问题,请参考以下文章
谷歌强制要求Android11支持无缝更新;GitHub私有仓库完全免费面向团队提供;拼多多推出好物种草平台多多比优
面向 Android 时,为啥我的 TextField 在屏幕上如此之小?
字节码插桩Android 打包流程 | Android 中的字节码操作方式 | AOP 面向切面编程 | APT 编译时技术