Loading services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java +17 −15 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { // Process existing model first. if (model != null && !model.getModelId().equals(soundModel.uuid)) { // The existing model has a different UUID, should be replaced. int status = cleanUpExistingKeyphraseModel(model); int status = cleanUpExistingKeyphraseModelLocked(model); if (status != STATUS_OK) { return status; } Loading @@ -210,7 +210,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { } } private int cleanUpExistingKeyphraseModel(ModelData modelData) { private int cleanUpExistingKeyphraseModelLocked(ModelData modelData) { // Stop and clean up a previous ModelData if one exists. This usually is used when the // previous model has a different UUID for the same keyphrase ID. int status = tryStopAndUnloadLocked(modelData, true /* stop */, true /* unload */); Loading Loading @@ -616,7 +616,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onGenericSoundTriggerDetected((GenericRecognitionEvent) event); } catch (DeadObjectException e) { forceStopAndUnloadModel(model, e); forceStopAndUnloadModelLocked(model, e); return; } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onGenericSoundTriggerDetected", e); Loading Loading @@ -706,7 +706,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { modelData.getCallback().onRecognitionPaused(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionPaused", e); } Loading @@ -717,7 +717,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { Slog.w(TAG, "Recognition failure"); MetricsLogger.count(mContext, "sth_recognition_failure_event", 1); try { sendErrorCallbacksToAll(STATUS_ERROR); sendErrorCallbacksToAllLocked(STATUS_ERROR); } finally { internalClearModelStateLocked(); internalClearGlobalStateLocked(); Loading Loading @@ -759,7 +759,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { modelData.getCallback().onKeyphraseDetected((KeyphraseRecognitionEvent) event); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); return; } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onKeyphraseDetected", e); Loading @@ -778,7 +778,9 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { private void updateAllRecognitionsLocked(boolean notify) { boolean isAllowed = isRecognitionAllowed(); for (ModelData modelData : mModelDataMap.values()) { // updateRecognitionLocked can possibly update the list of models ArrayList<ModelData> modelDatas = new ArrayList<ModelData>(mModelDataMap.values()); for (ModelData modelData : modelDatas) { updateRecognitionLocked(modelData, isAllowed, notify); } } Loading @@ -800,7 +802,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { private void onServiceDiedLocked() { try { MetricsLogger.count(mContext, "sth_service_died", 1); sendErrorCallbacksToAll(SoundTrigger.STATUS_DEAD_OBJECT); sendErrorCallbacksToAllLocked(SoundTrigger.STATUS_DEAD_OBJECT); } finally { internalClearModelStateLocked(); internalClearGlobalStateLocked(); Loading Loading @@ -885,21 +887,21 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { } // Sends an error callback to all models with a valid registered callback. private void sendErrorCallbacksToAll(int errorCode) { private void sendErrorCallbacksToAllLocked(int errorCode) { for (ModelData modelData : mModelDataMap.values()) { IRecognitionStatusCallback callback = modelData.getCallback(); if (callback != null) { try { callback.onError(errorCode); } catch (RemoteException e) { Slog.w(TAG, "RemoteException sendErrorCallbacksToAll for model handle " + Slog.w(TAG, "RemoteException sendErrorCallbacksToAllLocked for model handle " + modelData.getHandle(), e); } } } } private void forceStopAndUnloadModel(ModelData modelData, Exception exception) { private void forceStopAndUnloadModelLocked(ModelData modelData, Exception exception) { if (exception != null) { Slog.e(TAG, "forceStopAndUnloadModel", exception); } Loading Loading @@ -1020,7 +1022,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onError(status); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onError", e); } Loading @@ -1034,7 +1036,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onRecognitionResumed(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionResumed", e); } Loading @@ -1061,7 +1063,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onError(status); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onError", e); } Loading @@ -1074,7 +1076,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onRecognitionPaused(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionPaused", e); } Loading Loading
services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerHelper.java +17 −15 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { // Process existing model first. if (model != null && !model.getModelId().equals(soundModel.uuid)) { // The existing model has a different UUID, should be replaced. int status = cleanUpExistingKeyphraseModel(model); int status = cleanUpExistingKeyphraseModelLocked(model); if (status != STATUS_OK) { return status; } Loading @@ -210,7 +210,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { } } private int cleanUpExistingKeyphraseModel(ModelData modelData) { private int cleanUpExistingKeyphraseModelLocked(ModelData modelData) { // Stop and clean up a previous ModelData if one exists. This usually is used when the // previous model has a different UUID for the same keyphrase ID. int status = tryStopAndUnloadLocked(modelData, true /* stop */, true /* unload */); Loading Loading @@ -616,7 +616,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onGenericSoundTriggerDetected((GenericRecognitionEvent) event); } catch (DeadObjectException e) { forceStopAndUnloadModel(model, e); forceStopAndUnloadModelLocked(model, e); return; } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onGenericSoundTriggerDetected", e); Loading Loading @@ -706,7 +706,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { modelData.getCallback().onRecognitionPaused(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionPaused", e); } Loading @@ -717,7 +717,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { Slog.w(TAG, "Recognition failure"); MetricsLogger.count(mContext, "sth_recognition_failure_event", 1); try { sendErrorCallbacksToAll(STATUS_ERROR); sendErrorCallbacksToAllLocked(STATUS_ERROR); } finally { internalClearModelStateLocked(); internalClearGlobalStateLocked(); Loading Loading @@ -759,7 +759,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { modelData.getCallback().onKeyphraseDetected((KeyphraseRecognitionEvent) event); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); return; } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onKeyphraseDetected", e); Loading @@ -778,7 +778,9 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { private void updateAllRecognitionsLocked(boolean notify) { boolean isAllowed = isRecognitionAllowed(); for (ModelData modelData : mModelDataMap.values()) { // updateRecognitionLocked can possibly update the list of models ArrayList<ModelData> modelDatas = new ArrayList<ModelData>(mModelDataMap.values()); for (ModelData modelData : modelDatas) { updateRecognitionLocked(modelData, isAllowed, notify); } } Loading @@ -800,7 +802,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { private void onServiceDiedLocked() { try { MetricsLogger.count(mContext, "sth_service_died", 1); sendErrorCallbacksToAll(SoundTrigger.STATUS_DEAD_OBJECT); sendErrorCallbacksToAllLocked(SoundTrigger.STATUS_DEAD_OBJECT); } finally { internalClearModelStateLocked(); internalClearGlobalStateLocked(); Loading Loading @@ -885,21 +887,21 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { } // Sends an error callback to all models with a valid registered callback. private void sendErrorCallbacksToAll(int errorCode) { private void sendErrorCallbacksToAllLocked(int errorCode) { for (ModelData modelData : mModelDataMap.values()) { IRecognitionStatusCallback callback = modelData.getCallback(); if (callback != null) { try { callback.onError(errorCode); } catch (RemoteException e) { Slog.w(TAG, "RemoteException sendErrorCallbacksToAll for model handle " + Slog.w(TAG, "RemoteException sendErrorCallbacksToAllLocked for model handle " + modelData.getHandle(), e); } } } } private void forceStopAndUnloadModel(ModelData modelData, Exception exception) { private void forceStopAndUnloadModelLocked(ModelData modelData, Exception exception) { if (exception != null) { Slog.e(TAG, "forceStopAndUnloadModel", exception); } Loading Loading @@ -1020,7 +1022,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onError(status); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onError", e); } Loading @@ -1034,7 +1036,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onRecognitionResumed(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionResumed", e); } Loading @@ -1061,7 +1063,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onError(status); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onError", e); } Loading @@ -1074,7 +1076,7 @@ public class SoundTriggerHelper implements SoundTrigger.StatusListener { try { callback.onRecognitionPaused(); } catch (DeadObjectException e) { forceStopAndUnloadModel(modelData, e); forceStopAndUnloadModelLocked(modelData, e); } catch (RemoteException e) { Slog.w(TAG, "RemoteException in onRecognitionPaused", e); } Loading