2011-08-29 95 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(); 
         } 
        } 
    }