【问题标题】:SpeechRecognizer not available when targeting Android 11面向 Android 11 时 SpeechRecognizer 不可用
【发布时间】:2021-01-26 20:11:45
【问题描述】:

在将 targetLevel 增加到 30 后测试应用程序时,我发现 SpeechRecognizer 不再可用,即 SpeechRecognizer.isRecognitionAvailable() 总是返回 false。

如果我将 targetLevel 设置回 29,而不更改任何其他内容,它就会再次可用。这发生在真实设备(Pixel 3a)和模拟器上。

它似乎不是behaviour change。识别器 API 提到的唯一要求是 Manifest.permission.RECORD_AUDIO

我在logcat中也没有发现任何线索。

【问题讨论】:

    标签: android android-11 android-speech-api


    【解决方案1】:

    我终于找到了解决办法。

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

    【讨论】:

    • 哇,不错的发现。
    • 你好,你能检查一下这个问题stackoverflow.com/questions/65476014/…
    • 哇,真的没想到会这样。谢谢你,伙计!
    • 伟大的发现人,问题的确切解决方案。 +1
    • 添加意图会导致另一个问题出现在“:app:processDebugMainManifest”中。不添加意图标签,应用程序运行但语音识别不起作用
    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多