How to stop Music (MediaPlayer) with onPause in BaseActivity when App is on background

huangapple 未分类评论41阅读模式
英文:

How to stop Music (MediaPlayer) with onPause in BaseActivity when App is on background

问题

我可以使用这个类来播放音乐

public class MusicPlayer extends AppCompatActivity {

MediaPlayer player;

public void play(Context c, @RawRes int sound){
    if (player == null){
        player = MediaPlayer.create(c, sound);
    }
    player.start();
}

所以我的活动可以通过这个onCreate方法来播放音乐

private MusicPlayer playboy = new MusicPlayer();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

    playboy.play(this, R.raw.song);
}

它可以正常工作,但是当我的应用程序在后台时仍然继续播放...
我知道如何停止和暂停它,但如何在所有活动的基本活动中而不是在活动中做到这一点呢?
我的基本活动看起来像这样

public class BaseActivity extends AppCompatActivity {

MediaPlayer player;

@Override
protected void onPause() {
    super.onPause();
    if (player != null) {
        player.pause();
    }
}

我的活动扩展了BaseActivity...

但是音乐仍然在后台播放...
英文:

I can play music with this class

public class MusicPlayer extends AppCompatActivity {

    MediaPlayer player;

    public void play(Context c, @RawRes int sound){
        if (player == null){
            player = MediaPlayer.create(c, sound);
        }
        player.start();
    }

so my activities can play music by this onCreate

private MusicPlayer playboy = new MusicPlayer();

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        playboy.play(this, R.raw.song);
    }

It works fine but it still continue to play when my app is on the background...
I know how to stop and pause it but how can I do this not IN the activity but in the Base Activity for all activities?
My base activity looks like this

public class BaseActivity extends AppCompatActivity {

    MediaPlayer player;

    @Override
    protected void onPause() {
        super.onPause();
        if (player != null) {
            player.pause();
        }
    }

and my activity extends the BaseActivity...

But the music is still playing in the background...

答案1

得分: 1

你需要在基础活动中像这样初始化媒体播放器:

public class BaseActivity extends AppCompatActivity {

    MediaPlayer player;

    public void play(Context c, @RawRes int sound) {
        if (player == null) {
            player = MediaPlayer.create(c, sound);
        }
        player.start();
    }
}

现在你的音乐活动应该是这样的:

public class MusicPlayer extends AppCompatActivity {

    @Override
    protected void onPause() {
        super.onPause();
        // 在onPause中暂停媒体播放器
        if (player != null) {
            player.pause();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 在onCreate()中播放歌曲
        player.play(this, R.raw.song);
    }
}
英文:

You need initialize media player like this in Base activity

public class BaseActivity extends AppCompatActivity {

    MediaPlayer player;


    public void play(Context c, @RawRes int sound){
            if (player == null){
                player = MediaPlayer.create(c, sound);
            }
            player.start();
        }

}

Now your music activity should be like this

public class MusicPlayer extends AppCompatActivity {

 

    @Override
    protected void onPause() {
        super.onPause();
// pause media player in onPause
        if (player != null) {
            player.pause();
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
// play song in oncreate()
        player.play(this, R.raw.song);
    }

}

huangapple
  • 本文由 发表于 2020年4月9日 19:19:57
  • 转载请务必保留本文链接:https://java.coder-hub.com/61119973.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定