gpt4 book ai didi

安卓 API21 : VoiceInteractionService onReady() not called

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:04 27 4
gpt4 key购买 nike

我对新的 Android API21 有疑问,特别是 VoiceInteractorService。

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

当我有一个 Activity (MainActivity) 并且我想从 VoiceInteractorService 调用 createAlwaysOnHotwordDetector(String keyphrase, Locale locale, AlwaysOnHotwordDetector.Callback callback) 方法时,我收到一个错误:java.lang.IllegalStateException:在 onReady 之前不可用() 叫做。我试图暂时解决这个问题,方法是使用 while 和 try catch 循环来查看何时调用 onReady() 并且我可以执行 createAlwaysOnHotwordDetector() 方法。我发现从未调用过 onReady(),即使在让系统循环 15 分钟后也是如此。

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

提前致谢。

这是我调用 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 旨在进行子类化以创建您自己的语音交互服务。一次只能启用一项此类服务,就像键盘一样。一旦用户启用它,它就会在任何地方都处于 Activity 状态,而不仅仅是在特定 Activity 中。

您不能使用 VoiceInteractionService 为特定 Activity 提供语音识别。

关于安卓 API21 : VoiceInteractionService onReady() not called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com