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

Commit e2a2de37 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove ambient context heart rate." into main

parents 32991fcf d86e3db1
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;