【发布时间】:2018-12-28 23:05:12
【问题描述】:
我构建了一个应用程序,在主菜单中我想创建一个按钮来控制用户是否只想为此应用程序(而不是设备)使用音乐(取消静音)或不(静音)并播放背景音乐在另一个布局上..
这是我调用媒体播放器的方法(在 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 时,不播放背景音乐,然后禁用设备的媒体音量设置(不仅适用于我的应用程序)。 有谁知道如何解决这个问题?谢谢..
编辑:我尝试使用此代码,但仍然无法取消静音..
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
}
有没有cmets?
【问题讨论】:
-
这取决于您如何播放背景音乐。愿意发布您的代码吗?
-
@Clay 我已经发布了一些代码和更多关于我的问题的解释......:D
标签: android android-mediaplayer