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.speech; 18 19 import android.annotation.NonNull; 20 import android.content.Context; 21 import android.content.Intent; 22 import android.os.Parcelable; 23 24 import com.android.internal.util.DataClass; 25 26 import java.util.List; 27 28 /** Encodes the level of support for a given speech recognition request */ 29 @DataClass( 30 genConstructor = false, 31 genBuilder = true, 32 genEqualsHashCode = true, 33 genHiddenConstDefs = true, 34 genParcelable = true, 35 genToString = true 36 ) 37 public final class RecognitionSupport implements Parcelable { 38 39 /** Support for this request is ready for use on this device for the returned languages. */ 40 @NonNull 41 @DataClass.PluralOf("installedOnDeviceLanguage") 42 private List<String> mInstalledOnDeviceLanguages = List.of(); 43 44 /** Support for this request is scheduled for download for the returned languages. */ 45 @NonNull 46 @DataClass.PluralOf("pendingOnDeviceLanguage") 47 private List<String> mPendingOnDeviceLanguages = List.of(); 48 49 /** 50 * These languages are supported but need to be downloaded before use. See {@link 51 * SpeechRecognizer#triggerModelDownload(Intent)}. 52 */ 53 @NonNull 54 @DataClass.PluralOf("supportedOnDeviceLanguage") 55 private List<String> mSupportedOnDeviceLanguages = List.of(); 56 57 /** 58 * Support for this request is available via a remote implementation. {@link SpeechRecognizer} 59 * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to 60 * return an empty list. 61 */ 62 @NonNull 63 @DataClass.PluralOf("onlineLanguage") 64 private List<String> mOnlineLanguages = List.of(); 65 66 67 68 // Code below generated by codegen v1.0.23. 69 // 70 // DO NOT MODIFY! 71 // CHECKSTYLE:OFF Generated code 72 // 73 // To regenerate run: 74 // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/speech/RecognitionSupport.java 75 // 76 // To exclude the generated code from IntelliJ auto-formatting enable (one-time): 77 // Settings > Editor > Code Style > Formatter Control 78 //@formatter:off 79 80 81 @DataClass.Generated.Member RecognitionSupport( @onNull List<String> installedOnDeviceLanguages, @NonNull List<String> pendingOnDeviceLanguages, @NonNull List<String> supportedOnDeviceLanguages, @NonNull List<String> onlineLanguages)82 /* package-private */ RecognitionSupport( 83 @NonNull List<String> installedOnDeviceLanguages, 84 @NonNull List<String> pendingOnDeviceLanguages, 85 @NonNull List<String> supportedOnDeviceLanguages, 86 @NonNull List<String> onlineLanguages) { 87 this.mInstalledOnDeviceLanguages = installedOnDeviceLanguages; 88 com.android.internal.util.AnnotationValidations.validate( 89 NonNull.class, null, mInstalledOnDeviceLanguages); 90 this.mPendingOnDeviceLanguages = pendingOnDeviceLanguages; 91 com.android.internal.util.AnnotationValidations.validate( 92 NonNull.class, null, mPendingOnDeviceLanguages); 93 this.mSupportedOnDeviceLanguages = supportedOnDeviceLanguages; 94 com.android.internal.util.AnnotationValidations.validate( 95 NonNull.class, null, mSupportedOnDeviceLanguages); 96 this.mOnlineLanguages = onlineLanguages; 97 com.android.internal.util.AnnotationValidations.validate( 98 NonNull.class, null, mOnlineLanguages); 99 100 // onConstructed(); // You can define this method to get a callback 101 } 102 103 /** 104 * Support for this request is ready for use on this device for the returned languages. 105 */ 106 @DataClass.Generated.Member getInstalledOnDeviceLanguages()107 public @NonNull List<String> getInstalledOnDeviceLanguages() { 108 return mInstalledOnDeviceLanguages; 109 } 110 111 /** 112 * Support for this request is scheduled for download for the returned languages. 113 */ 114 @DataClass.Generated.Member getPendingOnDeviceLanguages()115 public @NonNull List<String> getPendingOnDeviceLanguages() { 116 return mPendingOnDeviceLanguages; 117 } 118 119 /** 120 * These languages are supported but need to be downloaded before use. See {@link 121 * SpeechRecognizer#triggerModelDownload(Intent)}. 122 */ 123 @DataClass.Generated.Member getSupportedOnDeviceLanguages()124 public @NonNull List<String> getSupportedOnDeviceLanguages() { 125 return mSupportedOnDeviceLanguages; 126 } 127 128 /** 129 * Support for this request is available via a remote implementation. {@link SpeechRecognizer} 130 * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to 131 * return an empty list. 132 */ 133 @DataClass.Generated.Member getOnlineLanguages()134 public @NonNull List<String> getOnlineLanguages() { 135 return mOnlineLanguages; 136 } 137 138 @Override 139 @DataClass.Generated.Member toString()140 public String toString() { 141 // You can override field toString logic by defining methods like: 142 // String fieldNameToString() { ... } 143 144 return "RecognitionSupport { " + 145 "installedOnDeviceLanguages = " + mInstalledOnDeviceLanguages + ", " + 146 "pendingOnDeviceLanguages = " + mPendingOnDeviceLanguages + ", " + 147 "supportedOnDeviceLanguages = " + mSupportedOnDeviceLanguages + ", " + 148 "onlineLanguages = " + mOnlineLanguages + 149 " }"; 150 } 151 152 @Override 153 @DataClass.Generated.Member equals(@ndroid.annotation.Nullable Object o)154 public boolean equals(@android.annotation.Nullable Object o) { 155 // You can override field equality logic by defining either of the methods like: 156 // boolean fieldNameEquals(RecognitionSupport other) { ... } 157 // boolean fieldNameEquals(FieldType otherValue) { ... } 158 159 if (this == o) return true; 160 if (o == null || getClass() != o.getClass()) return false; 161 @SuppressWarnings("unchecked") 162 RecognitionSupport that = (RecognitionSupport) o; 163 //noinspection PointlessBooleanExpression 164 return true 165 && java.util.Objects.equals(mInstalledOnDeviceLanguages, that.mInstalledOnDeviceLanguages) 166 && java.util.Objects.equals(mPendingOnDeviceLanguages, that.mPendingOnDeviceLanguages) 167 && java.util.Objects.equals(mSupportedOnDeviceLanguages, that.mSupportedOnDeviceLanguages) 168 && java.util.Objects.equals(mOnlineLanguages, that.mOnlineLanguages); 169 } 170 171 @Override 172 @DataClass.Generated.Member hashCode()173 public int hashCode() { 174 // You can override field hashCode logic by defining methods like: 175 // int fieldNameHashCode() { ... } 176 177 int _hash = 1; 178 _hash = 31 * _hash + java.util.Objects.hashCode(mInstalledOnDeviceLanguages); 179 _hash = 31 * _hash + java.util.Objects.hashCode(mPendingOnDeviceLanguages); 180 _hash = 31 * _hash + java.util.Objects.hashCode(mSupportedOnDeviceLanguages); 181 _hash = 31 * _hash + java.util.Objects.hashCode(mOnlineLanguages); 182 return _hash; 183 } 184 185 @Override 186 @DataClass.Generated.Member writeToParcel(@onNull android.os.Parcel dest, int flags)187 public void writeToParcel(@NonNull android.os.Parcel dest, int flags) { 188 // You can override field parcelling by defining methods like: 189 // void parcelFieldName(Parcel dest, int flags) { ... } 190 191 dest.writeStringList(mInstalledOnDeviceLanguages); 192 dest.writeStringList(mPendingOnDeviceLanguages); 193 dest.writeStringList(mSupportedOnDeviceLanguages); 194 dest.writeStringList(mOnlineLanguages); 195 } 196 197 @Override 198 @DataClass.Generated.Member describeContents()199 public int describeContents() { return 0; } 200 201 /** @hide */ 202 @SuppressWarnings({"unchecked", "RedundantCast"}) 203 @DataClass.Generated.Member RecognitionSupport(@onNull android.os.Parcel in)204 /* package-private */ RecognitionSupport(@NonNull android.os.Parcel in) { 205 // You can override field unparcelling by defining methods like: 206 // static FieldType unparcelFieldName(Parcel in) { ... } 207 208 List<String> installedOnDeviceLanguages = new java.util.ArrayList<>(); 209 in.readStringList(installedOnDeviceLanguages); 210 List<String> pendingOnDeviceLanguages = new java.util.ArrayList<>(); 211 in.readStringList(pendingOnDeviceLanguages); 212 List<String> supportedOnDeviceLanguages = new java.util.ArrayList<>(); 213 in.readStringList(supportedOnDeviceLanguages); 214 List<String> onlineLanguages = new java.util.ArrayList<>(); 215 in.readStringList(onlineLanguages); 216 217 this.mInstalledOnDeviceLanguages = installedOnDeviceLanguages; 218 com.android.internal.util.AnnotationValidations.validate( 219 NonNull.class, null, mInstalledOnDeviceLanguages); 220 this.mPendingOnDeviceLanguages = pendingOnDeviceLanguages; 221 com.android.internal.util.AnnotationValidations.validate( 222 NonNull.class, null, mPendingOnDeviceLanguages); 223 this.mSupportedOnDeviceLanguages = supportedOnDeviceLanguages; 224 com.android.internal.util.AnnotationValidations.validate( 225 NonNull.class, null, mSupportedOnDeviceLanguages); 226 this.mOnlineLanguages = onlineLanguages; 227 com.android.internal.util.AnnotationValidations.validate( 228 NonNull.class, null, mOnlineLanguages); 229 230 // onConstructed(); // You can define this method to get a callback 231 } 232 233 @DataClass.Generated.Member 234 public static final @NonNull Parcelable.Creator<RecognitionSupport> CREATOR 235 = new Parcelable.Creator<RecognitionSupport>() { 236 @Override 237 public RecognitionSupport[] newArray(int size) { 238 return new RecognitionSupport[size]; 239 } 240 241 @Override 242 public RecognitionSupport createFromParcel(@NonNull android.os.Parcel in) { 243 return new RecognitionSupport(in); 244 } 245 }; 246 247 /** 248 * A builder for {@link RecognitionSupport} 249 */ 250 @SuppressWarnings("WeakerAccess") 251 @DataClass.Generated.Member 252 public static final class Builder { 253 254 private @NonNull List<String> mInstalledOnDeviceLanguages; 255 private @NonNull List<String> mPendingOnDeviceLanguages; 256 private @NonNull List<String> mSupportedOnDeviceLanguages; 257 private @NonNull List<String> mOnlineLanguages; 258 259 private long mBuilderFieldsSet = 0L; 260 Builder()261 public Builder() { 262 } 263 264 /** 265 * Support for this request is ready for use on this device for the returned languages. 266 */ 267 @DataClass.Generated.Member setInstalledOnDeviceLanguages(@onNull List<String> value)268 public @NonNull Builder setInstalledOnDeviceLanguages(@NonNull List<String> value) { 269 checkNotUsed(); 270 mBuilderFieldsSet |= 0x1; 271 mInstalledOnDeviceLanguages = value; 272 return this; 273 } 274 275 /** @see #setInstalledOnDeviceLanguages */ 276 @DataClass.Generated.Member addInstalledOnDeviceLanguage(@onNull String value)277 public @NonNull Builder addInstalledOnDeviceLanguage(@NonNull String value) { 278 if (mInstalledOnDeviceLanguages == null) setInstalledOnDeviceLanguages(new java.util.ArrayList<>()); 279 mInstalledOnDeviceLanguages.add(value); 280 return this; 281 } 282 283 /** 284 * Support for this request is scheduled for download for the returned languages. 285 */ 286 @DataClass.Generated.Member setPendingOnDeviceLanguages(@onNull List<String> value)287 public @NonNull Builder setPendingOnDeviceLanguages(@NonNull List<String> value) { 288 checkNotUsed(); 289 mBuilderFieldsSet |= 0x2; 290 mPendingOnDeviceLanguages = value; 291 return this; 292 } 293 294 /** @see #setPendingOnDeviceLanguages */ 295 @DataClass.Generated.Member addPendingOnDeviceLanguage(@onNull String value)296 public @NonNull Builder addPendingOnDeviceLanguage(@NonNull String value) { 297 if (mPendingOnDeviceLanguages == null) setPendingOnDeviceLanguages(new java.util.ArrayList<>()); 298 mPendingOnDeviceLanguages.add(value); 299 return this; 300 } 301 302 /** 303 * These languages are supported but need to be downloaded before use. See {@link 304 * SpeechRecognizer#triggerModelDownload(Intent)}. 305 */ 306 @DataClass.Generated.Member setSupportedOnDeviceLanguages(@onNull List<String> value)307 public @NonNull Builder setSupportedOnDeviceLanguages(@NonNull List<String> value) { 308 checkNotUsed(); 309 mBuilderFieldsSet |= 0x4; 310 mSupportedOnDeviceLanguages = value; 311 return this; 312 } 313 314 /** @see #setSupportedOnDeviceLanguages */ 315 @DataClass.Generated.Member addSupportedOnDeviceLanguage(@onNull String value)316 public @NonNull Builder addSupportedOnDeviceLanguage(@NonNull String value) { 317 if (mSupportedOnDeviceLanguages == null) setSupportedOnDeviceLanguages(new java.util.ArrayList<>()); 318 mSupportedOnDeviceLanguages.add(value); 319 return this; 320 } 321 322 /** 323 * Support for this request is available via a remote implementation. {@link SpeechRecognizer} 324 * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to 325 * return an empty list. 326 */ 327 @DataClass.Generated.Member setOnlineLanguages(@onNull List<String> value)328 public @NonNull Builder setOnlineLanguages(@NonNull List<String> value) { 329 checkNotUsed(); 330 mBuilderFieldsSet |= 0x8; 331 mOnlineLanguages = value; 332 return this; 333 } 334 335 /** @see #setOnlineLanguages */ 336 @DataClass.Generated.Member addOnlineLanguage(@onNull String value)337 public @NonNull Builder addOnlineLanguage(@NonNull String value) { 338 if (mOnlineLanguages == null) setOnlineLanguages(new java.util.ArrayList<>()); 339 mOnlineLanguages.add(value); 340 return this; 341 } 342 343 /** Builds the instance. This builder should not be touched after calling this! */ build()344 public @NonNull RecognitionSupport build() { 345 checkNotUsed(); 346 mBuilderFieldsSet |= 0x10; // Mark builder used 347 348 if ((mBuilderFieldsSet & 0x1) == 0) { 349 mInstalledOnDeviceLanguages = List.of(); 350 } 351 if ((mBuilderFieldsSet & 0x2) == 0) { 352 mPendingOnDeviceLanguages = List.of(); 353 } 354 if ((mBuilderFieldsSet & 0x4) == 0) { 355 mSupportedOnDeviceLanguages = List.of(); 356 } 357 if ((mBuilderFieldsSet & 0x8) == 0) { 358 mOnlineLanguages = List.of(); 359 } 360 RecognitionSupport o = new RecognitionSupport( 361 mInstalledOnDeviceLanguages, 362 mPendingOnDeviceLanguages, 363 mSupportedOnDeviceLanguages, 364 mOnlineLanguages); 365 return o; 366 } 367 checkNotUsed()368 private void checkNotUsed() { 369 if ((mBuilderFieldsSet & 0x10) != 0) { 370 throw new IllegalStateException( 371 "This Builder should not be reused. Use a new Builder instance instead"); 372 } 373 } 374 } 375 376 @DataClass.Generated( 377 time = 1648131602084L, 378 codegenVersion = "1.0.23", 379 sourceFile = "frameworks/base/core/java/android/speech/RecognitionSupport.java", 380 inputSignatures = "private @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"installedOnDeviceLanguage\") java.util.List<java.lang.String> mInstalledOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"pendingOnDeviceLanguage\") java.util.List<java.lang.String> mPendingOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"supportedOnDeviceLanguage\") java.util.List<java.lang.String> mSupportedOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"onlineLanguage\") java.util.List<java.lang.String> mOnlineLanguages\nclass RecognitionSupport extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)") 381 @Deprecated __metadata()382 private void __metadata() {} 383 384 385 //@formatter:on 386 // End of generated code 387 388 } 389