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