如何解决定位Android 11时,SpeechRecognizer不可用
在将targetLevel增加到30之后测试应用程序时,我发现SpeechRecognizer不再可用,即SpeechRecognizer.isRecognitionAvailable()
总是返回false。
如果我将targetLevel设置回29,而未进行任何其他更改,则它将再次可用。这是在实际设备(Pixel 3a)和仿真器上发生的。
它似乎不是behaviour change。 Recognizer API提到的唯一要求是Manifest.permission.RECORD_AUDIO
我在logcat中也没有发现任何线索。
解决方法
我终于找到了解决方法。
尝试实际使用(据说不可用)识别器导致logcat中出现此消息:
10-13 09:19:50.273 1531 1799 I AppsFilter: interaction: PackageSetting{eb6a1b2 my.application.package/10225} -> PackageSetting{ab34503 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>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。