重新创建活动时失去对mediaplayer的控制权

时间:2016-06-30 13:46:37

标签: android android-mediaplayer

在我的项目中,我正在尝试创建一个播放shoutcast流的媒体播放器。在我按下设备上的后退按钮之前,一切似乎都运行良好,我认为这会停止活动并导致设备在重新启动时重新创建活动。问题是,当重新创建活动时,我将失去对媒体播放器的控制并创建新的媒体播放器。

我需要能够让媒体播放器控制回来。怎么可能?

此部分代码属于onCreate

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn = (Button) findViewById(R.id.button);
    if (mediaPlayer == null){
        mediaPlayer = new MediaPlayer();
    try {
        mediaPlayer.setDataSource(getString(R.string.yayin));
    } catch (Exception e) {
        e.printStackTrace();
    }
    mediaPlayer.prepareAsync();
    }

    if(!isPlaying){

        btn.setBackgroundResource(R.drawable.oynat);

    }
    else{

        btn.setBackgroundResource(R.drawable.durdur);

    }
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(!isPlaying){

                playOnReady();
                isPlaying = true;
                btn.setBackgroundResource(R.drawable.durdur);

            }
            else{

                mediaPlayer.reset();
                isPlaying = false;
                btn.setBackgroundResource(R.drawable.oynat);

            }
        }
    });

这部分代码属于playOnReady()函数

 private void playOnReady(){

    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();

        }
    });

}

2 个答案:

答案 0 :(得分:0)

查看Android活动生命周期流程图:https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

您需要考虑离开Activity时调用onPause的路径,然后在再次输入时调用onResume。解决方案可能就像将部分/全部代码从onCreate移动到onResume一样简单。

答案 1 :(得分:0)

使用this教程我已经设法构建了一个处理媒体播放器的服务,我可以随时控制它。