Merge "Limit the max value for hotword offset and audio channel" into sc-dev am: dadd76619e
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15207278 Change-Id: I24ef9cfeb1e4e08ce3bc4b9355fd2087c8bd8be2
This commit is contained in:
@@ -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() {}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user