【问题标题】:How to make hotword detection service in android如何在android中制作热词检测服务
【发布时间】:2017-08-27 21:57:20
【问题描述】:

我想创建一个服务,它应该在后台侦听启动指令,这样当我打招呼时它应该调用一个活动,我该怎么做,关于 voiceInteractionService 但我已经读过它不能使用,是真的吗?谁能告诉我应该如何解决这个问题?关于热词检测器

我一直关注this

试过这个:

public class InteractionService extends VoiceInteractionService {

static final String TAG = "InteractionService" ;
private AlwaysOnHotwordDetector mHotwordDetector;

@Override
public void onCreate() {
    super.onCreate();

    Log.i(TAG, "service started");
}

@Override
public void onReady() {
    super.onReady();
    Log.i(TAG, "Creating " + this);

    mHotwordDetector = createAlwaysOnHotwordDetector("Hello"
,  Locale.forLanguageTag("en-US"), mHotwordCallback);
    Log.i(TAG, "onReady");
}

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

                    @Override
            public void onDetected(AlwaysOnHotwordDetector
               .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 void hotwordAvailabilityChangeHelper(int status) {

    Log.i(TAG, "Hotword availability = " + status);
    switch (status) {
        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;
    }

    //    final static AlwaysOnHotwordDetector.Callback
}}

【问题讨论】:

标签: java android service voice-recognition google-speech-api


【解决方案1】:

Porcupine 的 service demo 正是这样做的。

【讨论】:

  • 不,不是,该操作请求帮助以官方方式设置语音助手,可能替换谷歌自己的助手,或三星上的 bixby。豪猪不会取代这些东西。
猜你喜欢
  • 2017-03-06
  • 1970-01-01
  • 2013-09-23
  • 2015-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
相关资源
最近更新 更多