2011-06-30 45 views
1

我该如何解决这个问题?我想我也必须保存我的静音功能,但不知道如何做到这一点。如何在android中静音?

我想问一下,如何根据“设置”活动中的复选框首选项将我的活动中的声音静音。 我的设置页面看起来像这样。

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()。

问题是,无论何时我首先运行我的应用程序,我必须访问设置并单击复选框选择,然后再次取消选择,然后声音静音。但是当我运行应用程序并首先进入我产生声音的活动时,声音不是静音的。我必须先访问设置页面才能禁用声音。

通过上述编码我复选框状态做的是保存在我的首选项键,但我的应用程序不节能静音功能,这就是为什么我必须首先访问设置页面,使静音功能激活。

我该如何解决这个问题?我想我也必须保存我的静音功能,但不知道如何做到这一点。

回答

2

我假设您正在使用PreferenceActivity类的实例。

在您的活动中,您需要设置静音状态。

if(PreferenceManager.getSharedPreferences(this).getBoolean("soundprefkey", false)) 
{ 
    /* mute */ 
} else { 
    /* unmute */ 
} 

其中“soundprefkey”是在首选项xml中定义的关键。

如果你不使用PreferenceActivity类,请考虑这样做。你可以看看this

+0

嘿,我已经更新了我的问题。请检查并帮助我。为你的回应。 – Saad

+0

在您的主要活动中使用上面的代码,用您的密钥替换'soundprefkey'。 – nhaarman

+0

你的意思是说,我必须在我的主要活动中使用上面的代码来启用和禁用声音,我也考虑过这个,但我认为这不是一个好方法。有没有其他方法可以解决这个问题?我会尝试这段代码,但如果你有什么更好的想法,请让我知道这一点。 Thnkx – Saad