OSDN Git Service

Adds hooks to DeskClock so that other programs may kill or
[android-x86/packages-apps-DeskClock.git] / src / com / android / deskclock / AlarmKlaxon.java
index b8f4b6b..38098c8 100644 (file)
@@ -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();