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

Commit e01b4f5f authored by Ajay Gopi's avatar Ajay Gopi Committed by Android (Google) Code Review
Browse files

Merge "Address API review comments on HotwordTrainingData." into main

parents 73588b3f 6b327020
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -12731,16 +12731,11 @@ package android.service.voice {
  public final class HotwordTrainingData implements android.os.Parcelable {
    method public int describeContents();
    method public static int getMaxTrainingDataSize();
    method public static int getMaxTrainingDataBytes();
    method public int getTimeoutStage();
    method @NonNull public java.util.List<android.service.voice.HotwordTrainingAudio> getTrainingAudios();
    method @NonNull public java.util.List<android.service.voice.HotwordTrainingAudio> getTrainingAudioList();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.service.voice.HotwordTrainingData> CREATOR;
    field public static final int TIMEOUT_STAGE_EARLY = 2; // 0x2
    field public static final int TIMEOUT_STAGE_LATE = 4; // 0x4
    field public static final int TIMEOUT_STAGE_MIDDLE = 3; // 0x3
    field public static final int TIMEOUT_STAGE_UNKNOWN = 0; // 0x0
    field public static final int TIMEOUT_STAGE_VERY_EARLY = 1; // 0x1
  }
  public static final class HotwordTrainingData.Builder {
@@ -12748,7 +12743,7 @@ package android.service.voice {
    method @NonNull public android.service.voice.HotwordTrainingData.Builder addTrainingAudio(@NonNull android.service.voice.HotwordTrainingAudio);
    method @NonNull public android.service.voice.HotwordTrainingData build();
    method @NonNull public android.service.voice.HotwordTrainingData.Builder setTimeoutStage(int);
    method @NonNull public android.service.voice.HotwordTrainingData.Builder setTrainingAudios(@NonNull java.util.List<android.service.voice.HotwordTrainingAudio>);
    method @NonNull public android.service.voice.HotwordTrainingData.Builder setTrainingAudioList(@NonNull java.util.List<android.service.voice.HotwordTrainingAudio>);
  }
  public interface SandboxedDetectionInitializer {
+12 −2
Original line number Diff line number Diff line
@@ -19,8 +19,12 @@ ListenerLast: android.telephony.satellite.SatelliteManager#stopSatelliteTransmis
    Listeners should always be at end of argument list (method `stopSatelliteTransmissionUpdates`)
ListenerLast: android.telephony.satellite.SatelliteManager#stopSatelliteTransmissionUpdates(android.telephony.satellite.SatelliteTransmissionUpdateCallback, java.util.concurrent.Executor, java.util.function.Consumer<java.lang.Integer>) parameter #2:
    Listeners should always be at end of argument list (method `stopSatelliteTransmissionUpdates`)


MissingGetterMatchingBuilder: android.service.voice.HotwordTrainingData.Builder#addTrainingAudio(android.service.voice.HotwordTrainingAudio):
    android.service.voice.HotwordTrainingData does not declare a `getTrainingAudios()` method matching method android.service.voice.HotwordTrainingData.Builder.addTrainingAudio(android.service.voice.HotwordTrainingAudio)
MissingGetterMatchingBuilder: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallViaAudioProcessing(boolean):
    android.telecom.CallScreeningService.CallResponse does not declare a `shouldScreenCallViaAudioProcessing()` method matching method android.telecom.CallScreeningService.CallResponse.Builder.setShouldScreenCallViaAudioProcessing(boolean)
MissingGetterMatchingBuilder: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String):
    android.telephony.mbms.DownloadRequest does not declare a `getServiceId()` method matching method android.telephony.mbms.DownloadRequest.Builder.setServiceId(String)
MissingNullability: android.media.soundtrigger.SoundTriggerDetectionService#onUnbind(android.content.Intent) parameter #0:
    Missing nullability on parameter `intent` in method `onUnbind`
MissingNullability: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context) parameter #0:
@@ -327,8 +331,12 @@ UnflaggedApi: android.service.voice.HotwordTrainingData#describeContents():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.describeContents()
UnflaggedApi: android.service.voice.HotwordTrainingData#getMaxTrainingDataSize():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getMaxTrainingDataSize()
UnflaggedApi: android.service.voice.HotwordTrainingData#getMaxTrainingDataBytes():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getMaxTrainingDataBytes()
UnflaggedApi: android.service.voice.HotwordTrainingData#getTimeoutStage():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getTimeoutStage()
UnflaggedApi: android.service.voice.HotwordTrainingData#getTrainingAudioList():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getTrainingAudioList()
UnflaggedApi: android.service.voice.HotwordTrainingData#getTrainingAudios():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getTrainingAudios()
UnflaggedApi: android.service.voice.HotwordTrainingData#writeToParcel(android.os.Parcel, int):
@@ -343,6 +351,8 @@ UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#build():
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.build()
UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#setTimeoutStage(int):
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.setTimeoutStage(int)
UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#setTrainingAudioList(java.util.List<android.service.voice.HotwordTrainingAudio>):
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.setTrainingAudioList(java.util.List<android.service.voice.HotwordTrainingAudio>)
UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#setTrainingAudios(java.util.List<android.service.voice.HotwordTrainingAudio>):
    New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.setTrainingAudios(java.util.List<android.service.voice.HotwordTrainingAudio>)
UnflaggedApi: android.telecom.StreamingCall#EXTRA_CALL_ID:
+42 −112
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package android.service.voice;

import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcel;
@@ -34,7 +33,7 @@ import java.util.List;
 * Contains training data related to hotword detection service.
 *
 * <p>The constructed object's size must be within
 * {@link HotwordTrainingData#getMaxTrainingDataSize()} or an
 * {@link HotwordTrainingData#getMaxTrainingDataBytes()} or an
 * {@link IllegalArgumentException} will be thrown on construction. Size of the object is calculated
 * by converting object to a {@link Parcel} and using the {@link Parcel#dataSize()}.
 *
@@ -49,63 +48,26 @@ import java.util.List;
        genToString = true)
@SystemApi
public final class HotwordTrainingData implements Parcelable {
    /** Max size for hotword training data. */
    public static int getMaxTrainingDataSize() {
    /** Max size for hotword training data in bytes. */
    public static int getMaxTrainingDataBytes() {
        return 1024 * 1024; // 1 MB;
    }

    /** The list containing hotword audio that is useful for training. */
    @NonNull
    @DataClass.PluralOf("trainingAudio")
    private final List<HotwordTrainingAudio> mTrainingAudios;
    private final List<HotwordTrainingAudio> mTrainingAudioList;

    private static List<HotwordTrainingAudio> defaultTrainingAudios() {
    private static List<HotwordTrainingAudio> defaultTrainingAudioList() {
        return Collections.emptyList();
    }

    /** Timeout stage is unknown. */
    public static final int TIMEOUT_STAGE_UNKNOWN = 0;

    /**
     * Timeout stage value that represents that the model timed out very early while detecting
     * hotword.
     */
    public static final int TIMEOUT_STAGE_VERY_EARLY = 1;

    /**
     * Timeout stage value that represents that the model timed out early while detecting
     * hotword.
     */
    public static final int TIMEOUT_STAGE_EARLY = 2;

    /**
     * Timeout stage value that represents that the model timed out in the middle while detecting
     * hotword.
     */
    public static final int TIMEOUT_STAGE_MIDDLE = 3;

    /**
     * Timeout stage value that represents that the model timed out late while detecting
     * hotword.
     */
    public static final int TIMEOUT_STAGE_LATE = 4;

    /** @hide */
    @IntDef(prefix = {"TIMEOUT_STAGE"}, value = {
            TIMEOUT_STAGE_UNKNOWN,
            TIMEOUT_STAGE_VERY_EARLY,
            TIMEOUT_STAGE_EARLY,
            TIMEOUT_STAGE_MIDDLE,
            TIMEOUT_STAGE_LATE,
    })
    @interface HotwordTimeoutStage {}

    /** Stage when timeout occurred. */
    @HotwordTimeoutStage
    /** App-defined stage when hotword model timed-out while running.
     * <p> Returns 0 if unset. */
    private final int mTimeoutStage;

    private static int defaultTimeoutStage() {
        return TIMEOUT_STAGE_UNKNOWN;
        return 0;
    }

    private void onConstructed() {
@@ -115,10 +77,10 @@ public final class HotwordTrainingData implements Parcelable {
        int dataSizeBytes = parcel.dataSize();
        parcel.recycle();
        Preconditions.checkArgument(
                dataSizeBytes < getMaxTrainingDataSize(),
                dataSizeBytes < getMaxTrainingDataBytes(),
                TextUtils.formatSimple(
                        "Hotword training data of size %s exceeds size limit of %s!",
                        dataSizeBytes, getMaxTrainingDataSize()));
                        "Hotword training data of size %s exceeds size limit of %s bytes!",
                        dataSizeBytes, getMaxTrainingDataBytes()));
    }


@@ -136,46 +98,14 @@ public final class HotwordTrainingData implements Parcelable {
    //@formatter:off


    /** @hide */
    @IntDef(prefix = "TIMEOUT_STAGE_", value = {
        TIMEOUT_STAGE_UNKNOWN,
        TIMEOUT_STAGE_VERY_EARLY,
        TIMEOUT_STAGE_EARLY,
        TIMEOUT_STAGE_MIDDLE,
        TIMEOUT_STAGE_LATE
    })
    @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE)
    @DataClass.Generated.Member
    public @interface TimeoutStage {}

    /** @hide */
    @DataClass.Generated.Member
    public static String timeoutStageToString(@TimeoutStage int value) {
        switch (value) {
            case TIMEOUT_STAGE_UNKNOWN:
                    return "TIMEOUT_STAGE_UNKNOWN";
            case TIMEOUT_STAGE_VERY_EARLY:
                    return "TIMEOUT_STAGE_VERY_EARLY";
            case TIMEOUT_STAGE_EARLY:
                    return "TIMEOUT_STAGE_EARLY";
            case TIMEOUT_STAGE_MIDDLE:
                    return "TIMEOUT_STAGE_MIDDLE";
            case TIMEOUT_STAGE_LATE:
                    return "TIMEOUT_STAGE_LATE";
            default: return Integer.toHexString(value);
        }
    }

    @DataClass.Generated.Member
    /* package-private */ HotwordTrainingData(
            @NonNull List<HotwordTrainingAudio> trainingAudios,
            @HotwordTimeoutStage int timeoutStage) {
        this.mTrainingAudios = trainingAudios;
            @NonNull List<HotwordTrainingAudio> trainingAudioList,
            int timeoutStage) {
        this.mTrainingAudioList = trainingAudioList;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mTrainingAudios);
                NonNull.class, null, mTrainingAudioList);
        this.mTimeoutStage = timeoutStage;
        com.android.internal.util.AnnotationValidations.validate(
                HotwordTimeoutStage.class, null, mTimeoutStage);

        onConstructed();
    }
@@ -184,15 +114,16 @@ public final class HotwordTrainingData implements Parcelable {
     * The list containing hotword audio that is useful for training.
     */
    @DataClass.Generated.Member
    public @NonNull List<HotwordTrainingAudio> getTrainingAudios() {
        return mTrainingAudios;
    public @NonNull List<HotwordTrainingAudio> getTrainingAudioList() {
        return mTrainingAudioList;
    }

    /**
     * Stage when timeout occurred.
     * App-defined stage when hotword model timed-out while running.
     * <p> Returns 0 if unset.
     */
    @DataClass.Generated.Member
    public @HotwordTimeoutStage int getTimeoutStage() {
    public int getTimeoutStage() {
        return mTimeoutStage;
    }

@@ -203,7 +134,7 @@ public final class HotwordTrainingData implements Parcelable {
        // String fieldNameToString() { ... }

        return "HotwordTrainingData { " +
                "trainingAudios = " + mTrainingAudios + ", " +
                "trainingAudioList = " + mTrainingAudioList + ", " +
                "timeoutStage = " + mTimeoutStage +
        " }";
    }
@@ -221,7 +152,7 @@ public final class HotwordTrainingData implements Parcelable {
        HotwordTrainingData that = (HotwordTrainingData) o;
        //noinspection PointlessBooleanExpression
        return true
                && java.util.Objects.equals(mTrainingAudios, that.mTrainingAudios)
                && java.util.Objects.equals(mTrainingAudioList, that.mTrainingAudioList)
                && mTimeoutStage == that.mTimeoutStage;
    }

@@ -232,7 +163,7 @@ public final class HotwordTrainingData implements Parcelable {
        // int fieldNameHashCode() { ... }

        int _hash = 1;
        _hash = 31 * _hash + java.util.Objects.hashCode(mTrainingAudios);
        _hash = 31 * _hash + java.util.Objects.hashCode(mTrainingAudioList);
        _hash = 31 * _hash + mTimeoutStage;
        return _hash;
    }
@@ -243,7 +174,7 @@ public final class HotwordTrainingData implements Parcelable {
        // You can override field parcelling by defining methods like:
        // void parcelFieldName(Parcel dest, int flags) { ... }

        dest.writeParcelableList(mTrainingAudios, flags);
        dest.writeParcelableList(mTrainingAudioList, flags);
        dest.writeInt(mTimeoutStage);
    }

@@ -258,16 +189,14 @@ public final class HotwordTrainingData implements Parcelable {
        // You can override field unparcelling by defining methods like:
        // static FieldType unparcelFieldName(Parcel in) { ... }

        List<HotwordTrainingAudio> trainingAudios = new ArrayList<>();
        in.readParcelableList(trainingAudios, HotwordTrainingAudio.class.getClassLoader());
        List<HotwordTrainingAudio> trainingAudioList = new ArrayList<>();
        in.readParcelableList(trainingAudioList, HotwordTrainingAudio.class.getClassLoader());
        int timeoutStage = in.readInt();

        this.mTrainingAudios = trainingAudios;
        this.mTrainingAudioList = trainingAudioList;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mTrainingAudios);
                NonNull.class, null, mTrainingAudioList);
        this.mTimeoutStage = timeoutStage;
        com.android.internal.util.AnnotationValidations.validate(
                HotwordTimeoutStage.class, null, mTimeoutStage);

        onConstructed();
    }
@@ -293,8 +222,8 @@ public final class HotwordTrainingData implements Parcelable {
    @DataClass.Generated.Member
    public static final class Builder {

        private @NonNull List<HotwordTrainingAudio> mTrainingAudios;
        private @HotwordTimeoutStage int mTimeoutStage;
        private @NonNull List<HotwordTrainingAudio> mTrainingAudioList;
        private int mTimeoutStage;

        private long mBuilderFieldsSet = 0L;

@@ -305,26 +234,27 @@ public final class HotwordTrainingData implements Parcelable {
         * The list containing hotword audio that is useful for training.
         */
        @DataClass.Generated.Member
        public @NonNull Builder setTrainingAudios(@NonNull List<HotwordTrainingAudio> value) {
        public @NonNull Builder setTrainingAudioList(@NonNull List<HotwordTrainingAudio> value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x1;
            mTrainingAudios = value;
            mTrainingAudioList = value;
            return this;
        }

        /** @see #setTrainingAudios */
        /** @see #setTrainingAudioList */
        @DataClass.Generated.Member
        public @NonNull Builder addTrainingAudio(@NonNull HotwordTrainingAudio value) {
            if (mTrainingAudios == null) setTrainingAudios(new ArrayList<>());
            mTrainingAudios.add(value);
            if (mTrainingAudioList == null) setTrainingAudioList(new ArrayList<>());
            mTrainingAudioList.add(value);
            return this;
        }

        /**
         * Stage when timeout occurred.
         * App-defined stage when hotword model timed-out while running.
         * <p> Returns 0 if unset.
         */
        @DataClass.Generated.Member
        public @NonNull Builder setTimeoutStage(@HotwordTimeoutStage int value) {
        public @NonNull Builder setTimeoutStage(int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x2;
            mTimeoutStage = value;
@@ -337,13 +267,13 @@ public final class HotwordTrainingData implements Parcelable {
            mBuilderFieldsSet |= 0x4; // Mark builder used

            if ((mBuilderFieldsSet & 0x1) == 0) {
                mTrainingAudios = defaultTrainingAudios();
                mTrainingAudioList = defaultTrainingAudioList();
            }
            if ((mBuilderFieldsSet & 0x2) == 0) {
                mTimeoutStage = defaultTimeoutStage();
            }
            HotwordTrainingData o = new HotwordTrainingData(
                    mTrainingAudios,
                    mTrainingAudioList,
                    mTimeoutStage);
            return o;
        }
@@ -357,10 +287,10 @@ public final class HotwordTrainingData implements Parcelable {
    }

    @DataClass.Generated(
            time = 1693313864628L,
            time = 1696092128091L,
            codegenVersion = "1.0.23",
            sourceFile = "frameworks/base/core/java/android/service/voice/HotwordTrainingData.java",
            inputSignatures = "private final @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"trainingAudio\") java.util.List<android.service.voice.HotwordTrainingAudio> mTrainingAudios\npublic static final  int TIMEOUT_STAGE_UNKNOWN\npublic static final  int TIMEOUT_STAGE_VERY_EARLY\npublic static final  int TIMEOUT_STAGE_EARLY\npublic static final  int TIMEOUT_STAGE_MIDDLE\npublic static final  int TIMEOUT_STAGE_LATE\nprivate final @android.service.voice.HotwordTrainingData.HotwordTimeoutStage int mTimeoutStage\npublic static  int getMaxTrainingDataSize()\nprivate static  java.util.List<android.service.voice.HotwordTrainingAudio> defaultTrainingAudios()\nprivate static  int defaultTimeoutStage()\nprivate  void onConstructed()\nclass HotwordTrainingData extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
            inputSignatures = "private final @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"trainingAudio\") java.util.List<android.service.voice.HotwordTrainingAudio> mTrainingAudioList\nprivate final  int mTimeoutStage\npublic static  int getMaxTrainingDataBytes()\nprivate static  java.util.List<android.service.voice.HotwordTrainingAudio> defaultTrainingAudioList()\nprivate static  int defaultTimeoutStage()\nprivate  void onConstructed()\nclass HotwordTrainingData extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
    @Deprecated
    private void __metadata() {}