diff options
author | Sandeep Siddhartha <sansid@google.com> | 2014-08-11 17:15:57 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-08-11 17:09:03 +0000 |
commit | 97887cf2555b395524ac4f9105c30a1a49c93684 (patch) | |
tree | 4be22d918d61945670e41bc36810d783f4ca5e76 /core/java/android/service | |
parent | a3a5af04a0fb1f2c00e0d0ea8df142302be97745 (diff) | |
parent | d5730bc88c24531d63ca4e818d7063498470b69e (diff) | |
download | frameworks_base-97887cf2555b395524ac4f9105c30a1a49c93684.zip frameworks_base-97887cf2555b395524ac4f9105c30a1a49c93684.tar.gz frameworks_base-97887cf2555b395524ac4f9105c30a1a49c93684.tar.bz2 |
Merge "Remove direct field access from event payload" into lmp-dev
Diffstat (limited to 'core/java/android/service')
-rw-r--r-- | core/java/android/service/voice/AlwaysOnHotwordDetector.java | 93 |
1 files changed, 61 insertions, 32 deletions
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index 00c78b5..15e66a0 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -187,48 +187,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; + } } } |