diff options
author | Amit Mahajan <amitmahajan@google.com> | 2015-06-03 12:26:04 -0700 |
---|---|---|
committer | Amit Mahajan <amitmahajan@google.com> | 2015-06-03 12:26:04 -0700 |
commit | 7f6bd914f3ed40979239bd0ff2cb4760ef6718ca (patch) | |
tree | 33d4cfa527f2d3bca5b0e7072432d76961c2dfc4 /src/com/android | |
parent | 96d6b6e04da1a1a3a669dd0de000d6c2e668173e (diff) | |
download | android_packages_apps_CellBroadcastReceiver-7f6bd914f3ed40979239bd0ff2cb4760ef6718ca.tar.gz android_packages_apps_CellBroadcastReceiver-7f6bd914f3ed40979239bd0ff2cb4760ef6718ca.tar.bz2 android_packages_apps_CellBroadcastReceiver-7f6bd914f3ed40979239bd0ff2cb4760ef6718ca.zip |
Change to ensure CellBroadcast service does not hold wakeLock indefinitely
- If TextToSpeech.speak() fails, stop the service
- Stop service onUtteranceCompleted
Bug: 21580321
Change-Id: I04b31657a19ffc73f13ad1a83a951d02238ace85
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java index 52ed4e11..d9840d4d 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java @@ -37,6 +37,7 @@ import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; +import java.util.HashMap; import java.util.Locale; import static com.android.cellbroadcastreceiver.CellBroadcastReceiver.DBG; @@ -72,6 +73,8 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI public static final String ALERT_AUDIO_ETWS_VIBRATE_EXTRA = "com.android.cellbroadcastreceiver.ALERT_AUDIO_ETWS_VIBRATE"; + private static final String TTS_UTTERANCE_ID = "com.android.cellbroadcastreceiver.UTTERANCE_ID"; + /** Pause duration between alert sound and alert speech. */ private static final int PAUSE_DURATION_BEFORE_SPEAKING_MSEC = 1000; @@ -126,12 +129,17 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI case ALERT_PAUSE_FINISHED: if (DBG) log("ALERT_PAUSE_FINISHED"); + int res = TextToSpeech.ERROR; if (mMessageBody != null && mTtsEngineReady && mTtsLanguageSupported) { if (DBG) log("Speaking broadcast text: " + mMessageBody); - mTts.speak(mMessageBody, TextToSpeech.QUEUE_FLUSH, null); + HashMap<String, String> ttsHashMap = new HashMap<String, String>(); + ttsHashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, + TTS_UTTERANCE_ID); + res = mTts.speak(mMessageBody, TextToSpeech.QUEUE_FLUSH, ttsHashMap); mState = STATE_SPEAKING; - } else { - loge("TTS engine not ready or language not supported"); + } + if (res != TextToSpeech.SUCCESS) { + loge("TTS engine not ready or language not supported or speak() failed"); stopSelf(); mState = STATE_IDLE; } @@ -163,6 +171,7 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI if (DBG) log("onInit() TTS engine status: " + status); if (status == TextToSpeech.SUCCESS) { mTtsEngineReady = true; + mTts.setOnUtteranceCompletedListener(this); // try to set the TTS language to match the broadcast setTtsLanguage(); } else { @@ -196,7 +205,9 @@ public class CellBroadcastAlertAudio extends Service implements TextToSpeech.OnI */ @Override public void onUtteranceCompleted(String utteranceId) { - stopSelf(); + if (utteranceId.equals(TTS_UTTERANCE_ID)) { + stopSelf(); + } } @Override |