我该如何解决这个问题?我想我也要保存我的静音功能,但不知道该怎么做。
我想问一下,根据“设置”活动中的复选框偏好设置,我如何在活动中静音。 我的设置页面如下所示。
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);
}
}
我正在通过MediaPlayer实例在我的另一个活动中产生声音。 mp.start()。
问题是每当我首先运行我的应用程序时,我必须访问设置并单击复选框以选择并再次取消选择然后声音是静音。但是当我运行应用程序并首先进入我发出声音的活动时,声音不是静音。我必须先访问设置页面才能禁用声音。
通过上面的编码我的checkBox状态存储在我的Preference键中,但我的应用程序没有保存静音功能,这就是为什么我必须先访问Settings页面才能使静音功能处于活动状态。
我该如何解决这个问题?我想我也要保存我的静音功能,但不知道该怎么做。
答案 0 :(得分:2)
我假设您正在使用PreferenceActivity类的实例。
在您的活动中,您需要设置静音状态。
if(PreferenceManager.getSharedPreferences(this).getBoolean("soundprefkey", false))
{
/* mute */
} else {
/* unmute */
}
其中“soundprefkey”是您的首选项xml中定义的键。
如果您没有使用PreferenceActivity类,请考虑这样做。您可以查看this。