应用程序关闭时有背景音乐播放

3

我成功地在我的应用程序中添加了背景音乐,但是当我关闭它时,它并没有停止。当我点击 HOME 或者 BACK 按钮时,它仍然播放音乐。有人知道如何解决这个问题吗?

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

    MediaPlayer bsound = MediaPlayer.create(this, R.raw.sample);
    bsound.setLooping(true); // Set looping
    bsound.setVolume(100,100);
    bsound.start();

    TextView txt = (TextView) findViewById(R.id.textView1);  
    Typeface font = Typeface.createFromAsset(this.getAssets(), "Schalk.ttf");  
    txt.setTypeface(font); 

    TextView txt1 = (TextView) findViewById(R.id.button1);  
    Typeface font1 = Typeface.createFromAsset(this.getAssets(), "Schalk.ttf");  
    txt1.setTypeface(font1);            
}

public void list(View view) {
    Intent intent = new Intent(this, Menus.class);
    startActivity(intent);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main_menu, menu);
    return true;
}
4个回答

2
尝试暂停和恢复MediaPlayer:
MediaPlayer bsound;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);

    bsound = MediaPlayer.create(this, R.raw.sample);
    bsound.setLooping(true); // Set looping
    bsound.setVolume(100, 100);
    bsound.start();

    TextView txt = (TextView) findViewById(R.id.textView1);
    Typeface font = Typeface.createFromAsset(this.getAssets(), "Schalk.ttf");
    txt.setTypeface(font);

    TextView txt1 = (TextView) findViewById(R.id.button1);
    Typeface font1 = Typeface.createFromAsset(this.getAssets(), "Schalk.ttf");
    txt1.setTypeface(font1);
}

@Override
protected void onPause() {
    if (bsound.isPlaying()) {
        bsound.pause();
    }
    super.onPause();
}

@Override
protected void onResume() {
    super.onResume();
    bsound.start();
}

同时,你没有初始化那个MediaPlayer bsound字段。请更改这行:

MediaPlayer bsound = MediaPlayer.create(this, R.raw.sample);

转换为:

bsound = MediaPlayer.create(this, R.raw.sample);

@user3153271请点击答案左侧的复选标记接受他的答案。这是一个很好的答案,显然对您有帮助。 - Michael Yaworski
先生,还有一个问题。当我切换活动时,它会停止播放背景音乐。我希望在使用应用程序时,背景音乐可以继续播放,如果我按下主页按钮,它将停止。对不起我的英语不好 :) - user3153271

0

我已经做了这个,在 onStop 方法中加入以下代码:public void onStop() { super.onPause(); if(bsound!=null && bsound.isPlaying()){ bsound.stop(); bsound.release(); bsound=null; } }但是它不起作用。 - user3153271
检查onStop()是否被调用。然后在onPause()中执行该操作。 是的,你还没有初始化MediaPlayer bsound字段。 - Yakiv Mospan
我是一个完全的初学者,非常抱歉打扰大家,但你们能告诉我该怎么做吗? - user3153271
我已经添加了一个答案,请尝试。 - Yakiv Mospan
抱歉,Yakiv,你的答案很好,但有一个问题,如果我更改活动,则背景音乐会停止。我该怎么办?很抱歉没有早些检查你的答案,我真的不知道我需要这样做哈哈哈,请帮帮我。 - user3153271
你应该使用Service来处理背景音乐。在这里,你可以找到很多相关信息:http://developer.android.com/guide/components/services.html - Yakiv Mospan

0
在活动的onPause()方法中调用pause()方法,在onStart()方法中启动。

我是绝对的初学者,很抱歉打扰你们,但你们能告诉我该怎么做吗? - user3153271
上面的第一个答案应该能解决问题。它是完整的代码。 - Dejan

0

复制下面的代码并粘贴到 First Activity 标签下的 AndroidManifest.xml 文件中。

<activity                        
            android:name="com.FirstActivity"
            android:clearTaskOnLaunch="true" 
            android:launchMode="singleTask"
            android:excludeFromRecents="true">              

        </activity>     

同时,在 AndroidManifest.xml 文件的所有 Activity 标签下添加以下代码

 android:finishOnTaskLaunch="true"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接