Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bb836bd authored by Ziyang Cheng's avatar Ziyang Cheng Committed by Android (Google) Code Review
Browse files

Merge "Deprecate the constructor of RecognitionConfig." into main

parents 6aba932d a70a0155
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -1892,8 +1892,7 @@ package android.hardware.soundtrigger {
  }

  @FlaggedApi("android.media.soundtrigger.manager_api") public static final class SoundTrigger.RecognitionConfig implements android.os.Parcelable {
    ctor @Deprecated public SoundTrigger.RecognitionConfig(boolean, boolean, @Nullable android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra[], @Nullable byte[], int);
    ctor public SoundTrigger.RecognitionConfig(boolean, boolean, @Nullable android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra[], @Nullable byte[]);
    ctor @Deprecated public SoundTrigger.RecognitionConfig(boolean, boolean, @Nullable android.hardware.soundtrigger.SoundTrigger.KeyphraseRecognitionExtra[], @Nullable byte[]);
  }

  public static class SoundTrigger.RecognitionEvent {
+11 −9
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import android.os.SharedMemory;
import android.system.ErrnoException;

import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Locale;
import java.util.UUID;
@@ -170,17 +171,18 @@ public class ConversionUtil {

    public static SoundTrigger.RecognitionConfig aidl2apiRecognitionConfig(
            RecognitionConfig aidlConfig) {
        var keyphrases =
            new SoundTrigger.KeyphraseRecognitionExtra[aidlConfig.phraseRecognitionExtras.length];
        int i = 0;
        var keyphrases = new ArrayList<SoundTrigger.KeyphraseRecognitionExtra>(
            aidlConfig.phraseRecognitionExtras.length);
        for (var extras : aidlConfig.phraseRecognitionExtras) {
            keyphrases[i++] = aidl2apiPhraseRecognitionExtra(extras);
        }
        return new SoundTrigger.RecognitionConfig(aidlConfig.captureRequested,
                false /** allowMultipleTriggers **/,
                keyphrases,
                Arrays.copyOf(aidlConfig.data, aidlConfig.data.length),
                aidl2apiAudioCapabilities(aidlConfig.audioCapabilities));
            keyphrases.add(aidl2apiPhraseRecognitionExtra(extras));
        }
        return new SoundTrigger.RecognitionConfig.Builder()
            .setCaptureRequested(aidlConfig.captureRequested)
            .setAllowMultipleTriggers(false)
            .setKeyphrases(keyphrases)
            .setData(Arrays.copyOf(aidlConfig.data, aidlConfig.data.length))
            .setAudioCapabilities(aidl2apiAudioCapabilities(aidlConfig.audioCapabilities))
            .build();
    }

    public static PhraseRecognitionExtra api2aidlPhraseRecognitionExtra(
+16 −17
Original line number Diff line number Diff line
@@ -1529,8 +1529,6 @@ public class SoundTrigger {
         * config that can be used by
         * {@link SoundTriggerModule#startRecognition(int, RecognitionConfig)}
         *
         * @deprecated should use builder-based constructor instead.
         *             TODO(b/368042125): remove this method.
         * @param captureRequested Whether the DSP should capture the trigger sound.
         * @param allowMultipleTriggers Whether the service should restart listening after the DSP
         *                              triggers.
@@ -1538,15 +1536,10 @@ public class SoundTrigger {
         * @param data Opaque data for use by system applications who know about voice engine
         *             internals, typically during enrollment.
         * @param audioCapabilities Bit field encoding of the AudioCapabilities.
         *
         * @hide
         */
        @Deprecated
        @SuppressWarnings("Todo")
        @TestApi
        public RecognitionConfig(boolean captureRequested, boolean allowMultipleTriggers,
                @SuppressLint("ArrayReturn") @Nullable KeyphraseRecognitionExtra[] keyphrases,
                @Nullable byte[] data, int audioCapabilities) {
        private RecognitionConfig(boolean captureRequested, boolean allowMultipleTriggers,
                @Nullable KeyphraseRecognitionExtra[] keyphrases, @Nullable byte[] data,
                int audioCapabilities) {
            this.mCaptureRequested = captureRequested;
            this.mAllowMultipleTriggers = allowMultipleTriggers;
            this.mKeyphrases = keyphrases != null ? keyphrases : new KeyphraseRecognitionExtra[0];
@@ -1558,6 +1551,7 @@ public class SoundTrigger {
         * Constructor for {@link RecognitionConfig} without audioCapabilities. The
         * audioCapabilities is set to 0.
         *
         * @deprecated Use {@link Builder} instead.
         * @param captureRequested Whether the DSP should capture the trigger sound.
         * @param allowMultipleTriggers Whether the service should restart listening after the DSP
         *                              triggers.
@@ -1567,10 +1561,10 @@ public class SoundTrigger {
         * @hide
         */
        @UnsupportedAppUsage
        @Deprecated
        @TestApi
        public RecognitionConfig(boolean captureRequested, boolean allowMultipleTriggers,
                @SuppressLint("ArrayReturn") @Nullable KeyphraseRecognitionExtra[] keyphrases,
                @Nullable byte[] data) {
                @Nullable KeyphraseRecognitionExtra[] keyphrases, @Nullable byte[] data) {
            this(captureRequested, allowMultipleTriggers, keyphrases, data, 0);
        }

@@ -1718,7 +1712,7 @@ public class SoundTrigger {

            /**
             * Sets capture requested state.
             * @param captureRequested The new requested state.
             * @param captureRequested Whether the DSP should capture the trigger sound.
             * @return the same Builder instance.
             */
            public @NonNull Builder setCaptureRequested(boolean captureRequested) {
@@ -1728,7 +1722,8 @@ public class SoundTrigger {

            /**
             * Sets allow multiple triggers state.
             * @param allowMultipleTriggers The new allow multiple triggers state.
             * @param allowMultipleTriggers Whether the service should restart listening after the
             *                              DSP triggers.
             * @return the same Builder instance.
             */
            public @NonNull Builder setAllowMultipleTriggers(boolean allowMultipleTriggers) {
@@ -1738,7 +1733,8 @@ public class SoundTrigger {

            /**
             * Sets the keyphrases field.
             * @param keyphrases The new keyphrases.
             * @param keyphrases The list of keyphrase specific data associated with this
             *                   recognition session.
             * @return the same Builder instance.
             */
            public @NonNull Builder setKeyphrases(
@@ -1749,7 +1745,9 @@ public class SoundTrigger {

            /**
             * Sets the data field.
             * @param data The new data.
             * @param data Opaque data provided to the DSP associated with this recognition session,
             *             which is used by system applications who know about voice engine
             *             internals, typically during enrollment.
             * @return the same Builder instance.
             */
            public @NonNull Builder setData(@Nullable byte[] data) {
@@ -1759,7 +1757,8 @@ public class SoundTrigger {

            /**
             * Sets the audio capabilities field.
             * @param audioCapabilities The new audio capabilities.
             * @param audioCapabilities The bit field encoding of the audio capabilities associated
             *                          with this recognition session.
             * @return the same Builder instance.
             */
            public @NonNull Builder setAudioCapabilities(int audioCapabilities) {
+16 −7
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.internal.infra.AndroidFuture;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
@@ -1513,10 +1514,11 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
                    "Recognition for the given keyphrase is not supported");
        }

        KeyphraseRecognitionExtra[] recognitionExtra = new KeyphraseRecognitionExtra[1];
        List<KeyphraseRecognitionExtra> recognitionExtra =
            new ArrayList<KeyphraseRecognitionExtra>(1);
        // TODO: Do we need to do something about the confidence level here?
        recognitionExtra[0] = new KeyphraseRecognitionExtra(mKeyphraseMetadata.getId(),
                mKeyphraseMetadata.getRecognitionModeFlags(), 0, new ConfidenceLevel[0]);
        recognitionExtra.add(new KeyphraseRecognitionExtra(mKeyphraseMetadata.getId(),
            mKeyphraseMetadata.getRecognitionModeFlags(), 0, new ConfidenceLevel[0]));
        boolean captureTriggerAudio =
                (recognitionFlags&RECOGNITION_FLAG_CAPTURE_TRIGGER_AUDIO) != 0;
        boolean allowMultipleTriggers =
@@ -1534,9 +1536,16 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
        int code;
        try {
            code = mSoundTriggerSession.startRecognition(
                    mKeyphraseMetadata.getId(), mLocale.toLanguageTag(), mInternalCallback,
                    new RecognitionConfig(captureTriggerAudio, allowMultipleTriggers,
                            recognitionExtra, data, audioCapabilities),
                mKeyphraseMetadata.getId(),
                mLocale.toLanguageTag(),
                mInternalCallback,
                new RecognitionConfig.Builder()
                    .setCaptureRequested(captureTriggerAudio)
                    .setAllowMultipleTriggers(allowMultipleTriggers)
                    .setKeyphrases(recognitionExtra)
                    .setData(data)
                    .setAudioCapabilities(audioCapabilities)
                    .build(),
                runInBatterySaver);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
+9 −4
Original line number Diff line number Diff line
@@ -323,9 +323,14 @@ public final class SoundTriggerDetector {

        int status;
        try {
            status = mSoundTriggerSession.startRecognition(mSoundModel,
                    mRecognitionCallback, new RecognitionConfig(captureTriggerAudio,
                            allowMultipleTriggers, null, null, audioCapabilities),
            status = mSoundTriggerSession.startRecognition(
                mSoundModel,
                mRecognitionCallback,
                new RecognitionConfig.Builder()
                    .setCaptureRequested(captureTriggerAudio)
                    .setAllowMultipleTriggers(allowMultipleTriggers)
                    .setAudioCapabilities(audioCapabilities)
                    .build(),
                runInBatterySaver);
        } catch (RemoteException e) {
            return false;
Loading