From: Patrick Scott <> Date: Wed, 25 Mar 2009 16:08:25 +0000 (-0700) Subject: Automated import from //branches/cupcake/...@142551,142551 X-Git-Tag: android-x86-2.2~164^2~3^2~1 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=a3eb38d96c8f792972de31866c1fd947bc1b99c9;p=android-x86%2Fpackages-apps-DeskClock.git Automated import from //branches/cupcake/...@142551,142551 --- diff --git a/src/com/android/alarmclock/AlarmKlaxon.java b/src/com/android/alarmclock/AlarmKlaxon.java index 0e42daa..95bb0e2 100644 --- a/src/com/android/alarmclock/AlarmKlaxon.java +++ b/src/com/android/alarmclock/AlarmKlaxon.java @@ -121,8 +121,6 @@ class AlarmKlaxon implements Alarms.AlarmSettings { return true; } }); - mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); - mMediaPlayer.setLooping(true); try { TelephonyManager tm = (TelephonyManager) context.getSystemService( @@ -137,17 +135,17 @@ class AlarmKlaxon implements Alarms.AlarmSettings { } else { mMediaPlayer.setDataSource(context, Uri.parse(mAlert)); } - mMediaPlayer.prepare(); - mMediaPlayer.start(); + startAlarm(mMediaPlayer); } catch (Exception ex) { Log.v("Using the fallback ringtone"); // The alert may be on the sd card which could be busy right now. // Use the fallback ringtone. try { + // Must reset the media player to clear the error state. + mMediaPlayer.reset(); setDataSourceFromResource(context.getResources(), mMediaPlayer, com.android.internal.R.raw.fallbackring); - mMediaPlayer.prepare(); - mMediaPlayer.start(); + startAlarm(mMediaPlayer); } catch (Exception ex2) { // At this point we just don't play anything. Log.e("Failed to play fallback ringtone", ex2); @@ -165,6 +163,16 @@ class AlarmKlaxon implements Alarms.AlarmSettings { mPlaying = true; } + // Do the common stuff when starting the alarm. + private void startAlarm(MediaPlayer player) + throws java.io.IOException, IllegalArgumentException, + IllegalStateException { + player.setAudioStreamType(AudioManager.STREAM_ALARM); + player.setLooping(true); + player.prepare(); + player.start(); + } + private void setDataSourceFromResource(Resources resources, MediaPlayer player, int res) throws java.io.IOException { AssetFileDescriptor afd = resources.openRawResourceFd(res);