
我想在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()所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)