我创建一个应用程序,并在一个布局(只是称之为布局A),我播放媒体播放器,然后当我去另一个布局(只是称之为布局B),我想要布局A的声音是继续在布局B中播放,当我回到布局A时,我还希望媒体播放器仍在播放之前播放的音乐。
在布局A中,我将此代码设置为onCreate:
player = MediaPlayer.create(this, R.raw.sound);
if(!isMuted())
{
player.setLooping(true);
player.start();
}
...
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
Intent intent = new Intent(A.this, B.class);
stop=1;
startActivity(intent);
}
});
这段代码:
@Override
protected void onPause()
{
super.onPause();
if (stop!=1)
{
//stop=1 if i go to another layout, for example when i want to go to Layout B
//if the device is automatically locked, i want the media player is paused and it resumed when i unlock the device, so i use stop!=1 to know whether the sound should be paused or not
player.pause();
length = player.getCurrentPosition();
}
}
@Override
protected void onResume()
{
super.onResume();
if(!isMuted())
{
//isMuted is method to know whether the sound is muted or not, if it isn't muted, then the sound is resumed
player.seekTo(length);
player.setLooping(true);
player.start();
}
}
在布局B中,我在onCreate中使用了这段代码:
player = MediaPlayer.create(this, R.raw.sound);
....
这段代码:
protected void onPause()
{
super.onPause();
player.pause();
length = player.getCurrentPosition();
}
@Override
protected void onResume()
{
super.onResume();
if(!isMuted())
{
if(player.isPlaying())
{
}
else
{
player.seekTo(length);
player.setLooping(true);
player.start();
}
}
}
但这就是问题所在。
当我进入布局B时,布局A中的媒体播放器和布局B中的媒体播放器同时播放,因此声音同时播放。
当我回到布局A时,布局B中的媒体播放器停止,布局A中的媒体播放器停止并再次从头开始播放,它没有继续播放的媒体播放器之前。
当设备被锁定时,媒体播放器仍在播放,尽管我已经使用了指示器是否应该暂停。对代码有任何更正?
答案 0 :(得分:0)
我建议您使用服务播放和暂停/停止音乐。不建议使用Activity来处理音乐。您可以启动服务,然后在其中播放音乐。与Activity相比,服务在后台运行,并且不会经常自动销毁。这是一个示例应用代码,与您需要的代码类似media player sound continue in all activities
答案 1 :(得分:0)
在活动中MediaPlayer可以发挥很大作用 您应该使用Service在应用程序的任何位置播放MediaPlayer和控件。 我用过这个教程。 https://thenewcircle.com/s/post/60/servicesdemo_using_android_service