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

Commit be734000 authored by Charles Chen's avatar Charles Chen Committed by charleschen
Browse files

Remove flaggedApi for APIs in isolated process

Per b/301491148 and b/325678077, isolated process are not allowed to
access flags as the flagging infra uses content provider api. As
suggested from the trunk stable team, we are removing those APIs.

Bug: 325678077 330735044
Test: atest CtsVoiceInteractionTestCases
Flag: EXEMPT Isolated process cannot use FlaggedAPI annotation
Change-Id: I0c790648f5db969c30792d2921ccc580af72b4e2
parent dc05136f
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -13483,12 +13483,12 @@ package android.service.voice {
    method public static int getMaxBundleSize();
    method public static int getMaxHotwordPhraseId();
    method public static int getMaxScore();
    method @FlaggedApi("android.service.voice.flags.allow_speaker_id_egress") public static int getMaxSpeakerId();
    method public static int getMaxSpeakerId();
    method @Nullable public android.media.MediaSyncEvent getMediaSyncEvent();
    method public int getPersonalizedScore();
    method public int getProximity();
    method public int getScore();
    method @FlaggedApi("android.service.voice.flags.allow_speaker_id_egress") public int getSpeakerId();
    method public int getSpeakerId();
    method public boolean isHotwordDetectionPersonalized();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field public static final int AUDIO_CHANNEL_UNSET = -1; // 0xffffffff
@@ -13522,7 +13522,7 @@ package android.service.voice {
    method @NonNull public android.service.voice.HotwordDetectedResult.Builder setMediaSyncEvent(@NonNull android.media.MediaSyncEvent);
    method @NonNull public android.service.voice.HotwordDetectedResult.Builder setPersonalizedScore(int);
    method @NonNull public android.service.voice.HotwordDetectedResult.Builder setScore(int);
    method @FlaggedApi("android.service.voice.flags.allow_speaker_id_egress") @NonNull public android.service.voice.HotwordDetectedResult.Builder setSpeakerId(int);
    method @NonNull public android.service.voice.HotwordDetectedResult.Builder setSpeakerId(int);
  }
  public abstract class HotwordDetectionService extends android.app.Service implements android.service.voice.SandboxedDetectionInitializer {
@@ -13621,7 +13621,7 @@ package android.service.voice {
    field public static final int ERROR_CODE_UNKNOWN = 0; // 0x0
  }
  @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final class VisualQueryAttentionResult implements android.os.Parcelable {
  public final class VisualQueryAttentionResult implements android.os.Parcelable {
    method public int describeContents();
    method @IntRange(from=1, to=100) public int getEngagementLevel();
    method public int getInteractionIntention();
@@ -13638,7 +13638,7 @@ package android.service.voice {
    method @NonNull public android.service.voice.VisualQueryAttentionResult.Builder setInteractionIntention(int);
  }
  @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public final class VisualQueryDetectedResult implements android.os.Parcelable {
  public final class VisualQueryDetectedResult implements android.os.Parcelable {
    method public int describeContents();
    method @Nullable public byte[] getAccessibilityDetectionData();
    method public static int getMaxSpeakerId();
@@ -13660,16 +13660,16 @@ package android.service.voice {
    ctor public VisualQueryDetectionService();
    method public final void finishQuery() throws java.lang.IllegalStateException;
    method public final void gainedAttention();
    method @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final void gainedAttention(@NonNull android.service.voice.VisualQueryAttentionResult);
    method public final void gainedAttention(@NonNull android.service.voice.VisualQueryAttentionResult);
    method public final void lostAttention();
    method @FlaggedApi("android.service.voice.flags.allow_various_attention_types") public final void lostAttention(int);
    method public final void lostAttention(int);
    method @Nullable public android.os.IBinder onBind(@NonNull android.content.Intent);
    method public void onStartDetection();
    method public void onStopDetection();
    method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer);
    method public final void rejectQuery() throws java.lang.IllegalStateException;
    method public final void streamQuery(@NonNull String) throws java.lang.IllegalStateException;
    method @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public final void streamQuery(@NonNull android.service.voice.VisualQueryDetectedResult);
    method public final void streamQuery(@NonNull android.service.voice.VisualQueryDetectedResult);
    field public static final String SERVICE_INTERFACE = "android.service.voice.VisualQueryDetectionService";
  }
@@ -13689,10 +13689,10 @@ package android.service.voice {
  }
  public class VisualQueryDetector {
    method @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public void clearAccessibilityDetectionEnabledListener();
    method public void clearAccessibilityDetectionEnabledListener();
    method public void destroy();
    method @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public boolean isAccessibilityDetectionEnabled();
    method @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public void setAccessibilityDetectionEnabledListener(@NonNull java.util.function.Consumer<java.lang.Boolean>);
    method public boolean isAccessibilityDetectionEnabled();
    method public void setAccessibilityDetectionEnabledListener(@NonNull java.util.function.Consumer<java.lang.Boolean>);
    method @RequiresPermission(allOf={android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO}) public boolean startRecognition();
    method @RequiresPermission(allOf={android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO}) public boolean stopRecognition();
    method public void updateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory);
@@ -13701,7 +13701,7 @@ package android.service.voice {
  public static interface VisualQueryDetector.Callback {
    method public void onFailure(@NonNull android.service.voice.VisualQueryDetectionServiceFailure);
    method public void onQueryDetected(@NonNull String);
    method @FlaggedApi("android.service.voice.flags.allow_complex_results_egress_from_vqds") public default void onQueryDetected(@NonNull android.service.voice.VisualQueryDetectedResult);
    method public default void onQueryDetected(@NonNull android.service.voice.VisualQueryDetectedResult);
    method public void onQueryFinished();
    method public void onQueryRejected();
    method public void onUnknownFailure(@NonNull String);
+6 −7
Original line number Diff line number Diff line
@@ -16,10 +16,10 @@

package android.service.voice;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.content.res.Resources;
import android.media.AudioRecord;
@@ -27,7 +27,6 @@ import android.media.MediaSyncEvent;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.PersistableBundle;
import android.service.voice.flags.Flags;

import com.android.internal.R;
import com.android.internal.util.DataClass;
@@ -142,7 +141,7 @@ public final class HotwordDetectedResult implements Parcelable {
    }

    /** Maximum number of active speaker ids. **/
    @FlaggedApi(Flags.FLAG_ALLOW_SPEAKER_ID_EGRESS)
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public static int getMaxSpeakerId() {
        return 15;
    }
@@ -666,7 +665,7 @@ public final class HotwordDetectedResult implements Parcelable {
     * <p>Only values between 0 and {@link #getMaxSpeakerId} (inclusive) are accepted.
     */
    @DataClass.Generated.Member
    @FlaggedApi(Flags.FLAG_ALLOW_SPEAKER_ID_EGRESS)
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public int getSpeakerId() {
        return mSpeakerId;
    }
@@ -988,7 +987,7 @@ public final class HotwordDetectedResult implements Parcelable {
         * <p>Only values between 0 and {@link #getMaxSpeakerId} (inclusive) are accepted.
         */
        @DataClass.Generated.Member
        @FlaggedApi(Flags.FLAG_ALLOW_SPEAKER_ID_EGRESS)
        @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
        public @NonNull Builder setSpeakerId(int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x1;
@@ -1232,10 +1231,10 @@ public final class HotwordDetectedResult implements Parcelable {
    }

    @DataClass.Generated(
            time = 1709773165191L,
            time = 1710918729668L,
            codegenVersion = "1.0.23",
            sourceFile = "frameworks/base/core/java/android/service/voice/HotwordDetectedResult.java",
            inputSignatures = "public static final  int CONFIDENCE_LEVEL_NONE\npublic static final  int CONFIDENCE_LEVEL_LOW\npublic static final  int CONFIDENCE_LEVEL_LOW_MEDIUM\npublic static final  int CONFIDENCE_LEVEL_MEDIUM\npublic static final  int CONFIDENCE_LEVEL_MEDIUM_HIGH\npublic static final  int CONFIDENCE_LEVEL_HIGH\npublic static final  int CONFIDENCE_LEVEL_VERY_HIGH\npublic static final  int HOTWORD_OFFSET_UNSET\npublic static final  int AUDIO_CHANNEL_UNSET\npublic static final  int BACKGROUND_AUDIO_POWER_UNSET\nprivate static final  int LIMIT_HOTWORD_OFFSET_MAX_VALUE\nprivate static final  int LIMIT_AUDIO_CHANNEL_MAX_VALUE\nprivate static final  java.lang.String EXTRA_PROXIMITY\npublic static final  int PROXIMITY_UNKNOWN\npublic static final  int PROXIMITY_NEAR\npublic static final  int PROXIMITY_FAR\nprivate final  int mSpeakerId\nprivate final @android.service.voice.HotwordDetectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate  int mHotwordOffsetMillis\nprivate  int mHotwordDurationMillis\nprivate  int mAudioChannel\nprivate  boolean mHotwordDetectionPersonalized\nprivate final  int mScore\nprivate final  int mPersonalizedScore\nprivate final  int mHotwordPhraseId\nprivate final @android.annotation.NonNull java.util.List<android.service.voice.HotwordAudioStream> mAudioStreams\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static  int sMaxBundleSize\nprivate final  int mBackgroundAudioPower\nprivate static  int defaultSpeakerId()\npublic static @android.annotation.FlaggedApi int getMaxSpeakerId()\nprivate static  int defaultConfidenceLevel()\nprivate static  int defaultScore()\nprivate static  int defaultPersonalizedScore()\npublic static  int getMaxScore()\nprivate static  int defaultHotwordPhraseId()\npublic static  int getMaxHotwordPhraseId()\nprivate static  java.util.List<android.service.voice.HotwordAudioStream> defaultAudioStreams()\nprivate static  android.os.PersistableBundle defaultExtras()\npublic static  int getMaxBundleSize()\npublic @android.annotation.Nullable android.media.MediaSyncEvent getMediaSyncEvent()\nprivate static  int defaultBackgroundAudioPower()\npublic static  int getMaxBackgroundAudioPower()\npublic static  int getParcelableSize(android.os.Parcelable)\npublic static  int getUsageSize(android.service.voice.HotwordDetectedResult)\nprivate static  int bitCount(long)\nprivate  void onConstructed()\npublic @android.annotation.NonNull java.util.List<android.service.voice.HotwordAudioStream> getAudioStreams()\npublic  void setProximity(double)\npublic @android.service.voice.HotwordDetectedResult.ProximityValue int getProximity()\nprivate @android.service.voice.HotwordDetectedResult.ProximityValue int convertToProximityLevel(double)\npublic  android.service.voice.HotwordDetectedResult.Builder buildUpon()\nclass HotwordDetectedResult extends java.lang.Object implements [android.os.Parcelable]\npublic @android.annotation.NonNull android.service.voice.HotwordDetectedResult.Builder setAudioStreams(java.util.List<android.service.voice.HotwordAudioStream>)\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)\npublic @android.annotation.NonNull android.service.voice.HotwordDetectedResult.Builder setAudioStreams(java.util.List<android.service.voice.HotwordAudioStream>)\nclass BaseBuilder extends java.lang.Object implements []")
            inputSignatures = "public static final  int CONFIDENCE_LEVEL_NONE\npublic static final  int CONFIDENCE_LEVEL_LOW\npublic static final  int CONFIDENCE_LEVEL_LOW_MEDIUM\npublic static final  int CONFIDENCE_LEVEL_MEDIUM\npublic static final  int CONFIDENCE_LEVEL_MEDIUM_HIGH\npublic static final  int CONFIDENCE_LEVEL_HIGH\npublic static final  int CONFIDENCE_LEVEL_VERY_HIGH\npublic static final  int HOTWORD_OFFSET_UNSET\npublic static final  int AUDIO_CHANNEL_UNSET\npublic static final  int BACKGROUND_AUDIO_POWER_UNSET\nprivate static final  int LIMIT_HOTWORD_OFFSET_MAX_VALUE\nprivate static final  int LIMIT_AUDIO_CHANNEL_MAX_VALUE\nprivate static final  java.lang.String EXTRA_PROXIMITY\npublic static final  int PROXIMITY_UNKNOWN\npublic static final  int PROXIMITY_NEAR\npublic static final  int PROXIMITY_FAR\nprivate final  int mSpeakerId\nprivate final @android.service.voice.HotwordDetectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate  int mHotwordOffsetMillis\nprivate  int mHotwordDurationMillis\nprivate  int mAudioChannel\nprivate  boolean mHotwordDetectionPersonalized\nprivate final  int mScore\nprivate final  int mPersonalizedScore\nprivate final  int mHotwordPhraseId\nprivate final @android.annotation.NonNull java.util.List<android.service.voice.HotwordAudioStream> mAudioStreams\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static  int sMaxBundleSize\nprivate final  int mBackgroundAudioPower\nprivate static  int defaultSpeakerId()\npublic static @android.annotation.SuppressLint int getMaxSpeakerId()\nprivate static  int defaultConfidenceLevel()\nprivate static  int defaultScore()\nprivate static  int defaultPersonalizedScore()\npublic static  int getMaxScore()\nprivate static  int defaultHotwordPhraseId()\npublic static  int getMaxHotwordPhraseId()\nprivate static  java.util.List<android.service.voice.HotwordAudioStream> defaultAudioStreams()\nprivate static  android.os.PersistableBundle defaultExtras()\npublic static  int getMaxBundleSize()\npublic @android.annotation.Nullable android.media.MediaSyncEvent getMediaSyncEvent()\nprivate static  int defaultBackgroundAudioPower()\npublic static  int getMaxBackgroundAudioPower()\npublic static  int getParcelableSize(android.os.Parcelable)\npublic static  int getUsageSize(android.service.voice.HotwordDetectedResult)\nprivate static  int bitCount(long)\nprivate  void onConstructed()\npublic @android.annotation.NonNull java.util.List<android.service.voice.HotwordAudioStream> getAudioStreams()\npublic  void setProximity(double)\npublic @android.service.voice.HotwordDetectedResult.ProximityValue int getProximity()\nprivate @android.service.voice.HotwordDetectedResult.ProximityValue int convertToProximityLevel(double)\npublic  android.service.voice.HotwordDetectedResult.Builder buildUpon()\nclass HotwordDetectedResult extends java.lang.Object implements [android.os.Parcelable]\npublic @android.annotation.NonNull android.service.voice.HotwordDetectedResult.Builder setAudioStreams(java.util.List<android.service.voice.HotwordAudioStream>)\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)\npublic @android.annotation.NonNull android.service.voice.HotwordDetectedResult.Builder setAudioStreams(java.util.List<android.service.voice.HotwordAudioStream>)\nclass BaseBuilder extends java.lang.Object implements []")
    @Deprecated
    private void __metadata() {}

+32 −13
Original line number Diff line number Diff line
@@ -16,15 +16,14 @@

package android.service.voice;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
import android.os.Parcel;
import android.os.Parcelable;
import android.service.voice.flags.Flags;

import com.android.internal.util.DataClass;

@@ -45,13 +44,15 @@ import java.lang.annotation.RetentionPolicy;
        genToString = true
)
@SystemApi
@FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
@SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
public final class VisualQueryAttentionResult implements Parcelable {

    /** Intention type to allow the system to listen to audio-visual query interactions. */
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public static final int INTERACTION_INTENTION_AUDIO_VISUAL = 0;

    /** Intention type to allow the system to listen to visual accessibility query interactions. */
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public static final int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY = 1;

    /**
@@ -94,6 +95,16 @@ public final class VisualQueryAttentionResult implements Parcelable {
                .setEngagementLevel(mEngagementLevel);
    }

    /**
     * TODO(b/301491148): Remove suppressLint on generated API when fixed or sdk finalized.
     * Codegen does not support flaggedAPI, so needs to review manually on the generated code
     * and makes sure the following:
     *     1. SuppressLint is added back to the API after each run of codegen
     *     2. No unwanted method is modified due to suppressLint annotation
     *
     *  Run $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/voice/VisualQueryAttentionResult.java
     *  for codegen on new APIs.
     */



@@ -159,6 +170,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
     * to after the attention signal is gained.
     */
    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public @InteractionIntention int getInteractionIntention() {
        return mInteractionIntention;
    }
@@ -176,6 +188,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
     * presentation of the device attention UI.
     */
    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public @IntRange(from = 1, to = 100) int getEngagementLevel() {
        return mEngagementLevel;
    }
@@ -187,7 +200,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
        // String fieldNameToString() { ... }

        return "VisualQueryAttentionResult { " +
                "interactionIntention = " + interactionIntentionToString(mInteractionIntention) + ", " +
                "interactionIntention = " + mInteractionIntention + ", " +
                "engagementLevel = " + mEngagementLevel +
        " }";
    }
@@ -223,6 +236,7 @@ public final class VisualQueryAttentionResult implements Parcelable {

    @Override
    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public void writeToParcel(@NonNull Parcel dest, int flags) {
        // You can override field parcelling by defining methods like:
        // void parcelFieldName(Parcel dest, int flags) { ... }
@@ -233,6 +247,7 @@ public final class VisualQueryAttentionResult implements Parcelable {

    @Override
    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public int describeContents() { return 0; }

    /** @hide */
@@ -246,7 +261,6 @@ public final class VisualQueryAttentionResult implements Parcelable {
        int engagementLevel = in.readInt();

        this.mInteractionIntention = interactionIntention;

        if (!(mInteractionIntention == INTERACTION_INTENTION_AUDIO_VISUAL)
                && !(mInteractionIntention == INTERACTION_INTENTION_VISUAL_ACCESSIBILITY)) {
            throw new java.lang.IllegalArgumentException(
@@ -254,7 +268,6 @@ public final class VisualQueryAttentionResult implements Parcelable {
                            + "INTERACTION_INTENTION_AUDIO_VISUAL(" + INTERACTION_INTENTION_AUDIO_VISUAL + "), "
                            + "INTERACTION_INTENTION_VISUAL_ACCESSIBILITY(" + INTERACTION_INTENTION_VISUAL_ACCESSIBILITY + ")");
        }

        this.mEngagementLevel = engagementLevel;
        com.android.internal.util.AnnotationValidations.validate(
                IntRange.class, null, mEngagementLevel,
@@ -265,6 +278,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
    }

    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public static final @NonNull Parcelable.Creator<VisualQueryAttentionResult> CREATOR
            = new Parcelable.Creator<VisualQueryAttentionResult>() {
        @Override
@@ -283,6 +297,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
     */
    @SuppressWarnings("WeakerAccess")
    @DataClass.Generated.Member
    @SuppressLint("UnflaggedApi")
    public static final class Builder {

        private @InteractionIntention int mInteractionIntention;
@@ -290,6 +305,7 @@ public final class VisualQueryAttentionResult implements Parcelable {

        private long mBuilderFieldsSet = 0L;

        @SuppressLint("UnflaggedApi")
        public Builder() {
        }

@@ -298,6 +314,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
         * to after the attention signal is gained.
         */
        @DataClass.Generated.Member
        @SuppressLint("UnflaggedApi")
        public @NonNull Builder setInteractionIntention(@InteractionIntention int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x1;
@@ -318,6 +335,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
         * presentation of the device attention UI.
         */
        @DataClass.Generated.Member
        @SuppressLint("UnflaggedApi")
        public @NonNull Builder setEngagementLevel(@IntRange(from = 1, to = 100) int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x2;
@@ -326,6 +344,7 @@ public final class VisualQueryAttentionResult implements Parcelable {
        }

        /** Builds the instance. This builder should not be touched after calling this! */
        @SuppressLint("UnflaggedApi")
        public @NonNull VisualQueryAttentionResult build() {
            checkNotUsed();
            mBuilderFieldsSet |= 0x4; // Mark builder used
@@ -351,10 +370,10 @@ public final class VisualQueryAttentionResult implements Parcelable {
    }

    @DataClass.Generated(
            time = 1707773691880L,
            time = 1710979945907L,
            codegenVersion = "1.0.23",
            sourceFile = "frameworks/base/core/java/android/service/voice/VisualQueryAttentionResult.java",
            inputSignatures = "public static final  int INTERACTION_INTENTION_AUDIO_VISUAL\npublic static final  int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY\nprivate final @android.service.voice.VisualQueryAttentionResult.InteractionIntention int mInteractionIntention\nprivate final @android.annotation.IntRange int mEngagementLevel\nprivate static @android.service.voice.VisualQueryAttentionResult.InteractionIntention int defaultInteractionIntention()\nprivate static  int defaultEngagementLevel()\npublic  android.service.voice.VisualQueryAttentionResult.Builder buildUpon()\nclass VisualQueryAttentionResult 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 = "public static final @android.annotation.SuppressLint int INTERACTION_INTENTION_AUDIO_VISUAL\npublic static final @android.annotation.SuppressLint int INTERACTION_INTENTION_VISUAL_ACCESSIBILITY\nprivate final @android.service.voice.VisualQueryAttentionResult.InteractionIntention int mInteractionIntention\nprivate final @android.annotation.IntRange int mEngagementLevel\nprivate static @android.service.voice.VisualQueryAttentionResult.InteractionIntention int defaultInteractionIntention()\nprivate static  int defaultEngagementLevel()\npublic  android.service.voice.VisualQueryAttentionResult.Builder buildUpon()\nclass VisualQueryAttentionResult 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() {}

+27 −5

File changed.

Preview size limit exceeded, changes collapsed.

+11 −22
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package android.service.voice;

import android.annotation.DurationMillisLong;
import android.annotation.FlaggedApi;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SdkConstant;
@@ -36,7 +35,6 @@ import android.os.ParcelFileDescriptor;
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.SharedMemory;
import android.service.voice.flags.Flags;
import android.speech.IRecognitionServiceManager;
import android.util.Log;
import android.view.contentcapture.ContentCaptureManager;
@@ -272,16 +270,12 @@ public abstract class VisualQueryDetectionService extends Service
     *
     */
    public final void gainedAttention() {
        if (Flags.allowVariousAttentionTypes()) {
            gainedAttention(new VisualQueryAttentionResult.Builder().build());
        } else {
        try {
            mRemoteCallback.onAttentionGained(null);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }
    }

    /**
     * Puts the device into an attention state that will listen to certain interaction intention
@@ -299,7 +293,7 @@ public abstract class VisualQueryDetectionService extends Service
     *
     * @param attentionResult Attention result of type {@link VisualQueryAttentionResult}.
     */
    @FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public final void gainedAttention(@NonNull VisualQueryAttentionResult attentionResult) {
        try {
            mRemoteCallback.onAttentionGained(attentionResult);
@@ -312,17 +306,12 @@ public abstract class VisualQueryDetectionService extends Service
     * Informs the system that all attention has lost to stop streaming.
     */
    public final void lostAttention() {
        if (Flags.allowVariousAttentionTypes()) {
            lostAttention(VisualQueryAttentionResult.INTERACTION_INTENTION_AUDIO_VISUAL);
            lostAttention(VisualQueryAttentionResult.INTERACTION_INTENTION_VISUAL_ACCESSIBILITY);
        } else {
        try {
            mRemoteCallback.onAttentionLost(0); // placeholder
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }
    }

    /**
     * This will cancel the corresponding attention if the provided interaction intention is the
@@ -332,7 +321,7 @@ public abstract class VisualQueryDetectionService extends Service
     * @param interactionIntention Interaction intention, one of
     *        {@link VisualQueryAttentionResult#InteractionIntention}.
     */
    @FlaggedApi(Flags.FLAG_ALLOW_VARIOUS_ATTENTION_TYPES)
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public final void lostAttention(
            @VisualQueryAttentionResult.InteractionIntention int interactionIntention) {
        try {
@@ -375,7 +364,7 @@ public abstract class VisualQueryDetectionService extends Service
     * @param partialResult Partially detected result in the format of
     * {@link VisualQueryDetectedResult}.
     */
    @FlaggedApi(Flags.FLAG_ALLOW_COMPLEX_RESULTS_EGRESS_FROM_VQDS)
    @SuppressLint("UnflaggedApi") // b/325678077 flags not supported in isolated process
    public final void streamQuery(@NonNull VisualQueryDetectedResult partialResult) {
        Objects.requireNonNull(partialResult);
        try {
Loading