diff options
author | Sandeep Siddhartha <sansid@google.com> | 2014-08-08 18:29:43 -0700 |
---|---|---|
committer | Sandeep Siddhartha <sansid@google.com> | 2014-08-11 09:53:44 -0700 |
commit | d5730bc88c24531d63ca4e818d7063498470b69e (patch) | |
tree | 150fbb6e6947c5476c15c1222e1d10f51e943b64 | |
parent | 1584609f422c338ade65b8b4078b434ba3a81253 (diff) | |
download | frameworks_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.txt | 5 | ||||
-rw-r--r-- | core/java/android/service/voice/AlwaysOnHotwordDetector.java | 93 |
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; + } } } |