1  /**
2   * Copyright (C) 2014 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.hardware.soundtrigger;
18  
19  import android.annotation.NonNull;
20  import android.annotation.Nullable;
21  import android.annotation.TestApi;
22  import android.os.Parcelable;
23  import android.util.ArraySet;
24  
25  import com.android.internal.util.DataClass;
26  
27  import java.util.Locale;
28  import java.util.Set;
29  
30  /**
31   * A Voice Keyphrase metadata read from the enrollment application.
32   *
33   * @hide
34   */
35  @TestApi
36  @DataClass(
37          genEqualsHashCode = true,
38          genToString = true,
39          genConstructor = false,
40          genHiddenConstDefs = true)
41  public final class KeyphraseMetadata implements Parcelable {
42      private final int mId;
43      @NonNull
44      private final String mKeyphrase;
45      @NonNull
46      private final ArraySet<Locale> mSupportedLocales;
47      private final int mRecognitionModeFlags;
48  
KeyphraseMetadata(int id, @NonNull String keyphrase, @NonNull Set<Locale> supportedLocales, int recognitionModeFlags)49      public KeyphraseMetadata(int id, @NonNull String keyphrase,
50              @NonNull Set<Locale> supportedLocales, int recognitionModeFlags) {
51          this.mId = id;
52          this.mKeyphrase = keyphrase;
53          this.mSupportedLocales = new ArraySet<>(supportedLocales);
54          this.mRecognitionModeFlags = recognitionModeFlags;
55      }
56  
getId()57      public int getId() {
58          return mId;
59      }
60  
61      @NonNull
getKeyphrase()62      public String getKeyphrase() {
63          return mKeyphrase;
64      }
65  
66      @NonNull
getSupportedLocales()67      public Set<Locale> getSupportedLocales() {
68          return mSupportedLocales;
69      }
70  
getRecognitionModeFlags()71      public int getRecognitionModeFlags() {
72          return mRecognitionModeFlags;
73      }
74  
75      /**
76       * @return Indicates if we support the given phrase.
77       */
supportsPhrase(@ullable String phrase)78      public boolean supportsPhrase(@Nullable String phrase) {
79          return getKeyphrase().isEmpty() || getKeyphrase().equalsIgnoreCase(phrase);
80      }
81  
82      /**
83       * @return Indicates if we support the given locale.
84       */
supportsLocale(@ullable Locale locale)85      public boolean supportsLocale(@Nullable Locale locale) {
86          return getSupportedLocales().isEmpty() || getSupportedLocales().contains(locale);
87      }
88  
89  
90  
91  
92      // Code below generated by codegen v1.0.15.
93      //
94      // DO NOT MODIFY!
95      // CHECKSTYLE:OFF Generated code
96      //
97      // To regenerate run:
98      // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/hardware/soundtrigger/KeyphraseMetadata.java
99      //
100      // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
101      //   Settings > Editor > Code Style > Formatter Control
102      //@formatter:off
103  
104  
105      @Override
106      @DataClass.Generated.Member
toString()107      public String toString() {
108          // You can override field toString logic by defining methods like:
109          // String fieldNameToString() { ... }
110  
111          return "KeyphraseMetadata { " +
112                  "id = " + mId + ", " +
113                  "keyphrase = " + mKeyphrase + ", " +
114                  "supportedLocales = " + mSupportedLocales + ", " +
115                  "recognitionModeFlags = " + mRecognitionModeFlags +
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(KeyphraseMetadata 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          KeyphraseMetadata that = (KeyphraseMetadata) o;
130          //noinspection PointlessBooleanExpression
131          return true
132                  && mId == that.mId
133                  && java.util.Objects.equals(mKeyphrase, that.mKeyphrase)
134                  && java.util.Objects.equals(mSupportedLocales, that.mSupportedLocales)
135                  && mRecognitionModeFlags == that.mRecognitionModeFlags;
136      }
137  
138      @Override
139      @DataClass.Generated.Member
hashCode()140      public int hashCode() {
141          // You can override field hashCode logic by defining methods like:
142          // int fieldNameHashCode() { ... }
143  
144          int _hash = 1;
145          _hash = 31 * _hash + mId;
146          _hash = 31 * _hash + java.util.Objects.hashCode(mKeyphrase);
147          _hash = 31 * _hash + java.util.Objects.hashCode(mSupportedLocales);
148          _hash = 31 * _hash + mRecognitionModeFlags;
149          return _hash;
150      }
151  
152      @Override
153      @DataClass.Generated.Member
writeToParcel(@onNull android.os.Parcel dest, int flags)154      public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
155          // You can override field parcelling by defining methods like:
156          // void parcelFieldName(Parcel dest, int flags) { ... }
157  
158          dest.writeInt(mId);
159          dest.writeString(mKeyphrase);
160          dest.writeArraySet(mSupportedLocales);
161          dest.writeInt(mRecognitionModeFlags);
162      }
163  
164      @Override
165      @DataClass.Generated.Member
describeContents()166      public int describeContents() { return 0; }
167  
168      /** @hide */
169      @SuppressWarnings({"unchecked", "RedundantCast"})
170      @DataClass.Generated.Member
KeyphraseMetadata(@onNull android.os.Parcel in)171      /* package-private */ KeyphraseMetadata(@NonNull android.os.Parcel in) {
172          // You can override field unparcelling by defining methods like:
173          // static FieldType unparcelFieldName(Parcel in) { ... }
174  
175          int id = in.readInt();
176          String keyphrase = in.readString();
177          ArraySet<Locale> supportedLocales = (ArraySet) in.readArraySet(null);
178          int recognitionModeFlags = in.readInt();
179  
180          this.mId = id;
181          this.mKeyphrase = keyphrase;
182          com.android.internal.util.AnnotationValidations.validate(
183                  NonNull.class, null, mKeyphrase);
184          this.mSupportedLocales = supportedLocales;
185          com.android.internal.util.AnnotationValidations.validate(
186                  NonNull.class, null, mSupportedLocales);
187          this.mRecognitionModeFlags = recognitionModeFlags;
188  
189          // onConstructed(); // You can define this method to get a callback
190      }
191  
192      @DataClass.Generated.Member
193      public static final @NonNull Parcelable.Creator<KeyphraseMetadata> CREATOR
194              = new Parcelable.Creator<KeyphraseMetadata>() {
195          @Override
196          public KeyphraseMetadata[] newArray(int size) {
197              return new KeyphraseMetadata[size];
198          }
199  
200          @Override
201          public KeyphraseMetadata createFromParcel(@NonNull android.os.Parcel in) {
202              return new KeyphraseMetadata(in);
203          }
204      };
205  
206      @DataClass.Generated(
207              time = 1586191622057L,
208              codegenVersion = "1.0.15",
209              sourceFile = "frameworks/base/core/java/android/hardware/soundtrigger/KeyphraseMetadata.java",
210              inputSignatures = "private final  int mId\nprivate final @android.annotation.NonNull java.lang.String mKeyphrase\nprivate final @android.annotation.NonNull android.util.ArraySet<java.util.Locale> mSupportedLocales\nprivate final  int mRecognitionModeFlags\npublic  int getId()\npublic @android.annotation.NonNull java.lang.String getKeyphrase()\npublic @android.annotation.NonNull java.util.Set<java.util.Locale> getSupportedLocales()\npublic  int getRecognitionModeFlags()\npublic  boolean supportsPhrase(java.lang.String)\npublic  boolean supportsLocale(java.util.Locale)\nclass KeyphraseMetadata extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genToString=true, genConstructor=false, genHiddenConstDefs=true)")
211      @Deprecated
__metadata()212      private void __metadata() {}
213  
214  
215      //@formatter:on
216      // End of generated code
217  
218  }
219