Reputation: 35
How can I solve this Problem? I think I have to save my mute function also but don't know how to do this.
I want to ask that how I can mute sound in my activity according to the check box preference in Settings activity. My settings page look like this.
public class Settings extends PreferenceActivity {
CheckBoxPreference soundPref;
AudioManager mAudioManager = null;
final String SOUND = "soundPreference";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
setPreferenceScreen(createPreferenceHierarchy());
}
private PreferenceScreen createPreferenceHierarchy() {
// Root
PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
// Dialog based preferences
PreferenceCategory category1 = new PreferenceCategory(this);
root.addPreference( category1 );
soundPref = new CheckBoxPreference( this );
soundPref.setTitle(R.string.sound);
soundPref.setKey(SOUND);
/**
* Adding all items to Preferences
*/
category1.addPreference(soundPref);
soundPref.setOnPreferenceClickListener(new ReflectiveAction( this, "evSound" ) );
return root;
}
public void evSound()
{
if(soundPref.isChecked())
{Toast.makeText(getBaseContext(),
R.string.sound_enable,
Toast.LENGTH_SHORT).show();
setSoundText();
if(mAudioManager!=null) {
mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC, false);
}
}
else
{
Toast.makeText(getBaseContext(),
R.string.sound_disable,
Toast.LENGTH_SHORT).show();
setSoundText();
if(mAudioManager!=null) {
mAudioManager.setStreamMute(AudioManager.STREAM_MUSIC,true);
}
}
and I am producing sounds in my another activity by MediaPlayer instance. mp.start().
the problem is that whenever i run my application first i have to visit settings and click on checkbox to select and again for unselect then sound is mute. but when I run application and first go to my activity in which I produces a sound, sound is not mute. I have to visit settings page at first to disable sound.
By doing above coding my checkBox state is stored in my Preference key but my application is not saving mute sound function that's why i have to visit Settings page first to make mute function active.
How can I solve this Problem? I think I have to save my mute function also but don't know how to do this.
Upvotes: 1
Views: 4006
Reputation: 100358
I am assuming you're using an instance of the PreferenceActivity class.
In your activity, you need to set the mute state.
if(PreferenceManager.getSharedPreferences(this).getBoolean("soundprefkey", false))
{
/* mute */
} else {
/* unmute */
}
Where "soundprefkey" is the key as defined in your preferences xml.
If you're not using the PreferenceActivity class, please consider doing this. You may take a look at this.
Upvotes: 2