如何让媒体播放器继续播放相同的音轨,而不在Android中启动另一个音轨

时间:2018-08-07 09:36:46

标签: java android android-mediaplayer

我在主要活动上有一个操作栏图标,当您单击它时,它会播放配乐,并且我可以暂停并正确播放它。当按下操作栏播放图标时,我将其称为以下代码:

private void play() {
    if (!mp.isPlaying()) {
        mp.start();//play sound
        play=true;
        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer arg0) {
                mp.seekTo(0);
            }
        });
    } else {
        mp.pause();
        play=false;
    }
}

onOptionsItemSelected代码:

if (id == com.app.myapp.R.id.play) {
    play();
    invalidateOptionsMenu();
}

我有另一个活动,带有“主页”按钮动作图标,单击该图标时,它带我回到主要活动,并且音轨继续播放,但是当我再次单击“播放”图标时,它将播放相同的另一个实例跟踪我不希望它执行的操作。我使用以下代码返回主要活动:

if (id == com.app.myapp.R.id.homebutton) {
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish(); // Call once you redirect to another activity
}

要做我希望我的应用执行的操作,我还需要什么额外的代码?

任何帮助将不胜感激。

贾弗

1 个答案:

答案 0 :(得分:0)

每次从子活动启动主要活动时,都会创建主要活动。由于要在onCreate()函数中创建mediaPlayer实例,因此将创建新的媒体播放器实例,从而导致两次回放。

修改如下所示的启动主要活动的方式。

if (id == com.app.twelveimams.R.id.homebutton) {
    Log.e("kiran", "clear top from introu");
    Intent intent = new Intent(getApplicationContext(), MainActivity.class);

    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

    startActivity(intent);
    finish(); // Call once you redirect to another activity