重新开放活动后无法暂停媒体播放器

时间:2015-07-21 00:57:46

标签: java android android-mediaplayer

我的MainActivity.java中有一个对象MediaPlayer,当您点击playB按钮并按pauseB暂停时,该对象会播放声音。一切都很好。但是,如果您重新打开应用程序并单击pauseB,声音将继续播放。怎么解决?如何捕捉当前的比赛MediaPlayer

    public class MainActivity extends ActionBarActivity {
    Button playB;
    Button pauseB;
    Context c;
    MediaPlayer mp;

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

        final Button playB = (Button) findViewById(R.id.playB);
        Button pauseB = (Button) findViewById(R.id.pauseB);


            mp = mp.create(this, R.raw.fawaid_1);
        playB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.start();
            }
        });
        pauseB.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mp.pause();
            }
        });
    }
} 

2 个答案:

答案 0 :(得分:0)

当您重新打开应用时,再次调用onCreate,因此您有一个新的MediaPlayer对象,从那时起,播放和暂停按钮将控制该新的播放器对象而不是前一个。这就是为什么你的暂停按钮对最小化应用程序之前启动的声音没有影响的原因。如果你现在按下播放按钮,你将同时播放两个声音

解决此问题的一种方法是检查媒体播放器是否已经初始化:

if(mp==null)
mp = MediaPlayer.create(this, R.raw.fawaid_1);

答案 1 :(得分:0)

建议在开发音乐播放器时使用Service with AIDL。 的原因。

  1. 重新参加活动后,您可以再次保留控件。

  2. 执行进程间通信很容易。

  3. 这是一个在后台运行的简单音乐播放器Music Player

      

    我在这款音乐播放器中使用的歌曲由SnowFlakes拥有