summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/soundtrigger/SoundTriggerDetector.java20
-rw-r--r--tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java16
2 files changed, 33 insertions, 3 deletions
diff --git a/media/java/android/media/soundtrigger/SoundTriggerDetector.java b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
index d5296ae42031..c091c84df657 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerDetector.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
@@ -137,7 +137,7 @@ public final class SoundTriggerDetector {
}
/**
- * Gets the raw audio that triggered the keyphrase.
+ * Gets the raw audio that triggered the detector.
* This may be null if the trigger audio isn't available.
* If non-null, the format of the audio can be obtained by calling
* {@link #getCaptureAudioFormat()}.
@@ -154,6 +154,24 @@ public final class SoundTriggerDetector {
}
/**
+ * Gets the opaque data passed from the detection engine for the event.
+ * This may be null if it was not populated by the engine, or if the data is known to
+ * contain the trigger audio.
+ *
+ * @see #getTriggerAudio
+ *
+ * @hide
+ */
+ @Nullable
+ public byte[] getData() {
+ if (!mTriggerAvailable) {
+ return mData;
+ } else {
+ return null;
+ }
+ }
+
+ /**
* Gets the session ID to start a capture from the DSP.
* This may be null if streaming capture isn't possible.
* If non-null, the format of the audio that can be captured can be
diff --git a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
index b550cfad74cf..00bf33ad691e 100644
--- a/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
+++ b/tests/SoundTriggerTestApp/src/com/android/test/soundtrigger/SoundTriggerTestService.java
@@ -689,8 +689,20 @@ public class SoundTriggerTestService extends Service {
AudioFormat format = event.getCaptureAudioFormat();
result = result + "AudioFormat: " + ((format == null) ? "null" : format.toString());
byte[] triggerAudio = event.getTriggerAudio();
- result = result + "TriggerAudio: " + (triggerAudio == null ? "null" : triggerAudio.length);
- result = result + "CaptureSession: " + event.getCaptureSession();
+ result = result + ", TriggerAudio: " + (triggerAudio == null ? "null" : triggerAudio.length);
+ byte[] data = event.getData();
+ result = result + ", Data: " + (data == null ? "null" : data.length);
+ if (data != null) {
+ try {
+ String decodedData = new String(data, "UTF-8");
+ if (decodedData.chars().allMatch(c -> (c >= 32 && c < 128) || c == 0)) {
+ result = result + ", Decoded Data: '" + decodedData + "'";
+ }
+ } catch (Exception e) {
+ Log.e(TAG, "Failed to decode data");
+ }
+ }
+ result = result + ", CaptureSession: " + event.getCaptureSession();
result += " )";
return result;
}