【问题标题】:How do I use SpeechRecognizer in a PeriodicWorkRequest?如何在 PeriodicWorkRequest 中使用 SpeechRecognizer?
【发布时间】:2020-09-09 03:37:34
【问题描述】:

我正在尝试每 15 分钟进行一次语音识别,为此我正在使用 PeriodicWorkRequest,但我收到错误消息 java.util.concurrent.ExecutionException: java.lang.RuntimeException: SpeechRecognizer should be used only from the application's main thread。我该怎么做呢? PeriodicWorkRequest 是错误的方法吗?

【问题讨论】:

    标签: android scheduling


    【解决方案1】:

    如果您尝试使用 Android Framework API 进行语音识别,则该功能仅适用于前台活动。根据错误,您似乎是trying to listen from background which isn't possible starting with Android 9

    为了延长电池寿命,最近版本的 Android 中的后台服务变得更加严格。以前您可能可以使用Foreground Service 来维护您的流程,但是通过Doze Mode 等功能,Google 进一步限制了用例。即使您关注recommendations for exemption,并且您的应用程序已指示用户手动将您的应用程序从“设置”中的“省电模式”中排除,设备制造商也添加了自己的电池省电功能,因此需要了解以下网站:https://dontkillmyapp.com/ Android 中的当前状态。

    您可能看到的任何后台语音激活或监听应用很可能是使用旧版本的 Android 或设备制造商的定制软件。

    【讨论】:

    • 我的理解是谷歌服务可以访问芯片制造商提供的专用硬件,例如:qualcomm.com/products/features/voice-assist,它允许始终处于低功耗状态。否则,您会通过点按或使用 Google 主屏幕来调用“Ok Google”。
    猜你喜欢
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多