两个媒体播放器一次播放

时间:2014-01-21 18:06:08

标签: android audio

我创建一个应用程序,并在一个布局(只是称之为布局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();
        }
    }
}

但这就是问题所在。

  1. 当我进入布局B时,布局A中的媒体播放器和布局B中的媒体播放器同时播放,因此声音同时播放。

  2. 当我回到布局A时,布局B中的媒体播放器停止,布局A中的媒体播放器停止并再次从头开始播放,它没有继续播放的媒体播放器之前。

  3. 当设备被锁定时,媒体播放器仍在播放,尽管我已经使用了指示器是否应该暂停。对代码有任何更正?

2 个答案:

答案 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