Android API21:VoiceInteractionService onReady()未被调用

我有一个新的Android API21,特别是VoiceInteractorService的问题。

我想在API21中使用新的Hotword检测。 如果我按下一个button,应该开始检测单词“google”的热门词汇。

当我有一个活动(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 } }; } } 

Solutions Collecting From Web of "Android API21:VoiceInteractionService onReady()未被调用"

VoiceInteractionService旨在被分类以创build您自己的语音交互服务。 一次只能启用一项此类服务,就像键盘一样。 一旦它被用户启用,它在任何地方都是活跃的,而不仅仅是在特定的活动中。

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