Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12b3ebd8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Implement a callback to report HotwordDetectionService status" into sc-dev am: 822d0b7f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14747457

Change-Id: I8ef75db015d1a655103ed723592676bca1044960
parents 89d67831 822d0b7f
Loading
Loading
Loading
Loading
+56 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import static com.android.internal.util.function.pooled.PooledLambda.obtainMessa

import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.hardware.soundtrigger.SoundTrigger;
import android.media.AudioFormat;
import android.os.Handler;
import android.os.Looper;
@@ -31,6 +32,7 @@ import android.os.RemoteException;
import android.os.SharedMemory;
import android.util.Slog;

import com.android.internal.app.IHotwordRecognitionStatusCallback;
import com.android.internal.app.IVoiceInteractionManagerService;

import java.io.PrintWriter;
@@ -64,7 +66,8 @@ class SoftwareHotwordDetector extends AbstractHotwordDetector {
        mAudioFormat = audioFormat;
        mCallback = callback;
        mHandler = new Handler(Looper.getMainLooper());
        updateStateLocked(options, sharedMemory, null /* callback */);
        updateStateLocked(options, sharedMemory,
                new InitializationStateListener(mHandler, mCallback));
    }

    @RequiresPermission(RECORD_AUDIO)
@@ -133,6 +136,58 @@ class SoftwareHotwordDetector extends AbstractHotwordDetector {
        }
    }

    private static class InitializationStateListener
            extends IHotwordRecognitionStatusCallback.Stub {
        private final Handler mHandler;
        private final HotwordDetector.Callback mCallback;

        InitializationStateListener(Handler handler, HotwordDetector.Callback callback) {
            this.mHandler = handler;
            this.mCallback = callback;
        }

        @Override
        public void onKeyphraseDetected(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent)
                throws RemoteException {

        }

        @Override
        public void onGenericSoundTriggerDetected(
                SoundTrigger.GenericRecognitionEvent recognitionEvent) throws RemoteException {

        }

        @Override
        public void onRejected(HotwordRejectedResult result) throws RemoteException {

        }

        @Override
        public void onError(int status) throws RemoteException {

        }

        @Override
        public void onRecognitionPaused() throws RemoteException {

        }

        @Override
        public void onRecognitionResumed() throws RemoteException {

        }

        @Override
        public void onStatusReported(int status) {
            Slog.v(TAG, "onStatusReported" + (DEBUG ? "(" + status + ")" : ""));
            mHandler.sendMessage(obtainMessage(
                    HotwordDetector.Callback::onHotwordDetectionServiceInitialized,
                    mCallback,
                    status));
        }
    }

    /** @hide */
    public void dump(String prefix, PrintWriter pw) {
        // TODO: implement this