From 3d9a4ea5a7ee4f3c7bb881005e82f18b581fc2ed Mon Sep 17 00:00:00 2001 From: Andrea Ambu Date: Wed, 16 Feb 2022 17:46:41 +0000 Subject: [PATCH] speech: Add online languages to RecognitionSupport This is based on the feedback from the speech recognition team: we need to distinguish information for online vs offline classifiers. The deprecated APIs are due to be removed soon: b/225420491 Bug: 204189031 Test: atest Change-Id: I48e413c13480df0c150cd7663e9d54196149b024 --- core/api/current.txt | 30 +- .../android/speech/RecognitionSupport.java | 338 ++++++++++++++++-- 2 files changed, 322 insertions(+), 46 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 37022d0ab402b..06ebe26e47097 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -39631,22 +39631,34 @@ package android.speech { public final class RecognitionSupport implements android.os.Parcelable { method public int describeContents(); - method @NonNull public java.util.List getInstalledLanguages(); - method @NonNull public java.util.List getPendingLanguages(); - method @NonNull public java.util.List getSupportedLanguages(); + method @Deprecated @NonNull public java.util.List getInstalledLanguages(); + method @NonNull public java.util.List getInstalledOnDeviceLanguages(); + method @NonNull public java.util.List getOnlineLanguages(); + method @Deprecated @NonNull public java.util.List getPendingLanguages(); + method @NonNull public java.util.List getPendingOnDeviceLanguages(); + method @Deprecated @NonNull public java.util.List getSupportedLanguages(); + method @NonNull public java.util.List getSupportedOnDeviceLanguages(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; } public static final class RecognitionSupport.Builder { ctor public RecognitionSupport.Builder(); - method @NonNull public android.speech.RecognitionSupport.Builder addInstalledLanguage(@NonNull String); - method @NonNull public android.speech.RecognitionSupport.Builder addPendingLanguage(@NonNull String); - method @NonNull public android.speech.RecognitionSupport.Builder addSupportedLanguage(@NonNull String); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder addInstalledLanguage(@NonNull String); + method @NonNull public android.speech.RecognitionSupport.Builder addInstalledOnDeviceLanguage(@NonNull String); + method @NonNull public android.speech.RecognitionSupport.Builder addOnlineLanguage(@NonNull String); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder addPendingLanguage(@NonNull String); + method @NonNull public android.speech.RecognitionSupport.Builder addPendingOnDeviceLanguage(@NonNull String); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder addSupportedLanguage(@NonNull String); + method @NonNull public android.speech.RecognitionSupport.Builder addSupportedOnDeviceLanguage(@NonNull String); method @NonNull public android.speech.RecognitionSupport build(); - method @NonNull public android.speech.RecognitionSupport.Builder setInstalledLanguages(@NonNull java.util.List); - method @NonNull public android.speech.RecognitionSupport.Builder setPendingLanguages(@NonNull java.util.List); - method @NonNull public android.speech.RecognitionSupport.Builder setSupportedLanguages(@NonNull java.util.List); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder setInstalledLanguages(@NonNull java.util.List); + method @NonNull public android.speech.RecognitionSupport.Builder setInstalledOnDeviceLanguages(@NonNull java.util.List); + method @NonNull public android.speech.RecognitionSupport.Builder setOnlineLanguages(@NonNull java.util.List); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder setPendingLanguages(@NonNull java.util.List); + method @NonNull public android.speech.RecognitionSupport.Builder setPendingOnDeviceLanguages(@NonNull java.util.List); + method @Deprecated @NonNull public android.speech.RecognitionSupport.Builder setSupportedLanguages(@NonNull java.util.List); + method @NonNull public android.speech.RecognitionSupport.Builder setSupportedOnDeviceLanguages(@NonNull java.util.List); } public interface RecognitionSupportCallback { diff --git a/core/java/android/speech/RecognitionSupport.java b/core/java/android/speech/RecognitionSupport.java index 43c8e1b956f05..60c3b63e80c0d 100644 --- a/core/java/android/speech/RecognitionSupport.java +++ b/core/java/android/speech/RecognitionSupport.java @@ -17,6 +17,8 @@ package android.speech; import android.annotation.NonNull; +import android.content.Context; +import android.content.Intent; import android.os.Parcelable; import com.android.internal.util.DataClass; @@ -34,19 +36,63 @@ import java.util.List; ) public final class RecognitionSupport implements Parcelable { + /** + * Support for this request is ready for use on this device for the returned languages. + * + * @deprecated See {@link #getInstalledOnDeviceLanguages()}. + */ + @NonNull + @Deprecated + @DataClass.PluralOf("installedLanguage") + private List mInstalledLanguages = List.of(); + + /** + * Support for this request is scheduled for download for the returned languages. + * + * @deprecated See {@link #getPendingOnDeviceLanguages()}. + */ + @NonNull + @Deprecated + @DataClass.PluralOf("pendingLanguage") + private List mPendingLanguages = List.of(); + + /** + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. + * + * @deprecated See {@link #getSupportedOnDeviceLanguages()}. + */ + @NonNull + @Deprecated + @DataClass.PluralOf("supportedLanguage") + private List mSupportedLanguages = List.of(); + /** Support for this request is ready for use on this device for the returned languages. */ @NonNull - @DataClass.PluralOf("installedLanguage") - private List mInstalledLanguages = null; + @DataClass.PluralOf("installedOnDeviceLanguage") + private List mInstalledOnDeviceLanguages = List.of(); /** Support for this request is scheduled for download for the returned languages. */ - @DataClass.PluralOf("pendingLanguage") - @NonNull private List mPendingLanguages = null; - - /** These languages are supported but need to be downloaded before use. */ @NonNull - @DataClass.PluralOf("supportedLanguage") - private List mSupportedLanguages = null; + @DataClass.PluralOf("pendingOnDeviceLanguage") + private List mPendingOnDeviceLanguages = List.of(); + + /** + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. + */ + @NonNull + @DataClass.PluralOf("supportedOnDeviceLanguage") + private List mSupportedOnDeviceLanguages = List.of(); + + /** + * Support for this request is available via a remote implementation. {@link SpeechRecognizer} + * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to + * return an empty list. + */ + @NonNull + @DataClass.PluralOf("onlineLanguage") + private List mOnlineLanguages = List.of(); @@ -65,44 +111,108 @@ public final class RecognitionSupport implements Parcelable { @DataClass.Generated.Member /* package-private */ RecognitionSupport( - @NonNull List installedLanguages, - @NonNull List pendingLanguages, - @NonNull List supportedLanguages) { + @NonNull @Deprecated List installedLanguages, + @NonNull @Deprecated List pendingLanguages, + @NonNull @Deprecated List supportedLanguages, + @NonNull List installedOnDeviceLanguages, + @NonNull List pendingOnDeviceLanguages, + @NonNull List supportedOnDeviceLanguages, + @NonNull List onlineLanguages) { this.mInstalledLanguages = installedLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mInstalledLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mInstalledLanguages); this.mPendingLanguages = pendingLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mPendingLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mPendingLanguages); this.mSupportedLanguages = supportedLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mSupportedLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mSupportedLanguages); + this.mInstalledOnDeviceLanguages = installedOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mInstalledOnDeviceLanguages); + this.mPendingOnDeviceLanguages = pendingOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mPendingOnDeviceLanguages); + this.mSupportedOnDeviceLanguages = supportedOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSupportedOnDeviceLanguages); + this.mOnlineLanguages = onlineLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mOnlineLanguages); // onConstructed(); // You can define this method to get a callback } /** * Support for this request is ready for use on this device for the returned languages. + * + * @deprecated See {@link #getInstalledOnDeviceLanguages()}. */ @DataClass.Generated.Member - public @NonNull List getInstalledLanguages() { + @NonNull @Deprecated public List getInstalledLanguages() { return mInstalledLanguages; } + /** + * Support for this request is scheduled for download for the returned languages. + * + * @deprecated See {@link #getPendingOnDeviceLanguages()}. + */ + @DataClass.Generated.Member + @NonNull @Deprecated public List getPendingLanguages() { + return mPendingLanguages; + } + + /** + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. + * + * @deprecated See {@link #getSupportedOnDeviceLanguages()}. + */ + @DataClass.Generated.Member + @NonNull @Deprecated public List getSupportedLanguages() { + return mSupportedLanguages; + } + + /** + * Support for this request is ready for use on this device for the returned languages. + */ + @DataClass.Generated.Member + public @NonNull List getInstalledOnDeviceLanguages() { + return mInstalledOnDeviceLanguages; + } + /** * Support for this request is scheduled for download for the returned languages. */ @DataClass.Generated.Member - public @NonNull List getPendingLanguages() { - return mPendingLanguages; + public @NonNull List getPendingOnDeviceLanguages() { + return mPendingOnDeviceLanguages; } /** - * These languages are supported but need to be downloaded before use. + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. */ @DataClass.Generated.Member - public @NonNull List getSupportedLanguages() { - return mSupportedLanguages; + public @NonNull List getSupportedOnDeviceLanguages() { + return mSupportedOnDeviceLanguages; + } + + /** + * Support for this request is available via a remote implementation. {@link SpeechRecognizer} + * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to + * return an empty list. + */ + @DataClass.Generated.Member + public @NonNull List getOnlineLanguages() { + return mOnlineLanguages; } @Override @@ -114,7 +224,11 @@ public final class RecognitionSupport implements Parcelable { return "RecognitionSupport { " + "installedLanguages = " + mInstalledLanguages + ", " + "pendingLanguages = " + mPendingLanguages + ", " + - "supportedLanguages = " + mSupportedLanguages + + "supportedLanguages = " + mSupportedLanguages + ", " + + "installedOnDeviceLanguages = " + mInstalledOnDeviceLanguages + ", " + + "pendingOnDeviceLanguages = " + mPendingOnDeviceLanguages + ", " + + "supportedOnDeviceLanguages = " + mSupportedOnDeviceLanguages + ", " + + "onlineLanguages = " + mOnlineLanguages + " }"; } @@ -133,7 +247,11 @@ public final class RecognitionSupport implements Parcelable { return true && java.util.Objects.equals(mInstalledLanguages, that.mInstalledLanguages) && java.util.Objects.equals(mPendingLanguages, that.mPendingLanguages) - && java.util.Objects.equals(mSupportedLanguages, that.mSupportedLanguages); + && java.util.Objects.equals(mSupportedLanguages, that.mSupportedLanguages) + && java.util.Objects.equals(mInstalledOnDeviceLanguages, that.mInstalledOnDeviceLanguages) + && java.util.Objects.equals(mPendingOnDeviceLanguages, that.mPendingOnDeviceLanguages) + && java.util.Objects.equals(mSupportedOnDeviceLanguages, that.mSupportedOnDeviceLanguages) + && java.util.Objects.equals(mOnlineLanguages, that.mOnlineLanguages); } @Override @@ -146,6 +264,10 @@ public final class RecognitionSupport implements Parcelable { _hash = 31 * _hash + java.util.Objects.hashCode(mInstalledLanguages); _hash = 31 * _hash + java.util.Objects.hashCode(mPendingLanguages); _hash = 31 * _hash + java.util.Objects.hashCode(mSupportedLanguages); + _hash = 31 * _hash + java.util.Objects.hashCode(mInstalledOnDeviceLanguages); + _hash = 31 * _hash + java.util.Objects.hashCode(mPendingOnDeviceLanguages); + _hash = 31 * _hash + java.util.Objects.hashCode(mSupportedOnDeviceLanguages); + _hash = 31 * _hash + java.util.Objects.hashCode(mOnlineLanguages); return _hash; } @@ -158,6 +280,10 @@ public final class RecognitionSupport implements Parcelable { dest.writeStringList(mInstalledLanguages); dest.writeStringList(mPendingLanguages); dest.writeStringList(mSupportedLanguages); + dest.writeStringList(mInstalledOnDeviceLanguages); + dest.writeStringList(mPendingOnDeviceLanguages); + dest.writeStringList(mSupportedOnDeviceLanguages); + dest.writeStringList(mOnlineLanguages); } @Override @@ -177,16 +303,42 @@ public final class RecognitionSupport implements Parcelable { in.readStringList(pendingLanguages); List supportedLanguages = new java.util.ArrayList<>(); in.readStringList(supportedLanguages); + List installedOnDeviceLanguages = new java.util.ArrayList<>(); + in.readStringList(installedOnDeviceLanguages); + List pendingOnDeviceLanguages = new java.util.ArrayList<>(); + in.readStringList(pendingOnDeviceLanguages); + List supportedOnDeviceLanguages = new java.util.ArrayList<>(); + in.readStringList(supportedOnDeviceLanguages); + List onlineLanguages = new java.util.ArrayList<>(); + in.readStringList(onlineLanguages); this.mInstalledLanguages = installedLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mInstalledLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mInstalledLanguages); this.mPendingLanguages = pendingLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mPendingLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mPendingLanguages); this.mSupportedLanguages = supportedLanguages; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mSupportedLanguages); + com.android.internal.util.AnnotationValidations.validate( + Deprecated.class, null, mSupportedLanguages); + this.mInstalledOnDeviceLanguages = installedOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mInstalledOnDeviceLanguages); + this.mPendingOnDeviceLanguages = pendingOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mPendingOnDeviceLanguages); + this.mSupportedOnDeviceLanguages = supportedOnDeviceLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mSupportedOnDeviceLanguages); + this.mOnlineLanguages = onlineLanguages; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mOnlineLanguages); // onConstructed(); // You can define this method to get a callback } @@ -212,9 +364,13 @@ public final class RecognitionSupport implements Parcelable { @DataClass.Generated.Member public static final class Builder { - private @NonNull List mInstalledLanguages; - private @NonNull List mPendingLanguages; - private @NonNull List mSupportedLanguages; + private @NonNull @Deprecated List mInstalledLanguages; + private @NonNull @Deprecated List mPendingLanguages; + private @NonNull @Deprecated List mSupportedLanguages; + private @NonNull List mInstalledOnDeviceLanguages; + private @NonNull List mPendingOnDeviceLanguages; + private @NonNull List mSupportedOnDeviceLanguages; + private @NonNull List mOnlineLanguages; private long mBuilderFieldsSet = 0L; @@ -223,9 +379,12 @@ public final class RecognitionSupport implements Parcelable { /** * Support for this request is ready for use on this device for the returned languages. + * + * @deprecated See {@link #getInstalledOnDeviceLanguages()}. */ @DataClass.Generated.Member - public @NonNull Builder setInstalledLanguages(@NonNull List value) { + @Deprecated @NonNull + public Builder setInstalledLanguages(@NonNull @Deprecated List value) { checkNotUsed(); mBuilderFieldsSet |= 0x1; mInstalledLanguages = value; @@ -234,7 +393,8 @@ public final class RecognitionSupport implements Parcelable { /** @see #setInstalledLanguages */ @DataClass.Generated.Member - public @NonNull Builder addInstalledLanguage(@NonNull String value) { + @Deprecated @NonNull + public Builder addInstalledLanguage(@NonNull String value) { if (mInstalledLanguages == null) setInstalledLanguages(new java.util.ArrayList<>()); mInstalledLanguages.add(value); return this; @@ -242,9 +402,12 @@ public final class RecognitionSupport implements Parcelable { /** * Support for this request is scheduled for download for the returned languages. + * + * @deprecated See {@link #getPendingOnDeviceLanguages()}. */ @DataClass.Generated.Member - public @NonNull Builder setPendingLanguages(@NonNull List value) { + @Deprecated @NonNull + public Builder setPendingLanguages(@NonNull @Deprecated List value) { checkNotUsed(); mBuilderFieldsSet |= 0x2; mPendingLanguages = value; @@ -253,17 +416,22 @@ public final class RecognitionSupport implements Parcelable { /** @see #setPendingLanguages */ @DataClass.Generated.Member - public @NonNull Builder addPendingLanguage(@NonNull String value) { + @Deprecated @NonNull + public Builder addPendingLanguage(@NonNull String value) { if (mPendingLanguages == null) setPendingLanguages(new java.util.ArrayList<>()); mPendingLanguages.add(value); return this; } /** - * These languages are supported but need to be downloaded before use. + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. + * + * @deprecated See {@link #getSupportedOnDeviceLanguages()}. */ @DataClass.Generated.Member - public @NonNull Builder setSupportedLanguages(@NonNull List value) { + @Deprecated @NonNull + public Builder setSupportedLanguages(@NonNull @Deprecated List value) { checkNotUsed(); mBuilderFieldsSet |= 0x4; mSupportedLanguages = value; @@ -272,35 +440,131 @@ public final class RecognitionSupport implements Parcelable { /** @see #setSupportedLanguages */ @DataClass.Generated.Member - public @NonNull Builder addSupportedLanguage(@NonNull String value) { + @Deprecated @NonNull + public Builder addSupportedLanguage(@NonNull String value) { if (mSupportedLanguages == null) setSupportedLanguages(new java.util.ArrayList<>()); mSupportedLanguages.add(value); return this; } + /** + * Support for this request is ready for use on this device for the returned languages. + */ + @DataClass.Generated.Member + public @NonNull Builder setInstalledOnDeviceLanguages(@NonNull List value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x8; + mInstalledOnDeviceLanguages = value; + return this; + } + + /** @see #setInstalledOnDeviceLanguages */ + @DataClass.Generated.Member + public @NonNull Builder addInstalledOnDeviceLanguage(@NonNull String value) { + if (mInstalledOnDeviceLanguages == null) setInstalledOnDeviceLanguages(new java.util.ArrayList<>()); + mInstalledOnDeviceLanguages.add(value); + return this; + } + + /** + * Support for this request is scheduled for download for the returned languages. + */ + @DataClass.Generated.Member + public @NonNull Builder setPendingOnDeviceLanguages(@NonNull List value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x10; + mPendingOnDeviceLanguages = value; + return this; + } + + /** @see #setPendingOnDeviceLanguages */ + @DataClass.Generated.Member + public @NonNull Builder addPendingOnDeviceLanguage(@NonNull String value) { + if (mPendingOnDeviceLanguages == null) setPendingOnDeviceLanguages(new java.util.ArrayList<>()); + mPendingOnDeviceLanguages.add(value); + return this; + } + + /** + * These languages are supported but need to be downloaded before use. See {@link + * SpeechRecognizer#triggerModelDownload(Intent)}. + */ + @DataClass.Generated.Member + public @NonNull Builder setSupportedOnDeviceLanguages(@NonNull List value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x20; + mSupportedOnDeviceLanguages = value; + return this; + } + + /** @see #setSupportedOnDeviceLanguages */ + @DataClass.Generated.Member + public @NonNull Builder addSupportedOnDeviceLanguage(@NonNull String value) { + if (mSupportedOnDeviceLanguages == null) setSupportedOnDeviceLanguages(new java.util.ArrayList<>()); + mSupportedOnDeviceLanguages.add(value); + return this; + } + + /** + * Support for this request is available via a remote implementation. {@link SpeechRecognizer} + * created via {@link SpeechRecognizer#createOnDeviceSpeechRecognizer(Context)} are expected to + * return an empty list. + */ + @DataClass.Generated.Member + public @NonNull Builder setOnlineLanguages(@NonNull List value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x40; + mOnlineLanguages = value; + return this; + } + + /** @see #setOnlineLanguages */ + @DataClass.Generated.Member + public @NonNull Builder addOnlineLanguage(@NonNull String value) { + if (mOnlineLanguages == null) setOnlineLanguages(new java.util.ArrayList<>()); + mOnlineLanguages.add(value); + return this; + } + /** Builds the instance. This builder should not be touched after calling this! */ public @NonNull RecognitionSupport build() { checkNotUsed(); - mBuilderFieldsSet |= 0x8; // Mark builder used + mBuilderFieldsSet |= 0x80; // Mark builder used if ((mBuilderFieldsSet & 0x1) == 0) { - mInstalledLanguages = null; + mInstalledLanguages = List.of(); } if ((mBuilderFieldsSet & 0x2) == 0) { - mPendingLanguages = null; + mPendingLanguages = List.of(); } if ((mBuilderFieldsSet & 0x4) == 0) { - mSupportedLanguages = null; + mSupportedLanguages = List.of(); + } + if ((mBuilderFieldsSet & 0x8) == 0) { + mInstalledOnDeviceLanguages = List.of(); + } + if ((mBuilderFieldsSet & 0x10) == 0) { + mPendingOnDeviceLanguages = List.of(); + } + if ((mBuilderFieldsSet & 0x20) == 0) { + mSupportedOnDeviceLanguages = List.of(); + } + if ((mBuilderFieldsSet & 0x40) == 0) { + mOnlineLanguages = List.of(); } RecognitionSupport o = new RecognitionSupport( mInstalledLanguages, mPendingLanguages, - mSupportedLanguages); + mSupportedLanguages, + mInstalledOnDeviceLanguages, + mPendingOnDeviceLanguages, + mSupportedOnDeviceLanguages, + mOnlineLanguages); return o; } private void checkNotUsed() { - if ((mBuilderFieldsSet & 0x8) != 0) { + if ((mBuilderFieldsSet & 0x80) != 0) { throw new IllegalStateException( "This Builder should not be reused. Use a new Builder instance instead"); } @@ -308,10 +572,10 @@ public final class RecognitionSupport implements Parcelable { } @DataClass.Generated( - time = 1644582623366L, + time = 1647890081869L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/speech/RecognitionSupport.java", - inputSignatures = "private @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"installedLanguage\") java.util.List mInstalledLanguages\nprivate @com.android.internal.util.DataClass.PluralOf(\"pendingLanguage\") @android.annotation.NonNull java.util.List mPendingLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"supportedLanguage\") java.util.List mSupportedLanguages\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)") + inputSignatures = "private @android.annotation.NonNull @java.lang.Deprecated @com.android.internal.util.DataClass.PluralOf(\"installedLanguage\") java.util.List mInstalledLanguages\nprivate @android.annotation.NonNull @java.lang.Deprecated @com.android.internal.util.DataClass.PluralOf(\"pendingLanguage\") java.util.List mPendingLanguages\nprivate @android.annotation.NonNull @java.lang.Deprecated @com.android.internal.util.DataClass.PluralOf(\"supportedLanguage\") java.util.List mSupportedLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"installedOnDeviceLanguage\") java.util.List mInstalledOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"pendingOnDeviceLanguage\") java.util.List mPendingOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"supportedOnDeviceLanguage\") java.util.List mSupportedOnDeviceLanguages\nprivate @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"onlineLanguage\") java.util.List 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)") @Deprecated private void __metadata() {}