diff options
| author | lpeter <lpeter@google.com> | 2021-04-13 02:17:46 +0800 |
|---|---|---|
| committer | lpeter <lpeter@google.com> | 2021-04-19 14:22:38 +0800 |
| commit | afef0beebf1de78d476ff5a596fb3bf63d0e5ecc (patch) | |
| tree | a044b7bcf1944a1e83dce25c99523309a619c04c /core/java | |
| parent | b1474958c72242b23eb22d34fdf99f639f8579a6 (diff) | |
Add TestApi to trigger the onDetect function of HotwordDetectionService
Bug: 184685043
Test: atest CtsVoiceInteractionTestCases
Test: atest CtsVoiceInteractionTestCases --instant
Change-Id: I531c1229de908c64e29f1976bd2fd1e70e545853
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/service/voice/AlwaysOnHotwordDetector.java | 30 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl | 7 |
2 files changed, 37 insertions, 0 deletions
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index 8ca0e7ccff37..0b410a2cb619 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -24,6 +24,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.app.ActivityThread; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; @@ -49,6 +50,7 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.os.SharedMemory; import android.service.voice.HotwordDetectionService.InitializationStatus; +import android.util.Log; import android.util.Slog; import com.android.internal.app.IHotwordRecognitionStatusCallback; @@ -628,6 +630,34 @@ public class AlwaysOnHotwordDetector extends AbstractHotwordDetector { } /** + * Test API to simulate to trigger hardware recognition event for test. + * + * @hide + */ + @TestApi + @RequiresPermission(allOf = {RECORD_AUDIO, CAPTURE_AUDIO_HOTWORD}) + public void triggerHardwareRecognitionEventForTest(int status, int soundModelHandle, + boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, + boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { + Log.d(TAG, "triggerHardwareRecognitionEventForTest()"); + synchronized (mLock) { + if (mAvailability == STATE_INVALID || mAvailability == STATE_ERROR) { + throw new IllegalStateException("triggerHardwareRecognitionEventForTest called on" + + " an invalid detector or error state"); + } + try { + mModelManagementService.triggerHardwareRecognitionEventForTest( + new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable, + captureSession, captureDelayMs, capturePreambleMs, triggerInData, + captureFormat, data, null /* keyphraseExtras */), + mInternalCallback); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + } + + /** * Gets the recognition modes supported by the associated keyphrase. * * @see #RECOGNITION_MODE_USER_IDENTIFICATION diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl index 5a5e745c2426..dddc08a88062 100644 --- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl @@ -261,4 +261,11 @@ interface IVoiceInteractionManagerService { in AudioFormat audioFormat, in PersistableBundle options, in IMicrophoneHotwordDetectionVoiceInteractionCallback callback); + + /** + * Test API to simulate to trigger hardware recognition event for test. + */ + void triggerHardwareRecognitionEventForTest( + in SoundTrigger.KeyphraseRecognitionEvent event, + in IHotwordRecognitionStatusCallback callback); } |
