am c5ab362a: Add a setting to change the default ringtone.
Merge commit 'c5ab362aa8bd98d8a160a72dc8790103b9d6596f' into eclair-mr2-plus-aosp
* commit 'c5ab362aa8bd98d8a160a72dc8790103b9d6596f':
Add a setting to change the default ringtone.
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a5207d3..47251f8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -205,6 +205,9 @@
<!-- The summary of the side button setting. -->
<string name="volume_button_setting_summary">Set the desired behavior of the side buttons when pressed during an alarm</string>
+ <!-- Title of the ringtone setting. -->
+ <string name="default_ringtone_setting_title">Set default ringtone</string>
+
<!-- Entries listed in the setting for the side-button action. -->
<string-array name="volume_button_setting_entries">
<item>None</item>
diff --git a/res/xml/settings.xml b/res/xml/settings.xml
index e49126c..e034f1d 100644
--- a/res/xml/settings.xml
+++ b/res/xml/settings.xml
@@ -46,4 +46,12 @@
android:summary="@string/volume_button_setting_summary"
android:defaultValue="2" />
+ <com.android.alarmclock.AlarmPreference
+ android:key="default_ringtone"
+ android:title="@string/default_ringtone_setting_title"
+ android:ringtoneType="alarm"
+ android:showDefault="false"
+ android:persistent="false"
+ android:showSilent="true" />
+
</PreferenceScreen>
diff --git a/src/com/android/alarmclock/AlarmPreference.java b/src/com/android/alarmclock/AlarmPreference.java
index cb0e3f5..e4aee40 100644
--- a/src/com/android/alarmclock/AlarmPreference.java
+++ b/src/com/android/alarmclock/AlarmPreference.java
@@ -21,6 +21,7 @@
import android.media.RingtoneManager;
import android.net.Uri;
import android.preference.RingtonePreference;
+import android.provider.Settings;
import android.util.AttributeSet;
/**
@@ -29,6 +30,7 @@
*/
public class AlarmPreference extends RingtonePreference {
private Uri mAlert;
+ private boolean mChangeDefault;
public AlarmPreference(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -37,6 +39,12 @@
@Override
protected void onSaveRingtone(Uri ringtoneUri) {
setAlert(ringtoneUri);
+ if (mChangeDefault) {
+ // Update the default alert in the system.
+ Settings.System.putString(getContext().getContentResolver(),
+ Settings.System.ALARM_ALERT,
+ ringtoneUri == null ? null : ringtoneUri.toString());
+ }
}
@Override
@@ -62,4 +70,8 @@
}
return Alarms.ALARM_ALERT_SILENT;
}
+
+ public void setChangeDefault() {
+ mChangeDefault = true;
+ }
}
diff --git a/src/com/android/alarmclock/SettingsActivity.java b/src/com/android/alarmclock/SettingsActivity.java
index f0b97fd..bebfda8 100644
--- a/src/com/android/alarmclock/SettingsActivity.java
+++ b/src/com/android/alarmclock/SettingsActivity.java
@@ -16,13 +16,17 @@
package com.android.alarmclock;
+import android.content.SharedPreferences;
import android.media.AudioManager;
+import android.media.RingtoneManager;
+import android.net.Uri;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
+import android.preference.RingtonePreference;
import android.provider.Settings;
/**
@@ -40,11 +44,22 @@
"snooze_duration";
static final String KEY_VOLUME_BEHAVIOR =
"volume_button_setting";
+ static final String KEY_DEFAULT_RINGTONE =
+ "default_ringtone";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settings);
+
+ final AlarmPreference ringtone =
+ (AlarmPreference) findPreference(KEY_DEFAULT_RINGTONE);
+ Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this,
+ RingtoneManager.TYPE_ALARM);
+ if (alert != null) {
+ ringtone.setAlert(alert);
+ }
+ ringtone.setChangeDefault();
}
@Override