Add start/stop detection functionality for VQDS
This CL enables the VQDS to start and stop detection from VQD. It also defines intermediate callbacks to send query related signals and data to the interactor. Bug: 261783819 Test: Manual Change-Id: I8c7f99a8173710680c8c506405d9de6de1fc37d9
This commit is contained in:
committed by
charleschen
parent
539486f7e5
commit
abba1e61f7
@@ -64,7 +64,6 @@ public class VisualQueryDetector {
|
||||
IVoiceInteractionManagerService managerService,
|
||||
@NonNull @CallbackExecutor Executor executor,
|
||||
Callback callback) {
|
||||
|
||||
mManagerService = managerService;
|
||||
mCallback = callback;
|
||||
mExecutor = executor;
|
||||
@@ -109,8 +108,18 @@ public class VisualQueryDetector {
|
||||
if (DEBUG) {
|
||||
Slog.i(TAG, "#startRecognition");
|
||||
}
|
||||
// TODO(b/261783819): Call StartDetection on VisualQueryDetectionService with the system.
|
||||
return false;
|
||||
// check if the detector is active with the initialization delegate
|
||||
mInitializationDelegate.startRecognition();
|
||||
|
||||
try {
|
||||
mManagerService.startPerceiving(new BinderCallback(mExecutor, mCallback));
|
||||
} catch (SecurityException e) {
|
||||
Slog.e(TAG, "startRecognition failed: " + e);
|
||||
return false;
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,8 +132,15 @@ public class VisualQueryDetector {
|
||||
if (DEBUG) {
|
||||
Slog.i(TAG, "#stopRecognition");
|
||||
}
|
||||
// TODO(b/261783819): Call StopDetection on VisualQueryDetectionService with the system.
|
||||
return false;
|
||||
// check if the detector is active with the initialization delegate
|
||||
mInitializationDelegate.startRecognition();
|
||||
|
||||
try {
|
||||
mManagerService.stopPerceiving();
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -219,14 +235,14 @@ public class VisualQueryDetector {
|
||||
|
||||
@Override
|
||||
public boolean stopRecognition() throws IllegalDetectorStateException {
|
||||
//No-op, we only reuse the initialization methods.
|
||||
return false;
|
||||
throwIfDetectorIsNoLongerActive();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startRecognition() throws IllegalDetectorStateException {
|
||||
//No-op, we only reuse the initialization methods.
|
||||
return false;
|
||||
throwIfDetectorIsNoLongerActive();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -244,6 +260,49 @@ public class VisualQueryDetector {
|
||||
}
|
||||
}
|
||||
|
||||
private static class BinderCallback
|
||||
extends IVisualQueryDetectionVoiceInteractionCallback.Stub {
|
||||
private final Executor mExecutor;
|
||||
private final VisualQueryDetector.Callback mCallback;
|
||||
|
||||
BinderCallback(Executor executor, VisualQueryDetector.Callback callback) {
|
||||
this.mExecutor = executor;
|
||||
this.mCallback = callback;
|
||||
}
|
||||
|
||||
/** Called when the detected result is valid. */
|
||||
@Override
|
||||
public void onQueryDetected(@NonNull String partialQuery) {
|
||||
Slog.v(TAG, "BinderCallback#onQueryDetected");
|
||||
Binder.withCleanCallingIdentity(() -> mExecutor.execute(
|
||||
() -> mCallback.onQueryDetected(partialQuery)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueryFinished() {
|
||||
Slog.v(TAG, "BinderCallback#onQueryFinished");
|
||||
Binder.withCleanCallingIdentity(() -> mExecutor.execute(
|
||||
() -> mCallback.onQueryFinished()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onQueryRejected() {
|
||||
Slog.v(TAG, "BinderCallback#onQueryRejected");
|
||||
Binder.withCleanCallingIdentity(() -> mExecutor.execute(
|
||||
() -> mCallback.onQueryRejected()));
|
||||
}
|
||||
|
||||
/** Called when the detection fails due to an error. */
|
||||
@Override
|
||||
public void onError() {
|
||||
Slog.v(TAG, "BinderCallback#onError");
|
||||
Binder.withCleanCallingIdentity(() -> mExecutor.execute(
|
||||
() -> mCallback.onError()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static class InitializationStateListener
|
||||
extends IHotwordRecognitionStatusCallback.Stub {
|
||||
private final Executor mExecutor;
|
||||
|
||||
Reference in New Issue
Block a user