diff options
| author | Jerome Poichet <jpoichet@google.com> | 2014-09-30 17:54:03 -0700 |
|---|---|---|
| committer | Jerome Poichet <jpoichet@google.com> | 2014-09-30 17:56:27 -0700 |
| commit | c1fb6dc1a494d73a080348d16b96e70f5735e036 (patch) | |
| tree | 9c739c473ac1663d908143ee058f2ff1aa0f6c12 /core/java/android/speech/RecognitionService.java | |
| parent | 496aeb1a6156f3c089135a7ce4fab550589eaff7 (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.java | 13 |
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 { |
