1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.car.oem; 18 19 import static com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE; 20 import static com.android.car.internal.util.AnnotationValidations.validate; 21 22 import android.annotation.NonNull; 23 import android.annotation.Nullable; 24 import android.annotation.SystemApi; 25 import android.car.media.CarVolumeGroupInfo; 26 import android.os.Parcel; 27 import android.os.Parcelable; 28 29 import com.android.car.internal.ExcludeFromCodeCoverageGeneratedReport; 30 import com.android.car.internal.util.DataClass; 31 32 import java.util.Objects; 33 34 /** 35 * Class to encapsulate car volume group evaluation Results 36 * 37 * @hide 38 */ 39 @SystemApi 40 @DataClass( 41 genToString = true, 42 genHiddenConstructor = true, 43 genHiddenConstDefs = true, 44 genBuilder = true, 45 genEqualsHashCode = true) 46 public final class OemCarVolumeChangeInfo implements Parcelable { 47 48 private final boolean mVolumeChanged; 49 @Nullable 50 private final CarVolumeGroupInfo mChangedVolumeGroup; 51 52 // Code below generated by codegen v1.0.23. 53 // 54 // DO NOT MODIFY! 55 // CHECKSTYLE:OFF Generated code 56 // 57 // To regenerate run: 58 // $ codegen $ANDROID_BUILD_TOP/packages/services/Car/car-lib/src/android/car/oem 59 // /OemCarVolumeChangeInfo.java 60 // Added AddedInOrBefore or ApiRequirement Annotation manually 61 // 62 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 63 // Settings > Editor > Code Style > Formatter Control 64 //@formatter:off 65 66 67 /** 68 * Creates a new OemCarVolumeChangeInfo. 69 * 70 * @hide 71 */ 72 @DataClass.Generated.Member OemCarVolumeChangeInfo( boolean volumeChanged, @Nullable CarVolumeGroupInfo changedVolumeGroup)73 public OemCarVolumeChangeInfo( 74 boolean volumeChanged, 75 @Nullable CarVolumeGroupInfo changedVolumeGroup) { 76 this.mVolumeChanged = volumeChanged; 77 this.mChangedVolumeGroup = changedVolumeGroup; 78 79 // onConstructed(); // You can define this method to get a callback 80 } 81 82 /** 83 * @return {@code true} if the any volume group changed. 84 * 85 * <p>The actual changed in volume status will be in the volume group info see 86 * {@link #getChangedVolumeGroup} 87 */ 88 @DataClass.Generated.Member isVolumeChanged()89 public boolean isVolumeChanged() { 90 return mVolumeChanged; 91 } 92 93 /** 94 * @return corresponding change in volume. 95 * 96 * <p>A corresponding change will be determined by comparing the corresponding state of the 97 * volume group info and the value return here. Thus the volume group value should be changed, 98 * for example, for a request to evaluate {@code AudioManager#ADJUST_UNMUTE} the volume group 99 * info's mute state should be unmuted. 100 */ 101 @DataClass.Generated.Member getChangedVolumeGroup()102 public @Nullable CarVolumeGroupInfo getChangedVolumeGroup() { 103 return mChangedVolumeGroup; 104 } 105 106 @Override 107 @DataClass.Generated.Member 108 @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE) toString()109 public String toString() { 110 // You can override field toString logic by defining methods like: 111 // String fieldNameToString() { ... } 112 113 return "OemCarVolumeChangeInfo { " + 114 "volumeChanged = " + mVolumeChanged + ", " + 115 "changedVolumeGroup = " + mChangedVolumeGroup + 116 " }"; 117 } 118 119 @Override 120 @DataClass.Generated.Member equals(@ullable Object o)121 public boolean equals(@Nullable Object o) { 122 // You can override field equality logic by defining either of the methods like: 123 // boolean fieldNameEquals(OemCarVolumeChangeInfo other) { ... } 124 // boolean fieldNameEquals(FieldType otherValue) { ... } 125 126 if (this == o) return true; 127 if (o == null || getClass() != o.getClass()) return false; 128 @SuppressWarnings("unchecked") 129 OemCarVolumeChangeInfo that = (OemCarVolumeChangeInfo) o; 130 //noinspection PointlessBooleanExpression 131 return mVolumeChanged == that.mVolumeChanged 132 && Objects.equals(mChangedVolumeGroup, that.mChangedVolumeGroup); 133 } 134 135 @Override 136 @DataClass.Generated.Member hashCode()137 public int hashCode() { 138 // You can override field hashCode logic by defining methods like: 139 // int fieldNameHashCode() { ... } 140 141 int _hash = 1; 142 _hash = 31 * _hash + Boolean.hashCode(mVolumeChanged); 143 _hash = 31 * _hash + Objects.hashCode(mChangedVolumeGroup); 144 return _hash; 145 } 146 147 @Override 148 @DataClass.Generated.Member writeToParcel(@onNull Parcel dest, int flags)149 public void writeToParcel(@NonNull Parcel dest, int flags) { 150 // You can override field parcelling by defining methods like: 151 // void parcelFieldName(Parcel dest, int flags) { ... } 152 153 byte flg = 0; 154 if (mVolumeChanged) flg = (byte) (flg | 0x1); 155 if (mChangedVolumeGroup != null) flg = (byte) (flg | 0x2); 156 dest.writeByte(flg); 157 if (mChangedVolumeGroup != null) dest.writeTypedObject(mChangedVolumeGroup, flags); 158 } 159 160 @Override 161 @DataClass.Generated.Member describeContents()162 public int describeContents() { return 0; } 163 164 /** @hide */ 165 @SuppressWarnings({"unchecked", "RedundantCast"}) 166 @DataClass.Generated.Member OemCarVolumeChangeInfo(@onNull Parcel in)167 /* package-private */ OemCarVolumeChangeInfo(@NonNull Parcel in) { 168 // You can override field unparcelling by defining methods like: 169 // static FieldType unparcelFieldName(Parcel in) { ... } 170 171 byte flg = in.readByte(); 172 boolean volumeChanged = (flg & 0x1) != 0; 173 CarVolumeGroupInfo _changedVolumeGroup = (flg & 0x2) == 0 174 ? null : (CarVolumeGroupInfo) in.readTypedObject(CarVolumeGroupInfo.CREATOR); 175 176 this.mVolumeChanged = volumeChanged; 177 this.mChangedVolumeGroup = _changedVolumeGroup; 178 179 // onConstructed(); // You can define this method to get a callback 180 } 181 182 @DataClass.Generated.Member 183 public static final @NonNull Parcelable.Creator<OemCarVolumeChangeInfo> CREATOR 184 = new Parcelable.Creator<OemCarVolumeChangeInfo>() { 185 @Override 186 public OemCarVolumeChangeInfo[] newArray(int size) { 187 return new OemCarVolumeChangeInfo[size]; 188 } 189 190 @Override 191 public OemCarVolumeChangeInfo createFromParcel(@NonNull Parcel in) { 192 return new OemCarVolumeChangeInfo(in); 193 } 194 }; 195 196 /** 197 * Helper information to respond when there is no volume change. 198 */ 199 @NonNull 200 public static final OemCarVolumeChangeInfo EMPTY_OEM_VOLUME_CHANGE = 201 new OemCarVolumeChangeInfo(/* volumeChanged= */ false, /* changedVolumeGroup= */ null); 202 203 /** 204 * A builder for {@link OemCarVolumeChangeInfo} 205 */ 206 @SuppressWarnings("WeakerAccess") 207 @DataClass.Generated.Member 208 public static final class Builder { 209 210 private boolean mVolumeChanged; 211 private @Nullable CarVolumeGroupInfo changedVolumeGroup; 212 213 private long mBuilderFieldsSet = 0L; 214 215 /** 216 * Creates a new Builder 217 */ Builder(boolean volumeChanged)218 public Builder(boolean volumeChanged) { 219 mVolumeChanged = volumeChanged; 220 } 221 222 @DataClass.Generated.Member setChangedVolumeGroup(@onNull CarVolumeGroupInfo value)223 public @NonNull Builder setChangedVolumeGroup(@NonNull CarVolumeGroupInfo value) { 224 validate(NonNull.class, null, value); 225 checkNotUsed(); 226 mBuilderFieldsSet |= 0x2; 227 changedVolumeGroup = value; 228 return this; 229 } 230 231 /** Builds the instance. This builder should not be touched after calling this! */ build()232 public @NonNull OemCarVolumeChangeInfo build() { 233 checkNotUsed(); 234 mBuilderFieldsSet |= 0x4; // Mark builder used 235 236 OemCarVolumeChangeInfo o = new OemCarVolumeChangeInfo( 237 mVolumeChanged, 238 changedVolumeGroup); 239 return o; 240 } 241 checkNotUsed()242 private void checkNotUsed() { 243 if ((mBuilderFieldsSet & 0x4) != 0) { 244 throw new IllegalStateException( 245 "This Builder should not be reused. Use a new Builder instance instead"); 246 } 247 } 248 } 249 250 @SuppressWarnings("unused") 251 @DataClass.Generated( 252 time = 1669943373159L, 253 codegenVersion = "1.0.23", 254 sourceFile = "packages/services/Car/car-lib/src/android/car/oem" 255 + "/OemCarVolumeChangeInfo.java", 256 inputSignatures ="private final boolean mVolumeChanged\n" 257 + "private final @Nullable android.car.media.CarVolumeGroupInfo " 258 + "changedVolumeGroup\nclass OemCarVolumeChangeInfo extends java.lang.Object" 259 + " implements [android.os.Parcelable]\n@com.android.car.internal.util" 260 + ".DataClass(genToString=true, genHiddenConstructor=true, " 261 + "genHiddenConstDefs=true, genBuilder=true, genEqualsHashCode=true)") 262 @Deprecated __metadata()263 private void __metadata() {} 264 265 266 //@formatter:on 267 // End of generated code 268 269 } 270