Merge tag 'android-6.0.1_r3' into 601r3
Android 6.0.1 release 3
* tag 'android-6.0.1_r3':
DO NOT MERGE. Fixed emergency alert TTS not playing on bluetooth speaker.
Fixed that emergency alert reminder does not trigger every 2 minutes.
Fixed that "Turn on notification" does not work.
Change-Id: Ie67c5bec6b7c0e61ffb2126921f6a060f16afd1c
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java
index 6a70079..2381689 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertAudio.java
@@ -122,6 +122,9 @@
PAUSE_DURATION_BEFORE_SPEAKING_MSEC);
mState = STATE_PAUSING;
} else {
+ if (DBG) log("MessageEmpty = " + (mMessageBody == null) +
+ ", mTtsEngineReady = " + mTtsEngineReady +
+ ", mTtsLanguageSupported = " + mTtsLanguageSupported);
stopSelf();
mState = STATE_IDLE;
}
@@ -135,6 +138,10 @@
HashMap<String, String> ttsHashMap = new HashMap<String, String>();
ttsHashMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,
TTS_UTTERANCE_ID);
+ // Play TTS on notification stream.
+ ttsHashMap.put(TextToSpeech.Engine.KEY_PARAM_STREAM,
+ Integer.toString(AudioManager.STREAM_NOTIFICATION));
+
res = mTts.speak(mMessageBody, TextToSpeech.QUEUE_FLUSH, ttsHashMap);
mState = STATE_SPEAKING;
}
@@ -206,7 +213,11 @@
@Override
public void onUtteranceCompleted(String utteranceId) {
if (utteranceId.equals(TTS_UTTERANCE_ID)) {
- stopSelf();
+ // When we reach here, it could be TTS completed or TTS was cut due to another
+ // new alert started playing. We don't want to stop the service in the later case.
+ if (mState == STATE_SPEAKING) {
+ stopSelf();
+ }
}
}
@@ -236,6 +247,14 @@
loge("exception trying to shutdown text-to-speech");
}
}
+
+ if (mEnableAudio) {
+ // Release the audio focus so other audio (e.g. music) can resume.
+ // Do not do this in stop() because stop() is also called when we stop the tone (before
+ // TTS is playing). We only want to release the focus when tone and TTS are played.
+ mAudioManager.abandonAudioFocus(null);
+ }
+
// release CPU wake lock acquired by CellBroadcastAlertService
CellBroadcastAlertWakeLock.releaseCpuLock();
}
@@ -435,7 +454,7 @@
loge("exception trying to stop text-to-speech");
}
}
- mAudioManager.abandonAudioFocus(null);
+
mState = STATE_IDLE;
}
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java
index b2cdef7..6bb981c 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertReminder.java
@@ -139,7 +139,9 @@
// remind user after 2 minutes or 15 minutes
long triggerTime = SystemClock.elapsedRealtime() + (interval * 60000);
- alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, sPlayReminderIntent);
+ // We use setExact instead of set because this is for emergency reminder.
+ alarmManager.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ triggerTime, sPlayReminderIntent);
return true;
}