仅为一个应用程序禁用声音

时间:2011-08-29 22:22:47

标签: android audio preferences

是否可以关闭一个应用程序的所有声音,并保存选择直到下一次启动应用程序?

所以我在StartActivity上有一个ToggleButton,按下这个按钮,应该停用应用程序的所有声音,但其他应用程序的声音应该仍然有效。

我尝试使用Preferences,使用SharedPreferences类,xml文件等等,就像在我的书中一样。但是通过我意识到的介绍,首选项只是一种永久保存数据的方法。 所以我必须在每个按钮上加上一个声音if-clause来检查声音开/关的保存偏好是真是假,然后激活/停用声音?

我认为这可能更容易吗?

3 个答案:

答案 0 :(得分:3)

实际上,如果您想在应用程序中禁用声音 - 您可以不播放它。您可以在SharedPreferences中存储要播放的每个声音的标记,并在每次要播放声音时进行检查。这真的很容易!

答案 1 :(得分:1)

您可以编写自己的MyButton类来扩展Button并覆盖onClick。

答案 2 :(得分:0)

  1. 声明一个字符串

    String strSound;

  2. 在共享偏好设置中输入此行

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

  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();
            }
        }
    }