summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSandeep Siddhartha <sansid@google.com>2014-08-08 18:29:43 -0700
committerSandeep Siddhartha <sansid@google.com>2014-08-11 09:53:44 -0700
commitd5730bc88c24531d63ca4e818d7063498470b69e (patch)
tree150fbb6e6947c5476c15c1222e1d10f51e943b64
parent1584609f422c338ade65b8b4078b434ba3a81253 (diff)
downloadframeworks_base-d5730bc88c24531d63ca4e818d7063498470b69e.zip
frameworks_base-d5730bc88c24531d63ca4e818d7063498470b69e.tar.gz
frameworks_base-d5730bc88c24531d63ca4e818d7063498470b69e.tar.bz2
Remove direct field access from event payload
Change-Id: I0b4462e56a977bfbaaebd2dd31d9246051af1b99
-rw-r--r--api/current.txt5
-rw-r--r--core/java/android/service/voice/AlwaysOnHotwordDetector.java93
2 files changed, 63 insertions, 35 deletions
diff --git a/api/current.txt b/api/current.txt
index 8045c83..eb991ad 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -27774,9 +27774,8 @@ package android.service.voice {
}
public static class AlwaysOnHotwordDetector.EventPayload {
- field public final android.media.AudioFormat audioFormat;
- field public final byte[] data;
- field public final boolean triggerAvailable;
+ method public android.media.AudioFormat getCaptureAudioFormat();
+ method public byte[] getTriggerAudio();
}
public class VoiceInteractionService extends android.app.Service {
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index f1e1943..03ce795 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -185,48 +185,77 @@ public class AlwaysOnHotwordDetector {
* Additional payload for {@link Callback#onDetected}.
*/
public static class EventPayload {
+ private final boolean mTriggerAvailable;
+ // Indicates if {@code captureSession} can be used to continue capturing more audio
+ // from the DSP hardware.
+ private final boolean mCaptureAvailable;
+ // The session to use when attempting to capture more audio from the DSP hardware.
+ private final int mCaptureSession;
+ private final AudioFormat mAudioFormat;
+ // Raw data associated with the event.
+ // This is the audio that triggered the keyphrase if {@code isTriggerAudio} is true.
+ private final byte[] mData;
+
+ private EventPayload(boolean triggerAvailable, boolean captureAvailable,
+ AudioFormat audioFormat, int captureSession, byte[] data) {
+ mTriggerAvailable = triggerAvailable;
+ mCaptureAvailable = captureAvailable;
+ mCaptureSession = captureSession;
+ mAudioFormat = audioFormat;
+ mData = data;
+ }
+
/**
- * Indicates if {@code data} is the audio that triggered the keyphrase.
+ * Gets the format of the audio obtained using {@link #getTriggerAudio()}.
+ * May be null if there's no audio present.
*/
- public final boolean triggerAvailable;
+ @Nullable
+ public AudioFormat getCaptureAudioFormat() {
+ return mAudioFormat;
+ }
+
/**
- * Indicates if {@code captureSession} can be used to continue capturing more audio from
- * the DSP hardware.
+ * Gets the raw audio that triggered the keyphrase.
+ * 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()}.
*
- * Candidate for public API
- * @hide
+ * @see AlwaysOnHotwordDetector#RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO
*/
- public final boolean captureAvailable;
+ @Nullable
+ public byte[] getTriggerAudio() {
+ if (mTriggerAvailable) {
+ return mData;
+ } else {
+ return null;
+ }
+ }
+
/**
- * The session to use when attempting to capture more audio from the DSP hardware.
+ * 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
+ * obtained using {@link #getCaptureAudioFormat()}.
+ *
+ * TODO: Candidate for Public API when the API to start capture with a session ID
+ * is made public.
+ *
+ * TODO: Add this to {@link #getCaptureAudioFormat()}:
+ * "Gets the format of the audio obtained using {@link #getTriggerAudio()}
+ * or {@link #getCaptureSession()}. May be null if no audio can be obtained
+ * for either the trigger or a streaming session."
+ *
+ * TODO: Should this return a known invalid value instead?
*
- * Candidate for public API
- * TODO: When unhiding, change javadoc of audioFormat to -
- * "Format of {@code data} or the audio that may be captured using {@code captureSession}.
- * May be null if {@code triggerAvailable} and {@code captureAvailable} are false."
* @hide
*/
- public final int captureSession;
- /**
- * Format of {@code data}.
- * May be null if {@code triggerAvailable} is false.
- */
@Nullable
- public final AudioFormat audioFormat;
- /**
- * Raw data associated with the event.
- * This is the audio that triggered the keyphrase if {@code isTriggerAudio} is true.
- */
- @Nullable
- public final byte[] data;
-
- private EventPayload(boolean _triggerAvailable, boolean _captureAvailable,
- AudioFormat _audioFormat, int _captureSession, byte[] _data) {
- triggerAvailable = _triggerAvailable;
- captureAvailable = _captureAvailable;
- captureSession = _captureSession;
- audioFormat = _audioFormat;
- data = _data;
+ public Integer getCaptureSession() {
+ if (mCaptureAvailable) {
+ return mCaptureSession;
+ } else {
+ return null;
+ }
}
}