1 /* 2 * Copyright (C) 2021 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.service.rotationresolver; 18 19 import android.annotation.DurationMillisLong; 20 import android.annotation.NonNull; 21 import android.annotation.SystemApi; 22 import android.os.Parcel; 23 import android.os.Parcelable; 24 import android.view.Surface; 25 26 import com.android.internal.util.DataClass; 27 28 /** 29 * This class represents a request to an {@link RotationResolverService}. The request contains 30 * information from the system that can help RotationResolverService to determine the appropriate 31 * screen rotation. 32 * 33 * @see RotationResolverService#resolveRotation(IRotationResolverCallback, 34 * RotationResolutionRequest, ICancellationSignal) 35 * 36 * @hide 37 */ 38 @SystemApi 39 @DataClass ( 40 genParcelable = true, 41 genToString = true 42 ) 43 public final class RotationResolutionRequest implements Parcelable { 44 /** The Name of the package of the current fore-ground activity. */ 45 @NonNull private final String mForegroundPackageName; 46 47 /** The current rotation of the screen. */ 48 @Surface.Rotation private final int mCurrentRotation; 49 50 /** The proposed screen rotation in the system. */ 51 @Surface.Rotation private final int mProposedRotation; 52 53 /** Whether should use the camera sensor to resolve screen rotation. */ 54 private final boolean mShouldUseCamera; 55 56 /** The timeout of the request. */ 57 @DurationMillisLong private final long mTimeoutMillis; 58 59 60 61 62 // Code below generated by codegen v1.0.23. 63 // 64 // DO NOT MODIFY! 65 // CHECKSTYLE:OFF Generated code 66 // 67 // To regenerate run: 68 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java 69 // 70 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 71 // Settings > Editor > Code Style > Formatter Control 72 //@formatter:off 73 74 75 /** 76 * Creates a new RotationResolutionRequest. 77 * 78 * @param foregroundPackageName 79 * The Name of the package of the current fore-ground activity. 80 * @param currentRotation 81 * The current rotation of the screen. 82 * @param proposedRotation 83 * The proposed screen rotation in the system. 84 * @param shouldUseCamera 85 * Whether should use the camera sensor to resolve screen rotation. 86 * @param timeoutMillis 87 * The timeout of the request. 88 */ 89 @DataClass.Generated.Member RotationResolutionRequest( @onNull String foregroundPackageName, @Surface.Rotation int currentRotation, @Surface.Rotation int proposedRotation, boolean shouldUseCamera, @DurationMillisLong long timeoutMillis)90 public RotationResolutionRequest( 91 @NonNull String foregroundPackageName, 92 @Surface.Rotation int currentRotation, 93 @Surface.Rotation int proposedRotation, 94 boolean shouldUseCamera, 95 @DurationMillisLong long timeoutMillis) { 96 this.mForegroundPackageName = foregroundPackageName; 97 com.android.internal.util.AnnotationValidations.validate( 98 NonNull.class, null, mForegroundPackageName); 99 this.mCurrentRotation = currentRotation; 100 com.android.internal.util.AnnotationValidations.validate( 101 Surface.Rotation.class, null, mCurrentRotation); 102 this.mProposedRotation = proposedRotation; 103 com.android.internal.util.AnnotationValidations.validate( 104 Surface.Rotation.class, null, mProposedRotation); 105 this.mShouldUseCamera = shouldUseCamera; 106 this.mTimeoutMillis = timeoutMillis; 107 com.android.internal.util.AnnotationValidations.validate( 108 DurationMillisLong.class, null, mTimeoutMillis); 109 110 // onConstructed(); // You can define this method to get a callback 111 } 112 113 /** 114 * The Name of the package of the current fore-ground activity. 115 */ 116 @DataClass.Generated.Member getForegroundPackageName()117 public @NonNull String getForegroundPackageName() { 118 return mForegroundPackageName; 119 } 120 121 /** 122 * The current rotation of the screen. 123 */ 124 @DataClass.Generated.Member getCurrentRotation()125 public @Surface.Rotation int getCurrentRotation() { 126 return mCurrentRotation; 127 } 128 129 /** 130 * The proposed screen rotation in the system. 131 */ 132 @DataClass.Generated.Member getProposedRotation()133 public @Surface.Rotation int getProposedRotation() { 134 return mProposedRotation; 135 } 136 137 /** 138 * Whether should use the camera sensor to resolve screen rotation. 139 */ 140 @DataClass.Generated.Member shouldUseCamera()141 public boolean shouldUseCamera() { 142 return mShouldUseCamera; 143 } 144 145 /** 146 * The timeout of the request. 147 */ 148 @DataClass.Generated.Member getTimeoutMillis()149 public @DurationMillisLong long getTimeoutMillis() { 150 return mTimeoutMillis; 151 } 152 153 @Override 154 @DataClass.Generated.Member toString()155 public String toString() { 156 // You can override field toString logic by defining methods like: 157 // String fieldNameToString() { ... } 158 159 return "RotationResolutionRequest { " + 160 "foregroundPackageName = " + mForegroundPackageName + ", " + 161 "currentRotation = " + mCurrentRotation + ", " + 162 "proposedRotation = " + mProposedRotation + ", " + 163 "shouldUseCamera = " + mShouldUseCamera + ", " + 164 "timeoutMillis = " + mTimeoutMillis + 165 " }"; 166 } 167 168 @Override 169 @DataClass.Generated.Member writeToParcel(@onNull Parcel dest, int flags)170 public void writeToParcel(@NonNull Parcel dest, int flags) { 171 // You can override field parcelling by defining methods like: 172 // void parcelFieldName(Parcel dest, int flags) { ... } 173 174 byte flg = 0; 175 if (mShouldUseCamera) flg |= 0x8; 176 dest.writeByte(flg); 177 dest.writeString(mForegroundPackageName); 178 dest.writeInt(mCurrentRotation); 179 dest.writeInt(mProposedRotation); 180 dest.writeLong(mTimeoutMillis); 181 } 182 183 @Override 184 @DataClass.Generated.Member describeContents()185 public int describeContents() { return 0; } 186 187 /** @hide */ 188 @SuppressWarnings({"unchecked", "RedundantCast"}) 189 @DataClass.Generated.Member RotationResolutionRequest(@onNull Parcel in)190 /* package-private */ RotationResolutionRequest(@NonNull Parcel in) { 191 // You can override field unparcelling by defining methods like: 192 // static FieldType unparcelFieldName(Parcel in) { ... } 193 194 byte flg = in.readByte(); 195 boolean shouldUseCamera = (flg & 0x8) != 0; 196 String foregroundPackageName = in.readString(); 197 int currentRotation = in.readInt(); 198 int proposedRotation = in.readInt(); 199 long timeoutMillis = in.readLong(); 200 201 this.mForegroundPackageName = foregroundPackageName; 202 com.android.internal.util.AnnotationValidations.validate( 203 NonNull.class, null, mForegroundPackageName); 204 this.mCurrentRotation = currentRotation; 205 com.android.internal.util.AnnotationValidations.validate( 206 Surface.Rotation.class, null, mCurrentRotation); 207 this.mProposedRotation = proposedRotation; 208 com.android.internal.util.AnnotationValidations.validate( 209 Surface.Rotation.class, null, mProposedRotation); 210 this.mShouldUseCamera = shouldUseCamera; 211 this.mTimeoutMillis = timeoutMillis; 212 com.android.internal.util.AnnotationValidations.validate( 213 DurationMillisLong.class, null, mTimeoutMillis); 214 215 // onConstructed(); // You can define this method to get a callback 216 } 217 218 @DataClass.Generated.Member 219 public static final @NonNull Parcelable.Creator<RotationResolutionRequest> CREATOR 220 = new Parcelable.Creator<RotationResolutionRequest>() { 221 @Override 222 public RotationResolutionRequest[] newArray(int size) { 223 return new RotationResolutionRequest[size]; 224 } 225 226 @Override 227 public RotationResolutionRequest createFromParcel(@NonNull Parcel in) { 228 return new RotationResolutionRequest(in); 229 } 230 }; 231 232 @DataClass.Generated( 233 time = 1618447759819L, 234 codegenVersion = "1.0.23", 235 sourceFile = "frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java", 236 inputSignatures = "private final @android.annotation.NonNull java.lang.String mForegroundPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)") 237 @Deprecated __metadata()238 private void __metadata() {} 239 240 241 //@formatter:on 242 // End of generated code 243 244 } 245