summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/service/voice/HotwordDetectedResult.java63
1 files changed, 56 insertions, 7 deletions
diff --git a/core/java/android/service/voice/HotwordDetectedResult.java b/core/java/android/service/voice/HotwordDetectedResult.java
index 5c660216065c..72341453a1f4 100644
--- a/core/java/android/service/voice/HotwordDetectedResult.java
+++ b/core/java/android/service/voice/HotwordDetectedResult.java
@@ -89,6 +89,12 @@ public final class HotwordDetectedResult implements Parcelable {
/** Represents unset value for the triggered audio channel. */
public static final int AUDIO_CHANNEL_UNSET = -1;
+ /** Limits the max value for the hotword offset. */
+ private static final int LIMIT_HOTWORD_OFFSET_MAX_VALUE = 60 * 60 * 1000; // 1 hour
+
+ /** Limits the max value for the triggered audio channel. */
+ private static final int LIMIT_AUDIO_CHANNEL_MAX_VALUE = 63;
+
/** Confidence level in the trigger outcome. */
@HotwordConfidenceLevelValue
private final int mConfidenceLevel;
@@ -107,6 +113,8 @@ public final class HotwordDetectedResult implements Parcelable {
/**
* Offset in milliseconds the audio stream when the trigger event happened (end of hotword
* phrase).
+ *
+ * <p>Only value between 0 and 3600000 (inclusive) is accepted.
*/
private int mHotwordOffsetMillis = HOTWORD_OFFSET_UNSET;
@@ -118,7 +126,11 @@ public final class HotwordDetectedResult implements Parcelable {
*/
private int mHotwordDurationMillis = 0;
- /** Audio channel containing the highest-confidence hotword signal. **/
+ /**
+ * Audio channel containing the highest-confidence hotword signal.
+ *
+ * <p>Only value between 0 and 63 (inclusive) is accepted.
+ */
private int mAudioChannel = AUDIO_CHANNEL_UNSET;
/**
@@ -249,13 +261,13 @@ public final class HotwordDetectedResult implements Parcelable {
totalBits += bitCount(CONFIDENCE_LEVEL_VERY_HIGH);
}
if (hotwordDetectedResult.getHotwordOffsetMillis() != HOTWORD_OFFSET_UNSET) {
- totalBits += Integer.SIZE;
+ totalBits += bitCount(LIMIT_HOTWORD_OFFSET_MAX_VALUE);
}
if (hotwordDetectedResult.getHotwordDurationMillis() != 0) {
totalBits += bitCount(AudioRecord.getMaxSharedAudioHistoryMillis());
}
if (hotwordDetectedResult.getAudioChannel() != AUDIO_CHANNEL_UNSET) {
- totalBits += Integer.SIZE;
+ totalBits += bitCount(LIMIT_AUDIO_CHANNEL_MAX_VALUE);
}
// Add one bit for HotwordDetectionPersonalized
@@ -294,6 +306,14 @@ public final class HotwordDetectedResult implements Parcelable {
"hotwordPhraseId");
Preconditions.checkArgumentInRange((long) mHotwordDurationMillis, 0,
AudioRecord.getMaxSharedAudioHistoryMillis(), "hotwordDurationMillis");
+ if (mHotwordOffsetMillis != HOTWORD_OFFSET_UNSET) {
+ Preconditions.checkArgumentInRange(mHotwordOffsetMillis, 0,
+ LIMIT_HOTWORD_OFFSET_MAX_VALUE, "hotwordOffsetMillis");
+ }
+ if (mAudioChannel != AUDIO_CHANNEL_UNSET) {
+ Preconditions.checkArgumentInRange(mAudioChannel, 0, LIMIT_AUDIO_CHANNEL_MAX_VALUE,
+ "audioChannel");
+ }
if (!mExtras.isEmpty()) {
Preconditions.checkArgumentInRange(getParcelableSize(mExtras), 0, getMaxBundleSize(),
"extras");
@@ -351,6 +371,27 @@ public final class HotwordDetectedResult implements Parcelable {
}
}
+ /** @hide */
+ @IntDef(prefix = "LIMIT_", value = {
+ LIMIT_HOTWORD_OFFSET_MAX_VALUE,
+ LIMIT_AUDIO_CHANNEL_MAX_VALUE
+ })
+ @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE)
+ @DataClass.Generated.Member
+ /* package-private */ @interface Limit {}
+
+ /** @hide */
+ @DataClass.Generated.Member
+ /* package-private */ static String limitToString(@Limit int value) {
+ switch (value) {
+ case LIMIT_HOTWORD_OFFSET_MAX_VALUE:
+ return "LIMIT_HOTWORD_OFFSET_MAX_VALUE";
+ case LIMIT_AUDIO_CHANNEL_MAX_VALUE:
+ return "LIMIT_AUDIO_CHANNEL_MAX_VALUE";
+ default: return Integer.toHexString(value);
+ }
+ }
+
@DataClass.Generated.Member
/* package-private */ HotwordDetectedResult(
@HotwordConfidenceLevelValue int confidenceLevel,
@@ -392,6 +433,8 @@ public final class HotwordDetectedResult implements Parcelable {
/**
* Offset in milliseconds the audio stream when the trigger event happened (end of hotword
* phrase).
+ *
+ * <p>Only value between 0 and 3600000 (inclusive) is accepted.
*/
@DataClass.Generated.Member
public int getHotwordOffsetMillis() {
@@ -410,7 +453,9 @@ public final class HotwordDetectedResult implements Parcelable {
}
/**
- * Audio channel containing the highest-confidence hotword signal. *
+ * Audio channel containing the highest-confidence hotword signal.
+ *
+ * <p>Only value between 0 and 63 (inclusive) is accepted.
*/
@DataClass.Generated.Member
public int getAudioChannel() {
@@ -667,6 +712,8 @@ public final class HotwordDetectedResult implements Parcelable {
/**
* Offset in milliseconds the audio stream when the trigger event happened (end of hotword
* phrase).
+ *
+ * <p>Only value between 0 and 3600000 (inclusive) is accepted.
*/
@DataClass.Generated.Member
public @NonNull Builder setHotwordOffsetMillis(int value) {
@@ -691,7 +738,9 @@ public final class HotwordDetectedResult implements Parcelable {
}
/**
- * Audio channel containing the highest-confidence hotword signal. *
+ * Audio channel containing the highest-confidence hotword signal.
+ *
+ * <p>Only value between 0 and 63 (inclusive) is accepted.
*/
@DataClass.Generated.Member
public @NonNull Builder setAudioChannel(int value) {
@@ -833,10 +882,10 @@ public final class HotwordDetectedResult implements Parcelable {
}
@DataClass.Generated(
- time = 1625198973370L,
+ time = 1625541522353L,
codegenVersion = "1.0.23",
sourceFile = "frameworks/base/core/java/android/service/voice/HotwordDetectedResult.java",
- inputSignatures = "public static final int CONFIDENCE_LEVEL_NONE\npublic static final int CONFIDENCE_LEVEL_LOW\npublic static final int CONFIDENCE_LEVEL_LOW_MEDIUM\npublic static final int CONFIDENCE_LEVEL_MEDIUM\npublic static final int CONFIDENCE_LEVEL_MEDIUM_HIGH\npublic static final int CONFIDENCE_LEVEL_HIGH\npublic static final int CONFIDENCE_LEVEL_VERY_HIGH\npublic static final int HOTWORD_OFFSET_UNSET\npublic static final int AUDIO_CHANNEL_UNSET\nprivate final @android.service.voice.HotwordDetectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate int mHotwordOffsetMillis\nprivate int mHotwordDurationMillis\nprivate int mAudioChannel\nprivate boolean mHotwordDetectionPersonalized\nprivate final int mScore\nprivate final int mPersonalizedScore\nprivate final int mHotwordPhraseId\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static int sMaxBundleSize\nprivate static int defaultConfidenceLevel()\nprivate static int defaultScore()\nprivate static int defaultPersonalizedScore()\npublic static int getMaxScore()\nprivate static int defaultHotwordPhraseId()\npublic static int getMaxHotwordPhraseId()\nprivate static android.os.PersistableBundle defaultExtras()\npublic static int getMaxBundleSize()\npublic @android.annotation.Nullable android.media.MediaSyncEvent getMediaSyncEvent()\npublic static int getParcelableSize(android.os.Parcelable)\npublic static int getUsageSize(android.service.voice.HotwordDetectedResult)\nprivate static int bitCount(long)\nprivate void onConstructed()\nclass HotwordDetectedResult 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 = "public static final int CONFIDENCE_LEVEL_NONE\npublic static final int CONFIDENCE_LEVEL_LOW\npublic static final int CONFIDENCE_LEVEL_LOW_MEDIUM\npublic static final int CONFIDENCE_LEVEL_MEDIUM\npublic static final int CONFIDENCE_LEVEL_MEDIUM_HIGH\npublic static final int CONFIDENCE_LEVEL_HIGH\npublic static final int CONFIDENCE_LEVEL_VERY_HIGH\npublic static final int HOTWORD_OFFSET_UNSET\npublic static final int AUDIO_CHANNEL_UNSET\nprivate static final int LIMIT_HOTWORD_OFFSET_MAX_VALUE\nprivate static final int LIMIT_AUDIO_CHANNEL_MAX_VALUE\nprivate final @android.service.voice.HotwordDetectedResult.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate int mHotwordOffsetMillis\nprivate int mHotwordDurationMillis\nprivate int mAudioChannel\nprivate boolean mHotwordDetectionPersonalized\nprivate final int mScore\nprivate final int mPersonalizedScore\nprivate final int mHotwordPhraseId\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static int sMaxBundleSize\nprivate static int defaultConfidenceLevel()\nprivate static int defaultScore()\nprivate static int defaultPersonalizedScore()\npublic static int getMaxScore()\nprivate static int defaultHotwordPhraseId()\npublic static int getMaxHotwordPhraseId()\nprivate static android.os.PersistableBundle defaultExtras()\npublic static int getMaxBundleSize()\npublic @android.annotation.Nullable android.media.MediaSyncEvent getMediaSyncEvent()\npublic static int getParcelableSize(android.os.Parcelable)\npublic static int getUsageSize(android.service.voice.HotwordDetectedResult)\nprivate static int bitCount(long)\nprivate void onConstructed()\nclass HotwordDetectedResult 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() {}