summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java25
1 files changed, 24 insertions, 1 deletions
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index 6be47e171ed7..cbcbf52c2c9c 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -126,6 +126,9 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne
final ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
+ if (DEBUG) {
+ Slog.d(TAG, "onServiceConnected to " + name + " for user(" + mUser + ")");
+ }
synchronized (mServiceStub) {
mService = IVoiceInteractionService.Stub.asInterface(service);
try {
@@ -137,7 +140,13 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne
@Override
public void onServiceDisconnected(ComponentName name) {
- mService = null;
+ if (DEBUG) {
+ Slog.d(TAG, "onServiceDisconnected to " + name);
+ }
+ synchronized (mServiceStub) {
+ mService = null;
+ resetHotwordDetectionConnectionLocked();
+ }
}
};
@@ -575,6 +584,20 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne
mHotwordDetectionConnection.forceRestart();
}
+ void resetHotwordDetectionConnectionLocked() {
+ if (DEBUG) {
+ Slog.d(TAG, "resetHotwordDetectionConnectionLocked");
+ }
+ if (mHotwordDetectionConnection == null) {
+ if (DEBUG) {
+ Slog.w(TAG, "reset, but no hotword detection connection");
+ }
+ return;
+ }
+ mHotwordDetectionConnection.cancelLocked();
+ mHotwordDetectionConnection = null;
+ }
+
public void dumpLocked(FileDescriptor fd, PrintWriter pw, String[] args) {
if (!mValid) {
pw.print(" NOT VALID: ");