Skip VisualQueryDetectionService being destroyed for SDK bump

The service needs to be enabled even if multiple detector is disabled.
However the changeId makes VisualQueryDetectionService destoryed when
HotwordDetectionService is created afterwards.

Bug: 279544077
Test: atest CtsVoiceInteractionTestCases
Change-Id: I75c8495587ceb70002ef64f52d91a1a900b76072
This commit is contained in:
Charles Chen
2023-05-07 19:08:14 +00:00
parent de6724e24f
commit 07b4b87f47

View File

@@ -389,7 +389,7 @@ public class VoiceInteractionService extends Service {
// It's still guaranteed to have been stopped.
// This helps with cases where the voice interaction implementation is changed
// by the user.
safelyShutdownAllHotwordDetectors();
safelyShutdownAllHotwordDetectors(true);
}
/**
@@ -715,7 +715,7 @@ public class VoiceInteractionService extends Service {
synchronized (mLock) {
if (!CompatChanges.isChangeEnabled(MULTIPLE_ACTIVE_HOTWORD_DETECTORS)) {
// Allow only one concurrent recognition via the APIs.
safelyShutdownAllHotwordDetectors();
safelyShutdownAllHotwordDetectors(false);
} else {
for (HotwordDetector detector : mActiveDetectors) {
if (detector.isUsingSandboxedDetectionService()
@@ -878,7 +878,7 @@ public class VoiceInteractionService extends Service {
synchronized (mLock) {
if (!CompatChanges.isChangeEnabled(MULTIPLE_ACTIVE_HOTWORD_DETECTORS)) {
// Allow only one concurrent recognition via the APIs.
safelyShutdownAllHotwordDetectors();
safelyShutdownAllHotwordDetectors(false);
} else {
for (HotwordDetector detector : mActiveDetectors) {
if (!detector.isUsingSandboxedDetectionService()) {
@@ -1062,11 +1062,14 @@ public class VoiceInteractionService extends Service {
return mKeyphraseEnrollmentInfo.getKeyphraseMetadata(keyphrase, locale) != null;
}
private void safelyShutdownAllHotwordDetectors() {
private void safelyShutdownAllHotwordDetectors(boolean shouldShutDownVisualQueryDetector) {
synchronized (mLock) {
mActiveDetectors.forEach(detector -> {
try {
detector.destroy();
if (detector != mActiveVisualQueryDetector.getInitializationDelegate()
|| shouldShutDownVisualQueryDetector) {
detector.destroy();
}
} catch (Exception ex) {
Log.i(TAG, "exception destroying HotwordDetector", ex);
}