Android API21:未调用VoiceInteractionService onReady()

Android API21:未调用VoiceInteractionService onReady(),第1张

概述我对新的 Android API21有疑问,特别是VoiceInteractorService. 我想在API21中使用新的Hotword检测.如果我按下按钮,则应启动“google”一词的热门词检测. 当我有一个Activity(MainActivity)并且我想从VoiceInteractorService调用createAlwaysOnHotwordDetector(String keyph 我对新的 Android API21有疑问,特别是VoiceInteractorService.

我想在API21中使用新的hotword检测.如果我按下按钮,则应启动“Google”一词的热门词检测.

当我有一个Activity(MainActivity)并且我想从VoiceInteractorService调用createalwaysOnhotwordDetector(String keyphrase,Locale locale,AlwaysOnhotwordDetector.Callback callback)方法时,我收到一个错误:java.lang.IllegalStateException:在onReady()之前不可用调用.我尝试使用try catch循环来暂时解决这个问题,以查看何时调用onReady()并且我可以执行createalwaysOnhotwordDetector()方法.我发现即使在让系统循环15分钟之后也永远不会调用onReady().

有人知道如何解决这个问题吗?

提前致谢.

这是我调用VoiceInteractorService的Activity.

import java.util.Locale;import androID.app.Activity;import androID.content.Context;import androID.os.Bundle;import androID.service.voice.AlwaysOnhotwordDetector;import androID.service.voice.AlwaysOnhotwordDetector.Callback;import androID.service.voice.VoiceInteractionService;import androID.service.voice.AlwaysOnhotwordDetector.EventPayload;import androID.util.Log;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;import androID.Widget.Toast;public class MainActivity extends Activity {    button btn;    VoiceInteractionService service;    AlwaysOnhotwordDetector.Callback callback;    Locale locale = new Locale("nl-NL");    Context ctx;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentVIEw(R.layout.activity_main);        btn = (button) findVIEwByID(R.ID.button1);        ctx = getApplicationContext();        service = new VoiceInteractionService();        btn.setonClickListener(new OnClickListener() {            // Create hotword detector on button click            @OverrIDe            public voID onClick(VIEw v) {                service.createalwaysOnhotwordDetector("Google",locale,callback);            }        });        callback = new Callback() {            @OverrIDe            public voID onRecognitionResumed() {                // Todo auto-generated method stub            }            @OverrIDe            public voID onRecognitionPaused() {                // Todo auto-generated method stub            }            @OverrIDe            public voID onError() {                // Todo auto-generated method stub                Log.d("error","error");            }            @OverrIDe            public voID onDetected(EventPayload eventPayload) {                // Todo auto-generated method stub                // display Toast message when hotword is detected                Toast.makeText(ctx,"Google",Toast.LENGTH_LONG).show();            }            @OverrIDe            public voID onAvailabilityChanged(int status) {                // Todo auto-generated method stub            }        };    }}
解决方法 VoiceInteractionService旨在进行子类化以创建您自己的语音交互服务.一次只能启用一个这样的服务,就像键盘一样.一旦用户启用它,它就会在任何地方都处于活动状态,而不仅仅是在特定的活动中.

您无法使用VoiceInteractionService为特定活动提供语音识别.

总结

以上是内存溢出为你收集整理的Android API21:未调用VoiceInteractionService onReady()全部内容,希望文章能够帮你解决Android API21:未调用VoiceInteractionService onReady()所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1139174.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存