Merge changes from topic "detach_cut" into udc-dev am: 8bcb06a146 am: b59877b40e

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22536415

Change-Id: I3ab0cd054d2f41dabd8dadbb0c5aeada24160974
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Atneya Nair
2023-04-23 20:00:05 +00:00
committed by Automerger Merge Worker
7 changed files with 47 additions and 7 deletions

View File

@@ -1334,13 +1334,7 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
@Override
public void destroy() {
synchronized (mLock) {
if (mAvailability == STATE_KEYPHRASE_ENROLLED) {
try {
stopRecognition();
} catch (Exception e) {
Log.i(TAG, "failed to stopRecognition in destroy", e);
}
}
detachSessionLocked();
mAvailability = STATE_INVALID;
mIsAvailabilityOverriddenByTestApi = false;
@@ -1349,6 +1343,17 @@ public class AlwaysOnHotwordDetector extends AbstractDetector {
super.destroy();
}
private void detachSessionLocked() {
try {
if (DBG) Slog.d(TAG, "detachSessionLocked() " + mSoundTriggerSession);
if (mSoundTriggerSession != null) {
mSoundTriggerSession.detach();
}
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
}
/**
* @hide
*/

View File

@@ -94,4 +94,9 @@ interface IVoiceInteractionSoundTriggerSession {
*/
@nullable SoundTrigger.ModelParamRange queryParameter(int keyphraseId,
in ModelParams modelParam);
/**
* Invalidates the sound trigger session and clears any associated resources. Subsequent calls
* to this object will throw IllegalStateException.
*/
void detach();
}

View File

@@ -141,6 +141,12 @@ public interface SoundTriggerInternal {
ModelParamRange queryParameter(int keyphraseId,
@ModelParams int modelParam);
/**
* Invalidates the sound trigger session and clears any associated resources. Subsequent
* calls to this object will throw IllegalStateException.
*/
void detach();
/**
* Unloads (and stops if running) the given keyphraseId
*/

View File

@@ -1662,6 +1662,11 @@ public class SoundTriggerService extends SystemService {
return mSoundTriggerHelper.queryKeyphraseParameter(keyphraseId, modelParam);
}
@Override
public void detach() {
mSoundTriggerHelper.detach();
}
@Override
public int unloadKeyphraseModel(int keyphraseId) {
return mSoundTriggerHelper.unloadKeyphraseSoundModel(keyphraseId);

View File

@@ -69,4 +69,9 @@ final class SoundTriggerSessionBinderProxy extends IVoiceInteractionSoundTrigger
public SoundTrigger.ModelParamRange queryParameter(int i, int i1) throws RemoteException {
return mDelegate.queryParameter(i, i1);
}
@Override
public void detach() throws RemoteException {
mDelegate.detach();
}
}

View File

@@ -113,6 +113,15 @@ final class SoundTriggerSessionPermissionsDecorator implements
"This object isn't intended to be used as a Binder.");
}
@Override
public void detach() {
try {
mDelegate.detach();
} catch (RemoteException e) {
e.rethrowFromSystemServer();
}
}
// TODO: Share this code with SoundTriggerMiddlewarePermission.
private boolean isHoldingPermissions() {
try {

View File

@@ -1856,6 +1856,11 @@ public class VoiceInteractionManagerService extends SystemService {
"This object isn't intended to be used as a Binder.");
}
@Override
public void detach() {
mSession.detach();
}
private int unloadKeyphraseModel(int keyphraseId) {
final long caller = Binder.clearCallingIdentity();
try {