/* * Copyright (C) 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.ondevicepersonalization; import android.annotation.NonNull; import android.os.Parcelable; import com.android.ondevicepersonalization.internal.util.AnnotationValidations; import com.android.ondevicepersonalization.internal.util.DataClass; import java.util.List; /** * User data for personalized ads targeting. * * @hide */ // This class should be updated with the Kotlin mirror // {@link com.android.ondevicepersonalization.services.policyengine.data.UserData}. @DataClass(genBuilder = true, genEqualsHashCode = true) public final class UserData implements Parcelable { /** The current timestamp in second. */ @NonNull long mTimeSec; /** The device timezone +/- minutes offset from UTC. */ @NonNull int mTimezone; /** The device orientation. */ @NonNull int mOrientation; /** The available space on device in MB. */ @NonNull int mAvailableBytesMB; /** Battery percentage. */ @NonNull int mBatteryPct; /** Country. See the full list {@link Country}. */ @NonNull int mCountry; /** Language. See the full list {@link Language}. */ @NonNull int mLanguage; /** Carrier. See the full list {@link Carrier}. */ @NonNull int mCarrier; /** OS versions. */ @NonNull OSVersion mOsVersions; /** Network connection types. See full list {@link RawUserData.ConnectionType}. */ @NonNull int mConnectionType; /** Connection speed in kbps. */ @NonNull int mConnectionSpeedKbps; /** Status if network is metered. False - not metered. True - metered. */ @NonNull boolean mNetworkMetered; /** Device metrics value. */ @NonNull DeviceMetrics mDeviceMetrics; /** The history of installed/uninstalled packages. */ @NonNull List mAppInstalledHistory; /** The app usage history in the last 30 days, sorted by total time spent. */ @NonNull List mAppUsageHistory; /** The most recently known location. */ @NonNull Location mCurrentLocation; /** The location history in last 30 days, sorted by the stay duration. */ @NonNull List mLocationHistory; // Code below generated by codegen v1.0.23. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code // // To regenerate run: // $ codegen $ANDROID_BUILD_TOP/packages/modules/OnDevicePersonalization/framework/java/android/ondevicepersonalization/UserData.java // // To exclude the generated code from IntelliJ auto-formatting enable (one-time): // Settings > Editor > Code Style > Formatter Control //@formatter:off @DataClass.Generated.Member /* package-private */ UserData( @NonNull long timeSec, @NonNull int timezone, @NonNull int orientation, @NonNull int availableBytesMB, @NonNull int batteryPct, @NonNull int country, @NonNull int language, @NonNull int carrier, @NonNull OSVersion osVersions, @NonNull int connectionType, @NonNull int connectionSpeedKbps, @NonNull boolean networkMetered, @NonNull DeviceMetrics deviceMetrics, @NonNull List appInstalledHistory, @NonNull List appUsageHistory, @NonNull Location currentLocation, @NonNull List locationHistory) { this.mTimeSec = timeSec; AnnotationValidations.validate( NonNull.class, null, mTimeSec); this.mTimezone = timezone; AnnotationValidations.validate( NonNull.class, null, mTimezone); this.mOrientation = orientation; AnnotationValidations.validate( NonNull.class, null, mOrientation); this.mAvailableBytesMB = availableBytesMB; AnnotationValidations.validate( NonNull.class, null, mAvailableBytesMB); this.mBatteryPct = batteryPct; AnnotationValidations.validate( NonNull.class, null, mBatteryPct); this.mCountry = country; AnnotationValidations.validate( NonNull.class, null, mCountry); this.mLanguage = language; AnnotationValidations.validate( NonNull.class, null, mLanguage); this.mCarrier = carrier; AnnotationValidations.validate( NonNull.class, null, mCarrier); this.mOsVersions = osVersions; AnnotationValidations.validate( NonNull.class, null, mOsVersions); this.mConnectionType = connectionType; AnnotationValidations.validate( NonNull.class, null, mConnectionType); this.mConnectionSpeedKbps = connectionSpeedKbps; AnnotationValidations.validate( NonNull.class, null, mConnectionSpeedKbps); this.mNetworkMetered = networkMetered; AnnotationValidations.validate( NonNull.class, null, mNetworkMetered); this.mDeviceMetrics = deviceMetrics; AnnotationValidations.validate( NonNull.class, null, mDeviceMetrics); this.mAppInstalledHistory = appInstalledHistory; AnnotationValidations.validate( NonNull.class, null, mAppInstalledHistory); this.mAppUsageHistory = appUsageHistory; AnnotationValidations.validate( NonNull.class, null, mAppUsageHistory); this.mCurrentLocation = currentLocation; AnnotationValidations.validate( NonNull.class, null, mCurrentLocation); this.mLocationHistory = locationHistory; AnnotationValidations.validate( NonNull.class, null, mLocationHistory); // onConstructed(); // You can define this method to get a callback } /** * The current timestamp in second. */ @DataClass.Generated.Member public @NonNull long getTimeSec() { return mTimeSec; } /** * The device timezone +/- minutes offset from UTC. */ @DataClass.Generated.Member public @NonNull int getTimezone() { return mTimezone; } /** * The device orientation. */ @DataClass.Generated.Member public @NonNull int getOrientation() { return mOrientation; } /** * The available space on device in MB. */ @DataClass.Generated.Member public @NonNull int getAvailableBytesMB() { return mAvailableBytesMB; } /** * Battery percentage. */ @DataClass.Generated.Member public @NonNull int getBatteryPct() { return mBatteryPct; } /** * Country. See the full list {@link Country}. */ @DataClass.Generated.Member public @NonNull int getCountry() { return mCountry; } /** * Language. See the full list {@link Language}. */ @DataClass.Generated.Member public @NonNull int getLanguage() { return mLanguage; } /** * Carrier. See the full list {@link Carrier}. */ @DataClass.Generated.Member public @NonNull int getCarrier() { return mCarrier; } /** * OS versions. */ @DataClass.Generated.Member public @NonNull OSVersion getOsVersions() { return mOsVersions; } /** * Network connection types. See full list {@link RawUserData.ConnectionType}. */ @DataClass.Generated.Member public @NonNull int getConnectionType() { return mConnectionType; } /** * Connection speed in kbps. */ @DataClass.Generated.Member public @NonNull int getConnectionSpeedKbps() { return mConnectionSpeedKbps; } /** * Status if network is metered. False - not metered. True - metered. */ @DataClass.Generated.Member public @NonNull boolean isNetworkMetered() { return mNetworkMetered; } /** * Device metrics value. */ @DataClass.Generated.Member public @NonNull DeviceMetrics getDeviceMetrics() { return mDeviceMetrics; } /** * The history of installed/uninstalled packages. */ @DataClass.Generated.Member public @NonNull List getAppInstalledHistory() { return mAppInstalledHistory; } /** * The app usage history in the last 30 days, sorted by total time spent. */ @DataClass.Generated.Member public @NonNull List getAppUsageHistory() { return mAppUsageHistory; } /** * The most recently known location. */ @DataClass.Generated.Member public @NonNull Location getCurrentLocation() { return mCurrentLocation; } /** * The location history in last 30 days, sorted by the stay duration. */ @DataClass.Generated.Member public @NonNull List getLocationHistory() { return mLocationHistory; } @Override @DataClass.Generated.Member public boolean equals(@android.annotation.Nullable Object o) { // You can override field equality logic by defining either of the methods like: // boolean fieldNameEquals(UserData other) { ... } // boolean fieldNameEquals(FieldType otherValue) { ... } if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; @SuppressWarnings("unchecked") UserData that = (UserData) o; //noinspection PointlessBooleanExpression return true && mTimeSec == that.mTimeSec && mTimezone == that.mTimezone && mOrientation == that.mOrientation && mAvailableBytesMB == that.mAvailableBytesMB && mBatteryPct == that.mBatteryPct && mCountry == that.mCountry && mLanguage == that.mLanguage && mCarrier == that.mCarrier && java.util.Objects.equals(mOsVersions, that.mOsVersions) && mConnectionType == that.mConnectionType && mConnectionSpeedKbps == that.mConnectionSpeedKbps && mNetworkMetered == that.mNetworkMetered && java.util.Objects.equals(mDeviceMetrics, that.mDeviceMetrics) && java.util.Objects.equals(mAppInstalledHistory, that.mAppInstalledHistory) && java.util.Objects.equals(mAppUsageHistory, that.mAppUsageHistory) && java.util.Objects.equals(mCurrentLocation, that.mCurrentLocation) && java.util.Objects.equals(mLocationHistory, that.mLocationHistory); } @Override @DataClass.Generated.Member public int hashCode() { // You can override field hashCode logic by defining methods like: // int fieldNameHashCode() { ... } int _hash = 1; _hash = 31 * _hash + Long.hashCode(mTimeSec); _hash = 31 * _hash + mTimezone; _hash = 31 * _hash + mOrientation; _hash = 31 * _hash + mAvailableBytesMB; _hash = 31 * _hash + mBatteryPct; _hash = 31 * _hash + mCountry; _hash = 31 * _hash + mLanguage; _hash = 31 * _hash + mCarrier; _hash = 31 * _hash + java.util.Objects.hashCode(mOsVersions); _hash = 31 * _hash + mConnectionType; _hash = 31 * _hash + mConnectionSpeedKbps; _hash = 31 * _hash + Boolean.hashCode(mNetworkMetered); _hash = 31 * _hash + java.util.Objects.hashCode(mDeviceMetrics); _hash = 31 * _hash + java.util.Objects.hashCode(mAppInstalledHistory); _hash = 31 * _hash + java.util.Objects.hashCode(mAppUsageHistory); _hash = 31 * _hash + java.util.Objects.hashCode(mCurrentLocation); _hash = 31 * _hash + java.util.Objects.hashCode(mLocationHistory); return _hash; } @Override @DataClass.Generated.Member public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { // You can override field parcelling by defining methods like: // void parcelFieldName(Parcel dest, int flags) { ... } long flg = 0; if (mNetworkMetered) flg |= 0x800; dest.writeLong(flg); dest.writeLong(mTimeSec); dest.writeInt(mTimezone); dest.writeInt(mOrientation); dest.writeInt(mAvailableBytesMB); dest.writeInt(mBatteryPct); dest.writeInt(mCountry); dest.writeInt(mLanguage); dest.writeInt(mCarrier); dest.writeTypedObject(mOsVersions, flags); dest.writeInt(mConnectionType); dest.writeInt(mConnectionSpeedKbps); dest.writeTypedObject(mDeviceMetrics, flags); dest.writeParcelableList(mAppInstalledHistory, flags); dest.writeParcelableList(mAppUsageHistory, flags); dest.writeTypedObject(mCurrentLocation, flags); dest.writeParcelableList(mLocationHistory, flags); } @Override @DataClass.Generated.Member public int describeContents() { return 0; } /** @hide */ @SuppressWarnings({"unchecked", "RedundantCast"}) @DataClass.Generated.Member /* package-private */ UserData(@NonNull android.os.Parcel in) { // You can override field unparcelling by defining methods like: // static FieldType unparcelFieldName(Parcel in) { ... } long flg = in.readLong(); boolean networkMetered = (flg & 0x800) != 0; long timeSec = in.readLong(); int timezone = in.readInt(); int orientation = in.readInt(); int availableBytesMB = in.readInt(); int batteryPct = in.readInt(); int country = in.readInt(); int language = in.readInt(); int carrier = in.readInt(); OSVersion osVersions = (OSVersion) in.readTypedObject(OSVersion.CREATOR); int connectionType = in.readInt(); int connectionSpeedKbps = in.readInt(); DeviceMetrics deviceMetrics = (DeviceMetrics) in.readTypedObject(DeviceMetrics.CREATOR); List appInstalledHistory = new java.util.ArrayList<>(); in.readParcelableList(appInstalledHistory, AppInstallStatus.class.getClassLoader()); List appUsageHistory = new java.util.ArrayList<>(); in.readParcelableList(appUsageHistory, AppUsageStatus.class.getClassLoader()); Location currentLocation = (Location) in.readTypedObject(Location.CREATOR); List locationHistory = new java.util.ArrayList<>(); in.readParcelableList(locationHistory, LocationStatus.class.getClassLoader()); this.mTimeSec = timeSec; AnnotationValidations.validate( NonNull.class, null, mTimeSec); this.mTimezone = timezone; AnnotationValidations.validate( NonNull.class, null, mTimezone); this.mOrientation = orientation; AnnotationValidations.validate( NonNull.class, null, mOrientation); this.mAvailableBytesMB = availableBytesMB; AnnotationValidations.validate( NonNull.class, null, mAvailableBytesMB); this.mBatteryPct = batteryPct; AnnotationValidations.validate( NonNull.class, null, mBatteryPct); this.mCountry = country; AnnotationValidations.validate( NonNull.class, null, mCountry); this.mLanguage = language; AnnotationValidations.validate( NonNull.class, null, mLanguage); this.mCarrier = carrier; AnnotationValidations.validate( NonNull.class, null, mCarrier); this.mOsVersions = osVersions; AnnotationValidations.validate( NonNull.class, null, mOsVersions); this.mConnectionType = connectionType; AnnotationValidations.validate( NonNull.class, null, mConnectionType); this.mConnectionSpeedKbps = connectionSpeedKbps; AnnotationValidations.validate( NonNull.class, null, mConnectionSpeedKbps); this.mNetworkMetered = networkMetered; AnnotationValidations.validate( NonNull.class, null, mNetworkMetered); this.mDeviceMetrics = deviceMetrics; AnnotationValidations.validate( NonNull.class, null, mDeviceMetrics); this.mAppInstalledHistory = appInstalledHistory; AnnotationValidations.validate( NonNull.class, null, mAppInstalledHistory); this.mAppUsageHistory = appUsageHistory; AnnotationValidations.validate( NonNull.class, null, mAppUsageHistory); this.mCurrentLocation = currentLocation; AnnotationValidations.validate( NonNull.class, null, mCurrentLocation); this.mLocationHistory = locationHistory; AnnotationValidations.validate( NonNull.class, null, mLocationHistory); // onConstructed(); // You can define this method to get a callback } @DataClass.Generated.Member public static final @NonNull Parcelable.Creator CREATOR = new Parcelable.Creator() { @Override public UserData[] newArray(int size) { return new UserData[size]; } @Override public UserData createFromParcel(@NonNull android.os.Parcel in) { return new UserData(in); } }; /** * A builder for {@link UserData} */ @SuppressWarnings("WeakerAccess") @DataClass.Generated.Member public static final class Builder { private @NonNull long mTimeSec; private @NonNull int mTimezone; private @NonNull int mOrientation; private @NonNull int mAvailableBytesMB; private @NonNull int mBatteryPct; private @NonNull int mCountry; private @NonNull int mLanguage; private @NonNull int mCarrier; private @NonNull OSVersion mOsVersions; private @NonNull int mConnectionType; private @NonNull int mConnectionSpeedKbps; private @NonNull boolean mNetworkMetered; private @NonNull DeviceMetrics mDeviceMetrics; private @NonNull List mAppInstalledHistory; private @NonNull List mAppUsageHistory; private @NonNull Location mCurrentLocation; private @NonNull List mLocationHistory; private long mBuilderFieldsSet = 0L; /** * Creates a new Builder. * * @param timeSec * The current timestamp in second. * @param timezone * The device timezone +/- minutes offset from UTC. * @param orientation * The device orientation. * @param availableBytesMB * The available space on device in MB. * @param batteryPct * Battery percentage. * @param country * Country. See the full list {@link Country}. * @param language * Language. See the full list {@link Language}. * @param carrier * Carrier. See the full list {@link Carrier}. * @param osVersions * OS versions. * @param connectionType * Network connection types. See full list {@link RawUserData.ConnectionType}. * @param connectionSpeedKbps * Connection speed in kbps. * @param networkMetered * Status if network is metered. False - not metered. True - metered. * @param deviceMetrics * Device metrics value. * @param appInstalledHistory * The history of installed/uninstalled packages. * @param appUsageHistory * The app usage history in the last 30 days, sorted by total time spent. * @param currentLocation * The most recently known location. * @param locationHistory * The location history in last 30 days, sorted by the stay duration. */ public Builder( @NonNull long timeSec, @NonNull int timezone, @NonNull int orientation, @NonNull int availableBytesMB, @NonNull int batteryPct, @NonNull int country, @NonNull int language, @NonNull int carrier, @NonNull OSVersion osVersions, @NonNull int connectionType, @NonNull int connectionSpeedKbps, @NonNull boolean networkMetered, @NonNull DeviceMetrics deviceMetrics, @NonNull List appInstalledHistory, @NonNull List appUsageHistory, @NonNull Location currentLocation, @NonNull List locationHistory) { mTimeSec = timeSec; AnnotationValidations.validate( NonNull.class, null, mTimeSec); mTimezone = timezone; AnnotationValidations.validate( NonNull.class, null, mTimezone); mOrientation = orientation; AnnotationValidations.validate( NonNull.class, null, mOrientation); mAvailableBytesMB = availableBytesMB; AnnotationValidations.validate( NonNull.class, null, mAvailableBytesMB); mBatteryPct = batteryPct; AnnotationValidations.validate( NonNull.class, null, mBatteryPct); mCountry = country; AnnotationValidations.validate( NonNull.class, null, mCountry); mLanguage = language; AnnotationValidations.validate( NonNull.class, null, mLanguage); mCarrier = carrier; AnnotationValidations.validate( NonNull.class, null, mCarrier); mOsVersions = osVersions; AnnotationValidations.validate( NonNull.class, null, mOsVersions); mConnectionType = connectionType; AnnotationValidations.validate( NonNull.class, null, mConnectionType); mConnectionSpeedKbps = connectionSpeedKbps; AnnotationValidations.validate( NonNull.class, null, mConnectionSpeedKbps); mNetworkMetered = networkMetered; AnnotationValidations.validate( NonNull.class, null, mNetworkMetered); mDeviceMetrics = deviceMetrics; AnnotationValidations.validate( NonNull.class, null, mDeviceMetrics); mAppInstalledHistory = appInstalledHistory; AnnotationValidations.validate( NonNull.class, null, mAppInstalledHistory); mAppUsageHistory = appUsageHistory; AnnotationValidations.validate( NonNull.class, null, mAppUsageHistory); mCurrentLocation = currentLocation; AnnotationValidations.validate( NonNull.class, null, mCurrentLocation); mLocationHistory = locationHistory; AnnotationValidations.validate( NonNull.class, null, mLocationHistory); } public Builder() { } /** * The current timestamp in second. */ @DataClass.Generated.Member public @NonNull Builder setTimeSec(@NonNull long value) { checkNotUsed(); mBuilderFieldsSet |= 0x1; mTimeSec = value; return this; } /** * The device timezone +/- minutes offset from UTC. */ @DataClass.Generated.Member public @NonNull Builder setTimezone(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x2; mTimezone = value; return this; } /** * The device orientation. */ @DataClass.Generated.Member public @NonNull Builder setOrientation(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x4; mOrientation = value; return this; } /** * The available space on device in MB. */ @DataClass.Generated.Member public @NonNull Builder setAvailableBytesMB(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x8; mAvailableBytesMB = value; return this; } /** * Battery percentage. */ @DataClass.Generated.Member public @NonNull Builder setBatteryPct(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x10; mBatteryPct = value; return this; } /** * Country. See the full list {@link Country}. */ @DataClass.Generated.Member public @NonNull Builder setCountry(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x20; mCountry = value; return this; } /** * Language. See the full list {@link Language}. */ @DataClass.Generated.Member public @NonNull Builder setLanguage(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x40; mLanguage = value; return this; } /** * Carrier. See the full list {@link Carrier}. */ @DataClass.Generated.Member public @NonNull Builder setCarrier(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x80; mCarrier = value; return this; } /** * OS versions. */ @DataClass.Generated.Member public @NonNull Builder setOsVersions(@NonNull OSVersion value) { checkNotUsed(); mBuilderFieldsSet |= 0x100; mOsVersions = value; return this; } /** * Network connection types. See full list {@link RawUserData.ConnectionType}. */ @DataClass.Generated.Member public @NonNull Builder setConnectionType(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x200; mConnectionType = value; return this; } /** * Connection speed in kbps. */ @DataClass.Generated.Member public @NonNull Builder setConnectionSpeedKbps(@NonNull int value) { checkNotUsed(); mBuilderFieldsSet |= 0x400; mConnectionSpeedKbps = value; return this; } /** * Status if network is metered. False - not metered. True - metered. */ @DataClass.Generated.Member public @NonNull Builder setNetworkMetered(@NonNull boolean value) { checkNotUsed(); mBuilderFieldsSet |= 0x800; mNetworkMetered = value; return this; } /** * Device metrics value. */ @DataClass.Generated.Member public @NonNull Builder setDeviceMetrics(@NonNull DeviceMetrics value) { checkNotUsed(); mBuilderFieldsSet |= 0x1000; mDeviceMetrics = value; return this; } /** * The history of installed/uninstalled packages. */ @DataClass.Generated.Member public @NonNull Builder setAppInstalledHistory(@NonNull List value) { checkNotUsed(); mBuilderFieldsSet |= 0x2000; mAppInstalledHistory = value; return this; } /** @see #setAppInstalledHistory */ @DataClass.Generated.Member public @NonNull Builder addAppInstalledHistory(@NonNull AppInstallStatus value) { // You can refine this method's name by providing item's singular name, e.g.: // @DataClass.PluralOf("item")) mItems = ... if (mAppInstalledHistory == null) setAppInstalledHistory(new java.util.ArrayList<>()); mAppInstalledHistory.add(value); return this; } /** * The app usage history in the last 30 days, sorted by total time spent. */ @DataClass.Generated.Member public @NonNull Builder setAppUsageHistory(@NonNull List value) { checkNotUsed(); mBuilderFieldsSet |= 0x4000; mAppUsageHistory = value; return this; } /** @see #setAppUsageHistory */ @DataClass.Generated.Member public @NonNull Builder addAppUsageHistory(@NonNull AppUsageStatus value) { // You can refine this method's name by providing item's singular name, e.g.: // @DataClass.PluralOf("item")) mItems = ... if (mAppUsageHistory == null) setAppUsageHistory(new java.util.ArrayList<>()); mAppUsageHistory.add(value); return this; } /** * The most recently known location. */ @DataClass.Generated.Member public @NonNull Builder setCurrentLocation(@NonNull Location value) { checkNotUsed(); mBuilderFieldsSet |= 0x8000; mCurrentLocation = value; return this; } /** * The location history in last 30 days, sorted by the stay duration. */ @DataClass.Generated.Member public @NonNull Builder setLocationHistory(@NonNull List value) { checkNotUsed(); mBuilderFieldsSet |= 0x10000; mLocationHistory = value; return this; } /** @see #setLocationHistory */ @DataClass.Generated.Member public @NonNull Builder addLocationHistory(@NonNull LocationStatus value) { // You can refine this method's name by providing item's singular name, e.g.: // @DataClass.PluralOf("item")) mItems = ... if (mLocationHistory == null) setLocationHistory(new java.util.ArrayList<>()); mLocationHistory.add(value); return this; } /** Builds the instance. This builder should not be touched after calling this! */ public @NonNull UserData build() { checkNotUsed(); mBuilderFieldsSet |= 0x20000; // Mark builder used UserData o = new UserData( mTimeSec, mTimezone, mOrientation, mAvailableBytesMB, mBatteryPct, mCountry, mLanguage, mCarrier, mOsVersions, mConnectionType, mConnectionSpeedKbps, mNetworkMetered, mDeviceMetrics, mAppInstalledHistory, mAppUsageHistory, mCurrentLocation, mLocationHistory); return o; } private void checkNotUsed() { if ((mBuilderFieldsSet & 0x20000) != 0) { throw new IllegalStateException( "This Builder should not be reused. Use a new Builder instance instead"); } } } @DataClass.Generated( time = 1676499729336L, codegenVersion = "1.0.23", sourceFile = "packages/modules/OnDevicePersonalization/framework/java/android/ondevicepersonalization/UserData.java", inputSignatures = " @android.annotation.NonNull long mTimeSec\n @android.annotation.NonNull int mTimezone\n @android.annotation.NonNull int mOrientation\n @android.annotation.NonNull int mAvailableBytesMB\n @android.annotation.NonNull int mBatteryPct\n @android.annotation.NonNull int mCountry\n @android.annotation.NonNull int mLanguage\n @android.annotation.NonNull int mCarrier\n @android.annotation.NonNull android.ondevicepersonalization.OSVersion mOsVersions\n @android.annotation.NonNull int mConnectionType\n @android.annotation.NonNull int mConnectionSpeedKbps\n @android.annotation.NonNull boolean mNetworkMetered\n @android.annotation.NonNull android.ondevicepersonalization.DeviceMetrics mDeviceMetrics\n @android.annotation.NonNull java.util.List mAppInstalledHistory\n @android.annotation.NonNull java.util.List mAppUsageHistory\n @android.annotation.NonNull android.ondevicepersonalization.Location mCurrentLocation\n @android.annotation.NonNull java.util.List mLocationHistory\nclass UserData extends java.lang.Object implements [android.os.Parcelable]\n@com.android.ondevicepersonalization.internal.util.DataClass(genBuilder=true, genEqualsHashCode=true)") @Deprecated private void __metadata() {} //@formatter:on // End of generated code }