Search in sources :

Example 6 with RecognitionConfig

use of android.hardware.soundtrigger.SoundTrigger.RecognitionConfig in project android_frameworks_base by DirtyUnicorns.

the class AlwaysOnHotwordDetector method startRecognitionLocked.

private int startRecognitionLocked(int recognitionFlags) {
    KeyphraseRecognitionExtra[] recognitionExtra = new KeyphraseRecognitionExtra[1];
    // TODO: Do we need to do something about the confidence level here?
    recognitionExtra[0] = new KeyphraseRecognitionExtra(mKeyphraseMetadata.id, mKeyphraseMetadata.recognitionModeFlags, 0, new ConfidenceLevel[0]);
    boolean captureTriggerAudio = (recognitionFlags & RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO) != 0;
    boolean allowMultipleTriggers = (recognitionFlags & RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS) != 0;
    int code = STATUS_ERROR;
    try {
        code = mModelManagementService.startRecognition(mVoiceInteractionService, mKeyphraseMetadata.id, mLocale.toLanguageTag(), mInternalCallback, new RecognitionConfig(captureTriggerAudio, allowMultipleTriggers, recognitionExtra, null));
    } catch (RemoteException e) {
        Slog.w(TAG, "RemoteException in startRecognition!", e);
    }
    if (code != STATUS_OK) {
        Slog.w(TAG, "startRecognition() failed with error code " + code);
    }
    return code;
}
Also used : KeyphraseRecognitionExtra(android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra) ConfidenceLevel(android.hardware.soundtrigger.SoundTrigger.ConfidenceLevel) RecognitionConfig(android.hardware.soundtrigger.SoundTrigger.RecognitionConfig) RemoteException(android.os.RemoteException)

Example 7 with RecognitionConfig

use of android.hardware.soundtrigger.SoundTrigger.RecognitionConfig in project android_frameworks_base by DirtyUnicorns.

the class SoundTriggerHelper method startRecognitionLocked.

// A single routine that implements the start recognition logic for both generic and keyphrase
// models.
private int startRecognitionLocked(ModelData modelData, boolean notify) {
    IRecognitionStatusCallback callback = modelData.getCallback();
    int handle = modelData.getHandle();
    RecognitionConfig config = modelData.getRecognitionConfig();
    if (callback == null || handle == INVALID_VALUE || config == null) {
        // Nothing to do here.
        Slog.w(TAG, "startRecognition: Bad data passed in.");
        MetricsLogger.count(mContext, "sth_start_recognition_error", 1);
        return STATUS_ERROR;
    }
    if (!isRecognitionAllowed()) {
        // Nothing to do here.
        Slog.w(TAG, "startRecognition requested but not allowed.");
        MetricsLogger.count(mContext, "sth_start_recognition_not_allowed", 1);
        return STATUS_OK;
    }
    int status = mModule.startRecognition(handle, config);
    if (status != SoundTrigger.STATUS_OK) {
        Slog.w(TAG, "startRecognition failed with " + status);
        MetricsLogger.count(mContext, "sth_start_recognition_error", 1);
        // Notify of error if needed.
        if (notify) {
            try {
                callback.onError(status);
            } catch (RemoteException e) {
                Slog.w(TAG, "RemoteException in onError", e);
            }
        }
    } else {
        Slog.i(TAG, "startRecognition successful.");
        MetricsLogger.count(mContext, "sth_start_recognition_success", 1);
        modelData.setStarted();
        // Notify of resume if needed.
        if (notify) {
            try {
                callback.onRecognitionResumed();
            } catch (RemoteException e) {
                Slog.w(TAG, "RemoteException in onRecognitionResumed", e);
            }
        }
    }
    if (DBG) {
        Slog.d(TAG, "Model being started :" + modelData.toString());
    }
    return status;
}
Also used : RecognitionConfig(android.hardware.soundtrigger.SoundTrigger.RecognitionConfig) RemoteException(android.os.RemoteException) IRecognitionStatusCallback(android.hardware.soundtrigger.IRecognitionStatusCallback)

Example 8 with RecognitionConfig

use of android.hardware.soundtrigger.SoundTrigger.RecognitionConfig in project android_frameworks_base by AOSPA.

the class AlwaysOnHotwordDetector method startRecognitionLocked.

private int startRecognitionLocked(int recognitionFlags) {
    KeyphraseRecognitionExtra[] recognitionExtra = new KeyphraseRecognitionExtra[1];
    // TODO: Do we need to do something about the confidence level here?
    recognitionExtra[0] = new KeyphraseRecognitionExtra(mKeyphraseMetadata.id, mKeyphraseMetadata.recognitionModeFlags, 0, new ConfidenceLevel[0]);
    boolean captureTriggerAudio = (recognitionFlags & RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO) != 0;
    boolean allowMultipleTriggers = (recognitionFlags & RECOGNITION_FLAG_ALLOW_MULTIPLE_TRIGGERS) != 0;
    int code = STATUS_ERROR;
    try {
        code = mModelManagementService.startRecognition(mVoiceInteractionService, mKeyphraseMetadata.id, mLocale.toLanguageTag(), mInternalCallback, new RecognitionConfig(captureTriggerAudio, allowMultipleTriggers, recognitionExtra, null));
    } catch (RemoteException e) {
        Slog.w(TAG, "RemoteException in startRecognition!", e);
    }
    if (code != STATUS_OK) {
        Slog.w(TAG, "startRecognition() failed with error code " + code);
    }
    return code;
}
Also used : KeyphraseRecognitionExtra(android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra) ConfidenceLevel(android.hardware.soundtrigger.SoundTrigger.ConfidenceLevel) RecognitionConfig(android.hardware.soundtrigger.SoundTrigger.RecognitionConfig) RemoteException(android.os.RemoteException)

Example 9 with RecognitionConfig

use of android.hardware.soundtrigger.SoundTrigger.RecognitionConfig in project android_frameworks_base by crdroidandroid.

the class SoundTriggerHelper method onGenericRecognitionSuccessLocked.

private void onGenericRecognitionSuccessLocked(GenericRecognitionEvent event) {
    MetricsLogger.count(mContext, "sth_generic_recognition_event", 1);
    if (event.status != SoundTrigger.RECOGNITION_STATUS_SUCCESS) {
        return;
    }
    ModelData model = getModelDataForLocked(event.soundModelHandle);
    if (model == null || !model.isGenericModel()) {
        Slog.w(TAG, "Generic recognition event: Model does not exist for handle: " + event.soundModelHandle);
        return;
    }
    IRecognitionStatusCallback callback = model.getCallback();
    if (callback == null) {
        Slog.w(TAG, "Generic recognition event: Null callback for model handle: " + event.soundModelHandle);
        return;
    }
    try {
        callback.onGenericSoundTriggerDetected((GenericRecognitionEvent) event);
    } catch (RemoteException e) {
        Slog.w(TAG, "RemoteException in onGenericSoundTriggerDetected", e);
    }
    model.setStopped();
    RecognitionConfig config = model.getRecognitionConfig();
    if (config == null) {
        Slog.w(TAG, "Generic recognition event: Null RecognitionConfig for model handle: " + event.soundModelHandle);
        return;
    }
    model.setRequested(config.allowMultipleTriggers);
    // TODO: Remove this block if the lower layer supports multiple triggers.
    if (model.isRequested()) {
        updateRecognitionLocked(model, isRecognitionAllowed(), /* isAllowed */
        true);
    }
}
Also used : RecognitionConfig(android.hardware.soundtrigger.SoundTrigger.RecognitionConfig) RemoteException(android.os.RemoteException) IRecognitionStatusCallback(android.hardware.soundtrigger.IRecognitionStatusCallback)

Example 10 with RecognitionConfig

use of android.hardware.soundtrigger.SoundTrigger.RecognitionConfig in project android_frameworks_base by crdroidandroid.

the class SoundTriggerHelper method onKeyphraseRecognitionSuccessLocked.

private void onKeyphraseRecognitionSuccessLocked(KeyphraseRecognitionEvent event) {
    Slog.i(TAG, "Recognition success");
    MetricsLogger.count(mContext, "sth_keyphrase_recognition_event", 1);
    int keyphraseId = getKeyphraseIdFromEvent(event);
    ModelData modelData = getKeyphraseModelDataLocked(keyphraseId);
    if (modelData == null || !modelData.isKeyphraseModel()) {
        Slog.e(TAG, "Keyphase model data does not exist for ID:" + keyphraseId);
        return;
    }
    if (modelData.getCallback() == null) {
        Slog.w(TAG, "Received onRecognition event without callback for keyphrase model.");
        return;
    }
    try {
        modelData.getCallback().onKeyphraseDetected((KeyphraseRecognitionEvent) event);
    } catch (RemoteException e) {
        Slog.w(TAG, "RemoteException in onKeyphraseDetected", e);
    }
    modelData.setStopped();
    RecognitionConfig config = modelData.getRecognitionConfig();
    if (config != null) {
        // Whether we should continue by starting this again.
        modelData.setRequested(config.allowMultipleTriggers);
    }
    // TODO: Remove this block if the lower layer supports multiple triggers.
    if (modelData.isRequested()) {
        updateRecognitionLocked(modelData, isRecognitionAllowed(), true);
    }
}
Also used : RecognitionConfig(android.hardware.soundtrigger.SoundTrigger.RecognitionConfig) RemoteException(android.os.RemoteException)

Aggregations

RecognitionConfig (android.hardware.soundtrigger.SoundTrigger.RecognitionConfig)29 RemoteException (android.os.RemoteException)17 GenericSoundModel (android.hardware.soundtrigger.SoundTrigger.GenericSoundModel)12 ParcelUuid (android.os.ParcelUuid)12 LargeTest (android.test.suitebuilder.annotation.LargeTest)12 IRecognitionStatusCallback (android.hardware.soundtrigger.IRecognitionStatusCallback)8 DataOutputStream (java.io.DataOutputStream)8 Socket (java.net.Socket)8 ConfidenceLevel (android.hardware.soundtrigger.SoundTrigger.ConfidenceLevel)5 KeyphraseRecognitionExtra (android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra)5 ArrayList (java.util.ArrayList)4 Random (java.util.Random)4 UUID (java.util.UUID)4