X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcom%2Fandroid%2Fdeskclock%2FAlarmKlaxon.java;h=38098c8f5f8f6a3fc0763b07ea8326b119c25c6b;hb=a3aba0c93c31e89045cca669418e85acfb4e22fb;hp=b8f4b6b25f91174fe0f928b410945f068c2b8595;hpb=3dbaa9d07abf3133024bac468e452a071f270fac;p=android-x86%2Fpackages-apps-DeskClock.git diff --git a/src/com/android/deskclock/AlarmKlaxon.java b/src/com/android/deskclock/AlarmKlaxon.java index b8f4b6b..38098c8 100644 --- a/src/com/android/deskclock/AlarmKlaxon.java +++ b/src/com/android/deskclock/AlarmKlaxon.java @@ -86,7 +86,7 @@ public class AlarmKlaxon extends Service { @Override public void onCreate() { - mVibrator = new Vibrator(); + mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); // Listen for incoming calls to kill the alarm. mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); @@ -204,7 +204,7 @@ public class AlarmKlaxon extends Service { // Must reset the media player to clear the error state. mMediaPlayer.reset(); setDataSourceFromResource(getResources(), mMediaPlayer, - com.android.internal.R.raw.fallbackring); + R.raw.fallbackring); startAlarm(mMediaPlayer); } catch (Exception ex2) { // At this point we just don't play anything. @@ -229,10 +229,15 @@ public class AlarmKlaxon extends Service { private void startAlarm(MediaPlayer player) throws java.io.IOException, IllegalArgumentException, IllegalStateException { - player.setAudioStreamType(AudioManager.STREAM_ALARM); - player.setLooping(true); - player.prepare(); - player.start(); + final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); + // do not play alarms if stream volume is 0 + // (typically because ringer mode is silent). + if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) { + player.setAudioStreamType(AudioManager.STREAM_ALARM); + player.setLooping(true); + player.prepare(); + player.start(); + } } private void setDataSourceFromResource(Resources resources, @@ -254,6 +259,9 @@ public class AlarmKlaxon extends Service { if (mPlaying) { mPlaying = false; + Intent alarmDone = new Intent(Alarms.ALARM_DONE_ACTION); + sendBroadcast(alarmDone); + // Stop audio playing if (mMediaPlayer != null) { mMediaPlayer.stop();