每当我按下屏幕时,如何停止重复播放背景音乐?

时间:2015-07-27 19:42:33

标签: java android

我的应用程序遇到了一些问题,因为无论何时按下手机上的活动,应用程序都会重复播放音乐(与现有音乐重叠)。我似乎无法在不停止音乐的情况下阻止这种情况发生。

这是代码!

Main.java:

public class Main extends ActionBarActivity {

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

    music();



}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void music(){
    final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
    mediaPlayer.start();
}

}

XML文件:

public class Main extends ActionBarActivity {

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

    music();



}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void music(){
    final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
    mediaPlayer.start();
}
}

PS:我知道文件上还没有任何内容,但我现在正在菜单屏幕上工作!

2 个答案:

答案 0 :(得分:0)

我建议您在使用以下代码播放音乐时停止MediaPlayer:

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    @Override
    public void onCompletion(MediaPlayer mp) {
         mp.stop();
         mp.release();
    }
 });

如果您想继续播放音乐,请使用服务播放音乐而不是活动。

答案 1 :(得分:0)

问题是,无论音乐是否已播放,您都会拨打MediaPlayer.start();。在您的方法中,您可以进行简单的检查,看看MusicPlayer是否已经在播放,如果不是,则启动它。

public void music(){
    final MediaPlayer mediaPlayer = MediaPlayer.create(this, R.drawable.background_musicmain);
    if(!mediaPlayer.isPlaying())
        mediaPlayer.start();
}