我构建了一个应用程序,在主菜单中我想创建一个按钮来控制用户是否只想为此应用程序(而不是设备)使用音乐(取消静音)或不使用(静音)并播放背景音乐在另一个布局..
这是我调用媒体播放器的方法(在课程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
}
有任何意见吗?
答案 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()
方法覆盖此值