summaryrefslogtreecommitdiff
path: root/core/java/android/speech/RecognitionService.java
diff options
context:
space:
mode:
authorJerome Poichet <jpoichet@google.com>2014-09-30 17:54:03 -0700
committerJerome Poichet <jpoichet@google.com>2014-09-30 17:56:27 -0700
commitc1fb6dc1a494d73a080348d16b96e70f5735e036 (patch)
tree9c739c473ac1663d908143ee058f2ff1aa0f6c12 /core/java/android/speech/RecognitionService.java
parent496aeb1a6156f3c089135a7ce4fab550589eaff7 (diff)
Make sure cancel is called on tear down.
- Make sure cancel is called when consumer of SpeechRecognizer calls destroy. - If consumer goes away, make sure to call cancel as well. b/17584947 Pressing mic button in Music hoses audio Change-Id: Ibe1198b37fe6167493a8694f9089d970f1eb07de
Diffstat (limited to 'core/java/android/speech/RecognitionService.java')
-rw-r--r--core/java/android/speech/RecognitionService.java13
1 files changed, 12 insertions, 1 deletions
diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java
index 32b2d8f4baf3..45eb0bfec95c 100644
--- a/core/java/android/speech/RecognitionService.java
+++ b/core/java/android/speech/RecognitionService.java
@@ -91,9 +91,20 @@ public abstract class RecognitionService extends Service {
}
};
- private void dispatchStartListening(Intent intent, IRecognitionListener listener) {
+ private void dispatchStartListening(Intent intent, final IRecognitionListener listener) {
if (mCurrentCallback == null) {
if (DBG) Log.d(TAG, "created new mCurrentCallback, listener = " + listener.asBinder());
+ try {
+ listener.asBinder().linkToDeath(new IBinder.DeathRecipient() {
+ @Override
+ public void binderDied() {
+ mHandler.sendMessage(mHandler.obtainMessage(MSG_CANCEL, listener));
+ }
+ }, 0);
+ } catch (RemoteException re) {
+ Log.e(TAG, "dead listener on startListening");
+ return;
+ }
mCurrentCallback = new Callback(listener);
RecognitionService.this.onStartListening(intent, mCurrentCallback);
} else {