summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorAmit Mahajan <amitmahajan@google.com>2015-06-03 12:26:04 -0700
committerAmit Mahajan <amitmahajan@google.com>2015-06-03 12:26:04 -0700
commit7f6bd914f3ed40979239bd0ff2cb4760ef6718ca (patch)
tree33d4cfa527f2d3bca5b0e7072432d76961c2dfc4 /src/com/android
parent96d6b6e04da1a1a3a669dd0de000d6c2e668173e (diff)
downloadandroid_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.java19
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