2011-02-12 8 views
5

Tengo el siguiente xml:¿Cómo obtener la preferencia de tono de llamada en el tiempo de ejecución?

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory android:title="Ringtone preference" android:key="ringtone_option_preference"> 
    <RingtonePreference 
    android:key="ring_tone_pref" 
    android:title="Set Ringtone Preference" 
    android:showSilent="true" 
    android:ringtoneType="notification" 
    android:summary="Set Ringtone"/> 
</PreferenceScreen> 

Y quiero cada vez que una notificación está a punto de mostrar, a mirar el valor del tono de pitido y en consecuencia:) ... Para ser más precisos mis notificaciones son generado en una clase broadcastReceiver y cada vez que el receptor capta algo crea una nueva notificación ... Solo quiero que el tono de llamada de la notificación cambie según el tono de llamada configurado en las preferencias ...

¿Cómo puedo hacer eso?

Gracias

Mike

Respuesta

24

de Nevermind lo encontré:

SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(context); 
String strRingtonePreference = preference.getString("ring_tone_pref", "DEFAULT_SOUND");   
notification.sound = Uri.parse(strRingtonePreference); 
+0

hicieron que utilizó OnPrefrenceChangeListener() en el PreferenceFragment? –

+0

@mixkat. ¿Cómo puedo establecer el nombre del tono de llamada como un resumen de RingTonePreference? –

3
<RingtonePreference 
      android:defaultValue="true" 
      android:key="ringtone_sound" 
      android:ringtoneType="notification" 
      android:showSilent="true" 
      android:showDefault="true" 
      android:title="Sound" 
      android:enabled="true" /> 

Luego, después de

String PREFERENCE_SOUND = "ringtone_sound"; 

private SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 

String strRingtonePreference = sharedPreferences.getString(PREFERENCE_SOUND, "DEFAULT_SOUND"); 
Uri defaultSoundUri = Uri.parse(strRingtonePreference); 
notificationBuilder.setSound(defaultSoundUri); 
+0

¿cómo puedo establecer el nombre del tono de llamada como un resumen de RingTonePreference? –

+0

correctamente descrito gracias –

Cuestiones relacionadas