Add test API for phone call state
ST observes and reacts to phone calls by pausing recognition.
Instrumenting a fake phone call through the telephony stack is hard,
so add a test API which mocks this callback from the telephony service
to enable CTS tests for the ST response.
Bug: 272147641
Fixes: 278904783
Test: AlwaysOnHotwordDetectorTest#
testOnPhoneCall_recognitionPausedAndResumed
Change-Id: I409cbaca11294291d4b504e4fc2bf9971686f1ff
This commit is contained in:
@@ -2037,6 +2037,7 @@ package android.media.metrics {
|
||||
package android.media.soundtrigger {
|
||||
|
||||
public final class SoundTriggerInstrumentation {
|
||||
method public void setInPhoneCallState(boolean);
|
||||
method public void setResourceContention(boolean);
|
||||
method public void triggerOnResourcesAvailable();
|
||||
method public void triggerRestart();
|
||||
|
||||
@@ -79,4 +79,10 @@ interface ISoundTriggerService {
|
||||
* Attach an HAL injection interface.
|
||||
*/
|
||||
void attachInjection(ISoundTriggerInjection injection);
|
||||
|
||||
/**
|
||||
* Test API to override the phone call state.
|
||||
*/
|
||||
void setInPhoneCallState(boolean isInPhoneCall);
|
||||
|
||||
}
|
||||
|
||||
@@ -66,6 +66,8 @@ public final class SoundTriggerInstrumentation {
|
||||
@GuardedBy("mLock")
|
||||
private IBinder mClientToken = null;
|
||||
|
||||
private final ISoundTriggerService mService;
|
||||
|
||||
private final GlobalCallback mClientCallback;
|
||||
private final Executor mGlobalCallbackExecutor;
|
||||
|
||||
@@ -562,6 +564,7 @@ public final class SoundTriggerInstrumentation {
|
||||
@NonNull GlobalCallback callback) {
|
||||
mClientCallback = Objects.requireNonNull(callback);
|
||||
mGlobalCallbackExecutor = Objects.requireNonNull(executor);
|
||||
mService = service;
|
||||
try {
|
||||
service.attachInjection(new Injection());
|
||||
} catch (RemoteException e) {
|
||||
@@ -651,5 +654,24 @@ public final class SoundTriggerInstrumentation {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate a phone call for {@link com.android.server.soundtrigger.SoundTriggerService}.
|
||||
* If the phone call state changes, the service will be notified to respond.
|
||||
* The service should pause recognition for the duration of the call.
|
||||
*
|
||||
* @param isInPhoneCall - {@code true} to cause the SoundTriggerService to
|
||||
* see the phone call state as off-hook. {@code false} to cause the service to
|
||||
* see the state as normal.
|
||||
* @hide
|
||||
*/
|
||||
@TestApi
|
||||
public void setInPhoneCallState(boolean isInPhoneCall) {
|
||||
try {
|
||||
mService.setInPhoneCallState(isInPhoneCall);
|
||||
} catch (RemoteException e) {
|
||||
throw e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -412,6 +412,12 @@ public class SoundTriggerService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInPhoneCallState(boolean isInPhoneCall) {
|
||||
Slog.i(TAG, "Overriding phone call state: " + isInPhoneCall);
|
||||
mDeviceStateHandler.onPhoneCallStateChanged(isInPhoneCall);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
|
||||
// Event loggers
|
||||
|
||||
Reference in New Issue
Block a user