当目标为Android 11时,SpeechRecognizer不可用。

29

在将目标级别提高到30后,我测试一个应用程序时发现SpeechRecognizer不再可用,即SpeechRecognizer.isRecognitionAvailable()一直返回false。

如果我将目标级别改回29而不更改其他任何内容,则它又可用了。这在真实设备(Pixel 3a)和模拟器上都会发生。

这似乎不是行为变更。 Recognizer API 中仅提到了Manifest.permission.RECORD_AUDIO的要求。

我还在logcat中找不到线索。

1个回答

82

我终于找到了一个解决方案。

尝试使用(据称不可用的)识别器实际上会在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

所以,问题似乎与这个新的Android 11“功能”有关,解决方法是在受阻止的意图清单中添加一个查询:

<manifest ...>
    <queries>
        <intent>
            <action android:name="android.speech.RecognitionService" />
        </intent>
    </queries>

2
哇,不错的发现。 - Gavin Wright
你好,能帮我看一下这个问题吗?https://stackoverflow.com/questions/65476014/error-insufficient-permissions-with-android-11 - Emma Alden
2
哇,真的没想到这个。谢谢你啊! - adrianvintu
添加意图会导致另一个问题出现:“:app:processDebugMainManifest”。如果不添加意图标签,则应用程序可以运行,但语音识别无法工作。 - Cleaton Pais
2
似乎Android 13上出现了一个新的bug。我刚刚更新了我的Android版本,现在它无法工作。 - stavros.3p
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接