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

Commit d86e3db1 authored by Becky Qiu's avatar Becky Qiu
Browse files

Remove ambient context heart rate.

Bug: 317182155
Test: cts tests
Change-Id: I2dbc18c3746fda1de4a5abcf6c1faecbcc7bbacf
parent 2892d49a
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -1647,14 +1647,12 @@ package android.app.ambientcontext {
    method public int getDensityLevel();
    method @NonNull public java.time.Instant getEndTime();
    method public int getEventType();
    method @FlaggedApi("android.app.ambient_heart_rate") @IntRange(from=0xffffffff) public int getRatePerMinute();
    method @NonNull public java.time.Instant getStartTime();
    method @NonNull public android.os.PersistableBundle getVendorData();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.app.ambientcontext.AmbientContextEvent> CREATOR;
    field public static final int EVENT_BACK_DOUBLE_TAP = 3; // 0x3
    field public static final int EVENT_COUGH = 1; // 0x1
    field @FlaggedApi("android.app.ambient_heart_rate") public static final int EVENT_HEART_RATE = 4; // 0x4
    field public static final int EVENT_SNORE = 2; // 0x2
    field public static final int EVENT_UNKNOWN = 0; // 0x0
    field public static final int EVENT_VENDOR_WEARABLE_START = 100000; // 0x186a0
@@ -1665,7 +1663,6 @@ package android.app.ambientcontext {
    field public static final int LEVEL_MEDIUM_HIGH = 4; // 0x4
    field public static final int LEVEL_MEDIUM_LOW = 2; // 0x2
    field public static final int LEVEL_UNKNOWN = 0; // 0x0
    field @FlaggedApi("android.app.ambient_heart_rate") public static final int RATE_PER_MINUTE_UNKNOWN = -1; // 0xffffffff
  }
  public static final class AmbientContextEvent.Builder {
@@ -1675,7 +1672,6 @@ package android.app.ambientcontext {
    method @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setDensityLevel(int);
    method @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setEndTime(@NonNull java.time.Instant);
    method @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setEventType(int);
    method @FlaggedApi("android.app.ambient_heart_rate") @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setRatePerMinute(@IntRange(from=0xffffffff) int);
    method @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setStartTime(@NonNull java.time.Instant);
    method @NonNull public android.app.ambientcontext.AmbientContextEvent.Builder setVendorData(@NonNull android.os.PersistableBundle);
  }
+0 −8
Original line number Diff line number Diff line
package: "android.app"

flag {
  namespace: "biometrics_integration"
  name: "ambient_heart_rate"
  description: "Feature flag for adding heart rate api to ambient context."
  bug: "318309481"
}
+7 −79
Original line number Diff line number Diff line
@@ -16,9 +16,7 @@

package android.app.ambientcontext;

import android.annotation.FlaggedApi;
import android.annotation.IntDef;
import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.os.Parcelable;
@@ -69,14 +67,6 @@ public final class AmbientContextEvent implements Parcelable {
     */
    public static final int EVENT_BACK_DOUBLE_TAP = 3;

    /**
     * The integer indicating a heart rate measurement was done.
     *
     * @see #getRatePerMinute
     */
    @Event @FlaggedApi(android.app.Flags.FLAG_AMBIENT_HEART_RATE)
    public static final int EVENT_HEART_RATE = 4;

    /**
     * Integer indicating the start of wearable vendor defined events that can be detected.
     * These depend on the vendor implementation.
@@ -89,19 +79,12 @@ public final class AmbientContextEvent implements Parcelable {
     */
    public static final String KEY_VENDOR_WEARABLE_EVENT_NAME = "wearable_event_name";

    /**
     * Default value for {@link #getRatePerMinute}. Indicates that the rate of the event is unknown.
     */
    @FlaggedApi(android.app.Flags.FLAG_AMBIENT_HEART_RATE)
    public static final int RATE_PER_MINUTE_UNKNOWN = -1;

    /** @hide */
    @IntDef(prefix = { "EVENT_" }, value = {
            EVENT_UNKNOWN,
            EVENT_COUGH,
            EVENT_SNORE,
            EVENT_BACK_DOUBLE_TAP,
            EVENT_HEART_RATE,
            EVENT_VENDOR_WEARABLE_START,
    })
    @Retention(RetentionPolicy.SOURCE)
@@ -187,16 +170,6 @@ public final class AmbientContextEvent implements Parcelable {
        return new PersistableBundle();
    }

    /**
     * Rate per minute of the event during the start to end time.
     *
     * @return the rate per minute, or {@link #RATE_PER_MINUTE_UNKNOWN} if the rate is unknown.
     */
    private final @IntRange(from = -1) int mRatePerMinute;
    private static int defaultRatePerMinute() {
        return RATE_PER_MINUTE_UNKNOWN;
    }



    // Code below generated by codegen v1.0.23.
@@ -206,8 +179,6 @@ public final class AmbientContextEvent implements Parcelable {
    //
    // To regenerate run:
    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/app/ambientcontext/AmbientContextEvent.java
    // then manually add @FlaggedApi(android.app.Flags.FLAG_AMBIENT_HEART_RATE) back to flagged
    // APIs.
    //
    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
    //   Settings > Editor > Code Style > Formatter Control
@@ -220,7 +191,6 @@ public final class AmbientContextEvent implements Parcelable {
        EVENT_COUGH,
        EVENT_SNORE,
        EVENT_BACK_DOUBLE_TAP,
        EVENT_HEART_RATE,
        EVENT_VENDOR_WEARABLE_START
    })
    @Retention(RetentionPolicy.SOURCE)
@@ -239,8 +209,6 @@ public final class AmbientContextEvent implements Parcelable {
                    return "EVENT_SNORE";
            case EVENT_BACK_DOUBLE_TAP:
                    return "EVENT_BACK_DOUBLE_TAP";
            case EVENT_HEART_RATE:
                    return "EVENT_HEART_RATE";
            case EVENT_VENDOR_WEARABLE_START:
                    return "EVENT_VENDOR_WEARABLE_START";
            default: return Integer.toHexString(value);
@@ -287,8 +255,7 @@ public final class AmbientContextEvent implements Parcelable {
            @NonNull Instant endTime,
            @LevelValue int confidenceLevel,
            @LevelValue int densityLevel,
            @NonNull PersistableBundle vendorData,
            @IntRange(from = -1) int ratePerMinute) {
            @NonNull PersistableBundle vendorData) {
        this.mEventType = eventType;
        com.android.internal.util.AnnotationValidations.validate(
                EventCode.class, null, mEventType);
@@ -307,10 +274,6 @@ public final class AmbientContextEvent implements Parcelable {
        this.mVendorData = vendorData;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mVendorData);
        this.mRatePerMinute = ratePerMinute;
        com.android.internal.util.AnnotationValidations.validate(
                IntRange.class, null, mRatePerMinute,
                "from", -1);

        // onConstructed(); // You can define this method to get a callback
    }
@@ -367,17 +330,6 @@ public final class AmbientContextEvent implements Parcelable {
        return mVendorData;
    }

    /**
     * Rate per minute of the event during the start to end time.
     *
     * @return the rate per minute, or {@link #RATE_PER_MINUTE_UNKNOWN} if the rate is unknown.
     */
    @DataClass.Generated.Member
    @FlaggedApi(android.app.Flags.FLAG_AMBIENT_HEART_RATE)
    public @IntRange(from = -1) int getRatePerMinute() {
        return mRatePerMinute;
    }

    @Override
    @DataClass.Generated.Member
    public String toString() {
@@ -390,8 +342,7 @@ public final class AmbientContextEvent implements Parcelable {
                "endTime = " + mEndTime + ", " +
                "confidenceLevel = " + mConfidenceLevel + ", " +
                "densityLevel = " + mDensityLevel + ", " +
                "vendorData = " + mVendorData + ", " +
                "ratePerMinute = " + mRatePerMinute +
                "vendorData = " + mVendorData +
        " }";
    }

@@ -429,7 +380,6 @@ public final class AmbientContextEvent implements Parcelable {
        dest.writeInt(mConfidenceLevel);
        dest.writeInt(mDensityLevel);
        dest.writeTypedObject(mVendorData, flags);
        dest.writeInt(mRatePerMinute);
    }

    @Override
@@ -449,7 +399,6 @@ public final class AmbientContextEvent implements Parcelable {
        int confidenceLevel = in.readInt();
        int densityLevel = in.readInt();
        PersistableBundle vendorData = (PersistableBundle) in.readTypedObject(PersistableBundle.CREATOR);
        int ratePerMinute = in.readInt();

        this.mEventType = eventType;
        com.android.internal.util.AnnotationValidations.validate(
@@ -469,10 +418,6 @@ public final class AmbientContextEvent implements Parcelable {
        this.mVendorData = vendorData;
        com.android.internal.util.AnnotationValidations.validate(
                NonNull.class, null, mVendorData);
        this.mRatePerMinute = ratePerMinute;
        com.android.internal.util.AnnotationValidations.validate(
                IntRange.class, null, mRatePerMinute,
                "from", -1);

        // onConstructed(); // You can define this method to get a callback
    }
@@ -504,7 +449,6 @@ public final class AmbientContextEvent implements Parcelable {
        private @LevelValue int mConfidenceLevel;
        private @LevelValue int mDensityLevel;
        private @NonNull PersistableBundle mVendorData;
        private @IntRange(from = -1) int mRatePerMinute;

        private long mBuilderFieldsSet = 0L;

@@ -581,22 +525,10 @@ public final class AmbientContextEvent implements Parcelable {
            return this;
        }

        /**
         * Rate per minute of the event during the start to end time.
         */
        @DataClass.Generated.Member
        @FlaggedApi(android.app.Flags.FLAG_AMBIENT_HEART_RATE)
        public @NonNull Builder setRatePerMinute(@IntRange(from = -1) int value) {
            checkNotUsed();
            mBuilderFieldsSet |= 0x40;
            mRatePerMinute = value;
            return this;
        }

        /** Builds the instance. This builder should not be touched after calling this! */
        public @NonNull AmbientContextEvent build() {
            checkNotUsed();
            mBuilderFieldsSet |= 0x80; // Mark builder used
            mBuilderFieldsSet |= 0x40; // Mark builder used

            if ((mBuilderFieldsSet & 0x1) == 0) {
                mEventType = defaultEventType();
@@ -616,22 +548,18 @@ public final class AmbientContextEvent implements Parcelable {
            if ((mBuilderFieldsSet & 0x20) == 0) {
                mVendorData = defaultVendorData();
            }
            if ((mBuilderFieldsSet & 0x40) == 0) {
                mRatePerMinute = defaultRatePerMinute();
            }
            AmbientContextEvent o = new AmbientContextEvent(
                    mEventType,
                    mStartTime,
                    mEndTime,
                    mConfidenceLevel,
                    mDensityLevel,
                    mVendorData,
                    mRatePerMinute);
                    mVendorData);
            return o;
        }

        private void checkNotUsed() {
            if ((mBuilderFieldsSet & 0x80) != 0) {
            if ((mBuilderFieldsSet & 0x40) != 0) {
                throw new IllegalStateException(
                        "This Builder should not be reused. Use a new Builder instance instead");
            }
@@ -639,10 +567,10 @@ public final class AmbientContextEvent implements Parcelable {
    }

    @DataClass.Generated(
            time = 1705575046107L,
            time = 1709014715064L,
            codegenVersion = "1.0.23",
            sourceFile = "frameworks/base/core/java/android/app/ambientcontext/AmbientContextEvent.java",
            inputSignatures = "public static final  int EVENT_UNKNOWN\npublic static final  int EVENT_COUGH\npublic static final  int EVENT_SNORE\npublic static final  int EVENT_BACK_DOUBLE_TAP\npublic static final @android.app.ambientcontext.AmbientContextEvent.Event @android.annotation.FlaggedApi int EVENT_HEART_RATE\npublic static final  int EVENT_VENDOR_WEARABLE_START\npublic static final  java.lang.String KEY_VENDOR_WEARABLE_EVENT_NAME\npublic static final @android.annotation.FlaggedApi int RATE_PER_MINUTE_UNKNOWN\npublic static final  int LEVEL_UNKNOWN\npublic static final  int LEVEL_LOW\npublic static final  int LEVEL_MEDIUM_LOW\npublic static final  int LEVEL_MEDIUM\npublic static final  int LEVEL_MEDIUM_HIGH\npublic static final  int LEVEL_HIGH\nprivate final @android.app.ambientcontext.AmbientContextEvent.EventCode int mEventType\nprivate final @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInstant.class) @android.annotation.NonNull java.time.Instant mStartTime\nprivate final @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInstant.class) @android.annotation.NonNull java.time.Instant mEndTime\nprivate final @android.app.ambientcontext.AmbientContextEvent.LevelValue int mConfidenceLevel\nprivate final @android.app.ambientcontext.AmbientContextEvent.LevelValue int mDensityLevel\nprivate final @android.annotation.NonNull android.os.PersistableBundle mVendorData\nprivate final @android.annotation.IntRange int mRatePerMinute\nprivate static  int defaultEventType()\nprivate static @android.annotation.NonNull java.time.Instant defaultStartTime()\nprivate static @android.annotation.NonNull java.time.Instant defaultEndTime()\nprivate static  int defaultConfidenceLevel()\nprivate static  int defaultDensityLevel()\nprivate static  android.os.PersistableBundle defaultVendorData()\nprivate static  int defaultRatePerMinute()\nclass AmbientContextEvent extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genConstructor=false, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
            inputSignatures = "public static final  int EVENT_UNKNOWN\npublic static final  int EVENT_COUGH\npublic static final  int EVENT_SNORE\npublic static final  int EVENT_BACK_DOUBLE_TAP\npublic static final  int EVENT_VENDOR_WEARABLE_START\npublic static final  java.lang.String KEY_VENDOR_WEARABLE_EVENT_NAME\npublic static final  int LEVEL_UNKNOWN\npublic static final  int LEVEL_LOW\npublic static final  int LEVEL_MEDIUM_LOW\npublic static final  int LEVEL_MEDIUM\npublic static final  int LEVEL_MEDIUM_HIGH\npublic static final  int LEVEL_HIGH\nprivate final @android.app.ambientcontext.AmbientContextEvent.EventCode int mEventType\nprivate final @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInstant.class) @android.annotation.NonNull java.time.Instant mStartTime\nprivate final @com.android.internal.util.DataClass.ParcelWith(com.android.internal.util.Parcelling.BuiltIn.ForInstant.class) @android.annotation.NonNull java.time.Instant mEndTime\nprivate final @android.app.ambientcontext.AmbientContextEvent.LevelValue int mConfidenceLevel\nprivate final @android.app.ambientcontext.AmbientContextEvent.LevelValue int mDensityLevel\nprivate final @android.annotation.NonNull android.os.PersistableBundle mVendorData\nprivate static  int defaultEventType()\nprivate static @android.annotation.NonNull java.time.Instant defaultStartTime()\nprivate static @android.annotation.NonNull java.time.Instant defaultEndTime()\nprivate static  int defaultConfidenceLevel()\nprivate static  int defaultDensityLevel()\nprivate static  android.os.PersistableBundle defaultVendorData()\nclass AmbientContextEvent extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genBuilder=true, genConstructor=false, genHiddenConstDefs=true, genParcelable=true, genToString=true)")
    @Deprecated
    private void __metadata() {}

+1 −2
Original line number Diff line number Diff line
@@ -73,8 +73,7 @@ public class AmbientContextManagerService extends
    private static final Set<Integer> DEFAULT_EVENT_SET = Sets.newHashSet(
            AmbientContextEvent.EVENT_COUGH,
            AmbientContextEvent.EVENT_SNORE,
            AmbientContextEvent.EVENT_BACK_DOUBLE_TAP,
            AmbientContextEvent.EVENT_HEART_RATE);
            AmbientContextEvent.EVENT_BACK_DOUBLE_TAP);

    /** Default value in absence of {@link DeviceConfig} override. */
    private static final boolean DEFAULT_SERVICE_ENABLED = true;