只是我的应用程序的背景音乐静音

时间:2014-01-06 10:26:04

标签: android android-mediaplayer

我构建了一个应用程序,在主菜单中我想创建一个按钮来控制用户是否只想为此应用程序(而不是设备)使用音乐(取消静音)或不使用(静音)并播放背景音乐在另一个布局..

这是我调用媒体播放器的方法(在课程Question.java中):

public void playSound(int arg)
{
    try
    {
        if(player != null)
        {
            if (player.isPlaying()) 
            {
                player.stop();
                player.reset();
                player.release();
            }
        }
    }
    catch(Exception e)
    {

    }

    if (arg == 2)
    {
        player = MediaPlayer.create(this, R.raw.b);
    }

    if(player != null)
    {
        player.setLooping(true);
        player.start();
    }
}   

这是按钮的代码(在我的主菜单中,MainActivity.java):

public class MainActivity extends Activity
{
  //another code.....
  public String klik;

  protected void onCreate(Bundle savedInstanceState)
  {
    //another code...

    DataAdapter myDbHelper = new DataAdapter(this);
    myDbHelper.createDatabase();       
    myDbHelper.open();      
    Cursor get = myDbHelper.getSound(1);
    klik = Utility.GetColumnValue(get, "klik");
    //to get value of klik on my database

    if(klik.equals("1"))
    {
        setGbrSound(1);
        //set button's background to mute
    }
    else if(klik.equals("2"))
    {
        setGbrSound(2);
        //set button's background to unmute
    }

    myDbHelper.close();

    //another code...

    btnsuara.setOnClickListener(new View.OnClickListener()
    {   
        @Override
        public void onClick(View arg0)
        {
            // TODO Auto-generated method stub
            if(klik.equals("1"))
            {
                AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
                aManager.setStreamMute(AudioManager.STREAM_MUSIC, true);        
                setSound(2); //update klik value in database to klik=2
                setGbrSound(2); //set button's background to unmute
                setSound(3); //change value of String klik in this class from the value of klik in database
            }
            else if (klik.equals("2"))
            {
                AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
                aManager.setStreamMute(AudioManager.STREAM_MUSIC, false);

                setSound(1); //update klik value in database to klik=1
                setGbrSound(1); //set button's background to mute
                setSound(3); //change value of String klik in this class from the value of klik in database
            }
        }   
    });
}

如果我在MainActivity.java中使用此代码,该函数正常工作(我认为这是因为没有媒体播放器在这个类中播放)。当Question.java类运行时,调用方法playSound并播放媒体播放器。当我回到MainActivity.java并选择静音时,我再次转到Question.java,播放背景音乐,然后禁用设备的媒体音量设置(不仅适用于我的应用程序) )。 有谁知道如何解决这个问题? THX ..

编辑:我试图使用此代码,但它仍然无法取消静音..

    btnsuara.setOnClickListener(new View.OnClickListener()
    {   
        @Override
        public void onClick(View arg0)
        {
            // TODO Auto-generated method stub
            if(isMuted(mContext)==false)
            {
                AudioManager aManager =(AudioManager)getSystemService(AUDIO_SERVICE);
                aManager.setStreamMute(AudioManager.STREAM_MUSIC, true);        

                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
                Editor editor = prefs.edit(); // get an Editor object
                editor.putBoolean("isMuted", true); // set the mute boolean to true (mute)
                editor.commit();

                setGbrSound(2); //set button's background to unmute/sound on
            }
            else if (isMuted(mContext)==true)
            {   
                AudioManager aManager=(AudioManager)getSystemService(AUDIO_SERVICE);
                aManager.setStreamMute(AudioManager.STREAM_MUSIC, false);

                SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
                Editor editor = prefs.edit(); // get an Editor object
                editor.putBoolean("isMuted", false); // set the mute boolean to false (unmute)
                editor.commit();

                setGbrSound(1); //set button's background to mute/sound off
            }
        }   
    });

public static boolean isMuted(Context c)
{
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);
     return prefs.getBoolean("isMuted", false); // false is the default value 
}

有任何意见吗?

1 个答案:

答案 0 :(得分:0)

最快的方式:

1)。将值保存为boolean或int或SharedPreferences

中的任何值

2)。从应用中您播放音乐的任何位置检查此值

你完成了。询问您是否需要一些示例代码

编辑示例:

在您的菜单Activity中,将Context定义为类字段(其中声明了所有其他字段):

     private Context mContext = this;

1)。然后(在你的onClick()方法中),设置一个布尔值,如:

   SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext);
   Editor editor = prefs.edit(); // get an Editor object
   editor.putBoolean("isMuted", true); // set the mute boolean to true
   editor.commit(); // save the changes

2)。使用此方法从应用中的任何位置执行检查(传递有效的Context)。您可以在要从中检查"静音"的活动中定义和调用此方法。选项已激活:

    public static boolean isMuted(Context c){
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(c);
     return prefs.getBoolean("isMuted", false); // false is the default value 
      }

请注意,您可以再次使用Editor.commit()方法覆盖此值