VoiceInteractionService

VoiceInteractionService

本文介绍了在Android中使用VoiceInteractionService的HotwordDetector的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用自定义命令创建语音识别服务,例如"Ok Google".为此,我使用了VoiceInteractionService,并且引用了此处.另外,我在onAvailabilityChanged中遇到了STATE_HARDWARE_UNAVAILABLE错误.

I am creating the voice recognition service like "Ok Google" with custom command. For this I have used the VoiceInteractionService and I refered the code from here. Also, I am getting the STATE_HARDWARE_UNAVAILABLE error in onAvailabilityChanged.

public class VoiceCommandService extends VoiceInteractionService {
private static final String TAG = "AlwaysOnHotwordDetector";
Locale locale = new Locale("en-US");
protected SpeechRecognizer mSpeechRecognizer;
protected Intent mSpeechRecognizerIntent;

public final Callback mHotwordCallback = new Callback() {
    @Override
    public void onAvailabilityChanged(int status) {
        Log.i(TAG, "onAvailabilityChanged(" + status + ")");
        hotwordAvailabilityChangeHelper(status);
    }

    @Override
    public void onDetected(EventPayload eventPayload) {
        Log.i(TAG, "onDetected");
    }

    @Override
    public void onError() {
        Log.i(TAG, "onError");
    }

    @Override
    public void onRecognitionPaused() {
        Log.i(TAG, "onRecognitionPaused");
    }

    @Override
    public void onRecognitionResumed() {
        Log.i(TAG, "onRecognitionResumed");
    }
};

private AlwaysOnHotwordDetector mHotwordDetector;

@Override
public void onCreate(){
    Log.d(TAG, "Entered on create");
    super.onCreate();
}

@Override
public void onReady() {
    super.onReady();
    Log.i(TAG, "Creating " + this);
    mHotwordDetector = createAlwaysOnHotwordDetector(
            "Hello", Locale.forLanguageTag("en-US"), mHotwordCallback);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    Bundle args = new Bundle();
    args.putParcelable("intent", new Intent(this, MainActivity.class));
    showSession(args, 0);
    stopSelf(startId);
    return START_NOT_STICKY;
}

private void hotwordAvailabilityChangeHelper(int availability) {
    Log.i(TAG, "Hotword availability = " + availability);
    switch (availability) {
        case AlwaysOnHotwordDetector.STATE_HARDWARE_UNAVAILABLE:
            Log.i(TAG, "STATE_HARDWARE_UNAVAILABLE");
            break;
        case AlwaysOnHotwordDetector.STATE_KEYPHRASE_UNSUPPORTED:
            Log.i(TAG, "STATE_KEYPHRASE_UNSUPPORTED");
            break;
        case AlwaysOnHotwordDetector.STATE_KEYPHRASE_UNENROLLED:
            Log.i(TAG, "STATE_KEYPHRASE_UNENROLLED");
            Intent enroll = mHotwordDetector.createEnrollIntent();
            Log.i(TAG, "Need to enroll with " + enroll);
            break;
        case AlwaysOnHotwordDetector.STATE_KEYPHRASE_ENROLLED:
            Log.i(TAG, "STATE_KEYPHRASE_ENROLLED - starting recognition");
            if (mHotwordDetector.startRecognition(0)) {
                Log.i(TAG, "startRecognition succeeded");
            } else {
                Log.i(TAG, "startRecognition failed");
            }
            break;
    }
}}

推荐答案

VoiceInteractionServiceAndroidManifests

这篇关于在Android中使用VoiceInteractionService的HotwordDetector的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 07:52