英文:
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);
}
}
专注分享java语言的经验与见解,让所有开发者获益!
评论