Loading core/java/android/hardware/soundtrigger/ConversionUtil.java +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ class ConversionUtil { aidlEvent.status, modelHandle, aidlEvent.captureAvailable, captureSession, aidlEvent.captureDelayMs, aidlEvent.capturePreambleMs, aidlEvent.triggerInData, audioFormat, aidlEvent.data); audioFormat, aidlEvent.data, aidlEvent.recognitionStillActive); } public static SoundTrigger.RecognitionEvent aidl2apiPhraseRecognitionEvent( Loading core/java/android/hardware/soundtrigger/SoundTrigger.java +59 −13 Original line number Diff line number Diff line Loading @@ -1175,6 +1175,11 @@ public class SoundTrigger { @UnsupportedAppUsage @NonNull public final byte[] data; /** * Is recognition still active after this event. * @hide */ public final boolean recognitionStillActive; /** @hide */ @TestApi Loading @@ -1182,6 +1187,16 @@ public class SoundTrigger { public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } /** @hide */ public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, boolean recognitionStillActive) { this.status = status; this.soundModelHandle = soundModelHandle; this.captureAvailable = captureAvailable; Loading @@ -1191,6 +1206,7 @@ public class SoundTrigger { this.triggerInData = triggerInData; this.captureFormat = requireNonNull(captureFormat); this.data = data != null ? data : new byte[0]; this.recognitionStillActive = recognitionStillActive; } /** Loading Loading @@ -1266,8 +1282,10 @@ public class SoundTrigger { .build(); } byte[] data = in.readBlob(); boolean recognitionStillActive = in.readBoolean(); return new RecognitionEvent(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); } /** @hide */ Loading @@ -1293,8 +1311,8 @@ public class SoundTrigger { dest.writeByte((byte)0); } dest.writeBlob(data); dest.writeBoolean(recognitionStillActive); } @Override public int hashCode() { final int prime = 31; Loading @@ -1312,6 +1330,7 @@ public class SoundTrigger { result = prime * result + Arrays.hashCode(data); result = prime * result + soundModelHandle; result = prime * result + status; result = result + (recognitionStillActive ? 1289 : 1291); return result; } Loading @@ -1334,6 +1353,8 @@ public class SoundTrigger { return false; if (!Arrays.equals(data, other.data)) return false; if (recognitionStillActive != other.recognitionStillActive) return false; if (soundModelHandle != other.soundModelHandle) return false; if (status != other.status) Loading Loading @@ -1370,7 +1391,9 @@ public class SoundTrigger { (", encoding=" + captureFormat.getEncoding())) + ((captureFormat == null) ? "" : (", channelMask=" + captureFormat.getChannelMask())) + ", data=" + (data == null ? 0 : data.length) + "]"; + ", data=" + (data == null ? 0 : data.length) + ", recognitionStillActive=" + recognitionStillActive + "]"; } } Loading Loading @@ -1676,8 +1699,18 @@ public class SoundTrigger { int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, @Nullable KeyphraseRecognitionExtra[] keyphraseExtras) { this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, keyphraseExtras, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } public KeyphraseRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, @Nullable KeyphraseRecognitionExtra[] keyphraseExtras, boolean recognitionStillActive) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); this.keyphraseExtras = keyphraseExtras != null ? keyphraseExtras : new KeyphraseRecognitionExtra[0]; } Loading Loading @@ -1713,11 +1746,12 @@ public class SoundTrigger { .build(); } byte[] data = in.readBlob(); boolean recognitionStillActive = in.readBoolean(); KeyphraseRecognitionExtra[] keyphraseExtras = in.createTypedArray(KeyphraseRecognitionExtra.CREATOR); return new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, keyphraseExtras); captureFormat, data, keyphraseExtras, recognitionStillActive); } @Override Loading @@ -1738,6 +1772,7 @@ public class SoundTrigger { dest.writeByte((byte)0); } dest.writeBlob(data); dest.writeBoolean(recognitionStillActive); dest.writeTypedArray(keyphraseExtras, flags); } Loading Loading @@ -1782,7 +1817,9 @@ public class SoundTrigger { (", encoding=" + captureFormat.getEncoding())) + ((captureFormat == null) ? "" : (", channelMask=" + captureFormat.getChannelMask())) + ", data=" + (data == null ? 0 : data.length) + "]"; + ", data=" + (data == null ? 0 : data.length) + ", recognitionStillActive=" + recognitionStillActive + "]"; } } Loading @@ -1798,9 +1835,17 @@ public class SoundTrigger { boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } public GenericRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, boolean recognitionStillActive) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); } public static final @android.annotation.NonNull Parcelable.Creator<GenericRecognitionEvent> CREATOR Loading @@ -1818,7 +1863,8 @@ public class SoundTrigger { RecognitionEvent event = RecognitionEvent.fromParcel(in); return new GenericRecognitionEvent(event.status, event.soundModelHandle, event.captureAvailable, event.captureSession, event.captureDelayMs, event.capturePreambleMs, event.triggerInData, event.captureFormat, event.data); event.capturePreambleMs, event.triggerInData, event.captureFormat, event.data, event.recognitionStillActive); } @Override Loading media/aidl/android/media/soundtrigger/RecognitionEvent.aidl +9 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,13 @@ parcelable RecognitionEvent { @nullable AudioConfig audioConfig; /** Additional data. */ byte[] data; /** * If true, recognition is still active after this event. * For compatibility with earlier versions of this data type, when the status field is set to * RecognitionStatus.FORCED, the value of this field should be treated as 'true', regardless of * the actual value. * When the status is RecognitionStatus.ABORTED or RecognitionStatus.FAILURE, this must be set * to false. */ boolean recognitionStillActive; } media/aidl_api/android.media.soundtrigger.types/current/android/media/soundtrigger/RecognitionEvent.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,5 @@ parcelable RecognitionEvent { boolean triggerInData; @nullable android.media.audio.common.AudioConfig audioConfig; byte[] data; boolean recognitionStillActive; } services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java +1 −0 Original line number Diff line number Diff line Loading @@ -310,6 +310,7 @@ class ConversionUtil { for (int i = 0; i < aidlEvent.data.length; ++i) { aidlEvent.data[i] = hidlEvent.data.get(i); } aidlEvent.recognitionStillActive = aidlEvent.status == RecognitionStatus.FORCED; return aidlEvent; } Loading Loading
core/java/android/hardware/soundtrigger/ConversionUtil.java +1 −1 Original line number Diff line number Diff line Loading @@ -204,7 +204,7 @@ class ConversionUtil { aidlEvent.status, modelHandle, aidlEvent.captureAvailable, captureSession, aidlEvent.captureDelayMs, aidlEvent.capturePreambleMs, aidlEvent.triggerInData, audioFormat, aidlEvent.data); audioFormat, aidlEvent.data, aidlEvent.recognitionStillActive); } public static SoundTrigger.RecognitionEvent aidl2apiPhraseRecognitionEvent( Loading
core/java/android/hardware/soundtrigger/SoundTrigger.java +59 −13 Original line number Diff line number Diff line Loading @@ -1175,6 +1175,11 @@ public class SoundTrigger { @UnsupportedAppUsage @NonNull public final byte[] data; /** * Is recognition still active after this event. * @hide */ public final boolean recognitionStillActive; /** @hide */ @TestApi Loading @@ -1182,6 +1187,16 @@ public class SoundTrigger { public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } /** @hide */ public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, boolean recognitionStillActive) { this.status = status; this.soundModelHandle = soundModelHandle; this.captureAvailable = captureAvailable; Loading @@ -1191,6 +1206,7 @@ public class SoundTrigger { this.triggerInData = triggerInData; this.captureFormat = requireNonNull(captureFormat); this.data = data != null ? data : new byte[0]; this.recognitionStillActive = recognitionStillActive; } /** Loading Loading @@ -1266,8 +1282,10 @@ public class SoundTrigger { .build(); } byte[] data = in.readBlob(); boolean recognitionStillActive = in.readBoolean(); return new RecognitionEvent(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); } /** @hide */ Loading @@ -1293,8 +1311,8 @@ public class SoundTrigger { dest.writeByte((byte)0); } dest.writeBlob(data); dest.writeBoolean(recognitionStillActive); } @Override public int hashCode() { final int prime = 31; Loading @@ -1312,6 +1330,7 @@ public class SoundTrigger { result = prime * result + Arrays.hashCode(data); result = prime * result + soundModelHandle; result = prime * result + status; result = result + (recognitionStillActive ? 1289 : 1291); return result; } Loading @@ -1334,6 +1353,8 @@ public class SoundTrigger { return false; if (!Arrays.equals(data, other.data)) return false; if (recognitionStillActive != other.recognitionStillActive) return false; if (soundModelHandle != other.soundModelHandle) return false; if (status != other.status) Loading Loading @@ -1370,7 +1391,9 @@ public class SoundTrigger { (", encoding=" + captureFormat.getEncoding())) + ((captureFormat == null) ? "" : (", channelMask=" + captureFormat.getChannelMask())) + ", data=" + (data == null ? 0 : data.length) + "]"; + ", data=" + (data == null ? 0 : data.length) + ", recognitionStillActive=" + recognitionStillActive + "]"; } } Loading Loading @@ -1676,8 +1699,18 @@ public class SoundTrigger { int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, @Nullable KeyphraseRecognitionExtra[] keyphraseExtras) { this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, keyphraseExtras, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } public KeyphraseRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, @Nullable KeyphraseRecognitionExtra[] keyphraseExtras, boolean recognitionStillActive) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); this.keyphraseExtras = keyphraseExtras != null ? keyphraseExtras : new KeyphraseRecognitionExtra[0]; } Loading Loading @@ -1713,11 +1746,12 @@ public class SoundTrigger { .build(); } byte[] data = in.readBlob(); boolean recognitionStillActive = in.readBoolean(); KeyphraseRecognitionExtra[] keyphraseExtras = in.createTypedArray(KeyphraseRecognitionExtra.CREATOR); return new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, keyphraseExtras); captureFormat, data, keyphraseExtras, recognitionStillActive); } @Override Loading @@ -1738,6 +1772,7 @@ public class SoundTrigger { dest.writeByte((byte)0); } dest.writeBlob(data); dest.writeBoolean(recognitionStillActive); dest.writeTypedArray(keyphraseExtras, flags); } Loading Loading @@ -1782,7 +1817,9 @@ public class SoundTrigger { (", encoding=" + captureFormat.getEncoding())) + ((captureFormat == null) ? "" : (", channelMask=" + captureFormat.getChannelMask())) + ", data=" + (data == null ? 0 : data.length) + "]"; + ", data=" + (data == null ? 0 : data.length) + ", recognitionStillActive=" + recognitionStillActive + "]"; } } Loading @@ -1798,9 +1835,17 @@ public class SoundTrigger { boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data); this(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, status == RECOGNITION_STATUS_GET_STATE_RESPONSE); } public GenericRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data, boolean recognitionStillActive) { super(status, soundModelHandle, captureAvailable, captureSession, captureDelayMs, capturePreambleMs, triggerInData, captureFormat, data, recognitionStillActive); } public static final @android.annotation.NonNull Parcelable.Creator<GenericRecognitionEvent> CREATOR Loading @@ -1818,7 +1863,8 @@ public class SoundTrigger { RecognitionEvent event = RecognitionEvent.fromParcel(in); return new GenericRecognitionEvent(event.status, event.soundModelHandle, event.captureAvailable, event.captureSession, event.captureDelayMs, event.capturePreambleMs, event.triggerInData, event.captureFormat, event.data); event.capturePreambleMs, event.triggerInData, event.captureFormat, event.data, event.recognitionStillActive); } @Override Loading
media/aidl/android/media/soundtrigger/RecognitionEvent.aidl +9 −0 Original line number Diff line number Diff line Loading @@ -48,4 +48,13 @@ parcelable RecognitionEvent { @nullable AudioConfig audioConfig; /** Additional data. */ byte[] data; /** * If true, recognition is still active after this event. * For compatibility with earlier versions of this data type, when the status field is set to * RecognitionStatus.FORCED, the value of this field should be treated as 'true', regardless of * the actual value. * When the status is RecognitionStatus.ABORTED or RecognitionStatus.FAILURE, this must be set * to false. */ boolean recognitionStillActive; }
media/aidl_api/android.media.soundtrigger.types/current/android/media/soundtrigger/RecognitionEvent.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -43,4 +43,5 @@ parcelable RecognitionEvent { boolean triggerInData; @nullable android.media.audio.common.AudioConfig audioConfig; byte[] data; boolean recognitionStillActive; }
services/core/java/com/android/server/soundtrigger_middleware/ConversionUtil.java +1 −0 Original line number Diff line number Diff line Loading @@ -310,6 +310,7 @@ class ConversionUtil { for (int i = 0; i < aidlEvent.data.length; ++i) { aidlEvent.data[i] = hidlEvent.data.get(i); } aidlEvent.recognitionStillActive = aidlEvent.status == RecognitionStatus.FORCED; return aidlEvent; } Loading