2011-08-29 53 views
1

是否可以關閉所有的聲音只是一個應用程序,並保存的選擇,直到應用程序的下一個開始?禁用聲音只是一個應用

因此,我在StartActivity上有一個ToggleButton,通過按下此按鈕,應用程序的所有聲音都應該被停用,但其他應用程序的聲音仍然可以正常工作。

我嘗試過使用首選項,使用SharedPreferences類,xml文件等,就像在我的書中一樣。但通過介紹我意識到,首選項只是一種方法來保存數據永久。 所以我將不得不包括例如與聲音的每一個按鈕,如果子句來檢查,如果這樣或那樣的保存偏好聲音開/關是真/假,然後激活/關閉聲音?

我認爲這可能會更容易?

+0

爲了清楚起見,您希望以編程方式執行此操作,應用程序內部您想保持安靜,還是想要在另一個應用程序上強制執行此操作? – Mobius

+0

我只想在應用程序內部使用它,所以如果我在應用程序中靜音,其他應用程序聲音仍然應該在 – 10ff

回答

3

其實,如果你想在應用程序中禁用聲音 - 你可以不玩它。您可以將每個想要播放的聲音的標誌存儲在SharedPreferences中,並在每次播放聲音時檢查它。這很簡單!

+0

好吧,所以您的意思是我必須在SharedPreferences中只存儲一個屬性。然後我必須在每個onClickListener中設置一個圍繞命令的if-clause來播放聲音或不播放聲音? – 10ff

+0

@ robinson1,是的,你說得對。如果它是應用程序中的全局聲音標誌,則必須爲每個播放的聲音存儲一個布爾值,或者只存儲一個布爾值。如果它是假的 - 你只是不發聲,就這些。 – Egor

+0

謝謝。我現在將一個soundcall設置爲一個if子句,它檢查是否檢查了一般的音色設置。 – 10ff

1

您可以編寫自己的MyButton類來擴展Button並覆蓋onClick。

+0

也可以工作,謝謝。但我現在用每個播放聲音的按鈕周圍的if子句解決它。 – 10ff

0
  1. 聲明一個字符串

    String strSound;

  2. 在共享偏好設置進入這一行

    strSound = prefs.getString( 「上」, 「聲音」,);

  3. onActivityResult

    strSound = prefs.getString("sound", "on");

  4. 把這個線在你的媒體播放器,這是用來給聲音爲你的應用

    private void playSound() 
    { 
    mp = MediaPlayer.create(MyActivity.this, R.raw."your_soundfile_name"); 
    
    mp.setOnCompletionListener(new OnCompletionListener() 
    { 
        @Override 
        public void onCompletion(MediaPlayer mp) 
        { 
         mp.release(); 
        } 
    }); 
    if(strSound.equals("on")) 
    mp.start(); 
    
  5. 現在把這個線就進入這一行您的切換按鈕活動

    your_togglebutton_id.setOnCheckedChangeListener(new  CompoundButton.OnCheckedChangeListener() 
    { 
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
        { 
         prefs = getSharedPreferences(prefName, MODE_PRIVATE); 
         SharedPreferences.Editor editor = prefs.edit(); 
         if (isChecked) 
         { 
          editor.putString("sound", "on"); 
          editor.commit(); 
         } 
         else 
         { 
          editor.putString("sound", "off"); 
          editor.commit(); 
         } 
        } 
    }