2011-06-30 40 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