From bf70b6f871ac58439b5e98a305478a773e872b68 Mon Sep 17 00:00:00 2001 From: Jake Hamby Date: Fri, 24 Aug 2012 16:55:28 -0700 Subject: Fix behavior of CMAS audio alert and vibration. Fix bugs in CMAS audio alert and vibration behavior: * Use audio duration of 10.5 seconds for all CMAS alerts. * Fix vibration cadence to match CMAS tone cadence. * Mute audio when volume or camera keys are pressed. * Don't play audio or vibration in silent mode. * Don't play audio in vibrate mode. * Use notification volume rather than alarm volume. * Catch IllegalStateExceptions when stopping audio/TTS (sometimes throws "Unable to retrieve AudioTrack pointer for stop()"). * Add Vibrate setting to CMAS settings for disabling vibration. Bug: 7045214 Change-Id: Id98ea4f42f326b9a253407b9bbe67ca6acc6a20c --- .../CellBroadcastAlertFullScreen.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java') diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java index a8337f30..5bc2ba54 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertFullScreen.java @@ -26,6 +26,7 @@ import android.os.Handler; import android.os.Message; import android.provider.Telephony; import android.telephony.CellBroadcastMessage; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -200,6 +201,25 @@ public class CellBroadcastAlertFullScreen extends Activity { finish(); } + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + switch (event.getKeyCode()) { + // Volume keys and camera keys mute the alert sound/vibration. + case KeyEvent.KEYCODE_VOLUME_UP: + case KeyEvent.KEYCODE_VOLUME_DOWN: + case KeyEvent.KEYCODE_VOLUME_MUTE: + case KeyEvent.KEYCODE_CAMERA: + case KeyEvent.KEYCODE_FOCUS: + // Stop playing alert sound/vibration/speech (if started) + stopService(new Intent(this, CellBroadcastAlertAudio.class)); + return true; + + default: + break; + } + return super.dispatchKeyEvent(event); + } + /** * Ignore the back button for emergency alerts (overridden by alert dialog so that the dialog * is dismissed). -- cgit v1.2.3