0

i have a problem regarding changing the volume for Ringer, Notification etc, from PreferenceActivity.

My pref.xml look like this for volume:

    <PreferenceCategory
            android:title="Incoming Call">

    <RingtonePreference
            android:name="Ringtone Preference"
            android:summary="Select a ringtone"
            android:title="Ringtones"
            android:key="ringtonePref" />
    <VolumePreference
        android:name="Volume Preference"
        android:summary="Ringtone Volume"
        android:title="Ringtone Volume"
        android:key="ringVolPref"/>

    </PreferenceCategory>

and i don;t know how can i change the volume for ringtone (for notification volume i've declared another PreferenceCategory.) .

This is the code for PreferenceActivity:

public class SettingTest extends PreferenceActivity implements onPreferenceClickListener {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.layout.ringtone);

        RingtonePreference ringVolPref = (RingtonePreference) findPreference("ringVolPref");
        RingtonePreference notifVolPref = (RingtonePreference) findPreference("notifVolPref");

    public boolean  onPreferenceClick(Preference preference){
        int progress = 1;
        if (preference.getKey().equals("ringVolPref")){

            AudioManager aManager = (AudioManager) getSystemService(AUDIO_SERVICE);
            aManager.setStreamVolume(AudioManager.STREAM_RING, progress, AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND);


        }
        return true;

      }

and i dont know how to put the code in onPreferenceClic(). Please help guys. Thanks in advance

Johannes
  • 23
  • 2
  • 10

1 Answers1

0

you need to implement onPreferenceClickListener in your class then on the onPreferenceClick method you override use the key you set in your xml to find what one was clicked

see here for similar example

Community
  • 1
  • 1
tyczj
  • 71,600
  • 54
  • 194
  • 296
  • in PreferenceActivity i have: `ringVolPref.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { //*code return false; } }); ` where is placed the //* code, i don't know how to put the code with same functionality like in above code (with a seekBar declared from Activity) – Johannes May 16 '12 at 20:06
  • i saw the example, but i cannot figure how to implement on – Johannes May 17 '12 at 13:30
  • please see my Edited Code above. In onPreferenceClick body, i think it's the wrong code, because the volume still don't change – Johannes May 17 '12 at 14:07