summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorlpeter <lpeter@google.com>2021-04-13 02:17:46 +0800
committerlpeter <lpeter@google.com>2021-04-19 14:22:38 +0800
commitafef0beebf1de78d476ff5a596fb3bf63d0e5ecc (patch)
treea044b7bcf1944a1e83dce25c99523309a619c04c /core/java
parentb1474958c72242b23eb22d34fdf99f639f8579a6 (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.java30
-rw-r--r--core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl7
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);
}