Android广播流媒体 - 活动恢复 - 再次播放

时间:2014-03-17 00:22:38

标签: java android streaming radio

我正在构建一个可以简化广播电台的Android应用。

编辑:我添加了OnCreate事件和init()函数。

on create:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        play_or_pause();

    }

init()函数:

    public void init() {
            mediaPlayer = new MediaPlayer();
            stream_url = "http://the_radio_station.m3u8";
            playing_now = false;
            fb_error = "";
        }

on created我正在调用AsyncTask方法:

play_or_pause();

AsyncTask方法:

public class play_or_pause_AsyncTask extends
            AsyncTask<Boolean, Integer, String> {

        @Override
        protected String doInBackground(Boolean... params) {
            // TODO Auto-generated method stub

            if (!params[0]) {
                fb_error = "";
                try {
                    if (mediaPlayer.isLooping() || mediaPlayer.isPlaying()) {
                        mediaPlayer.stop();
                    }
                    mediaPlayer.reset();
                    fb_error = String.valueOf(mediaPlayer.isPlaying());
                    mediaPlayer.setDataSource(stream_url);
                    mediaPlayer.prepare();
                    mediaPlayer.start();
                    playing_now = true;
                } catch (IllegalArgumentException e) {
                    // TODO Auto-generated catch block
                    fb_error += e.toString();
                } catch (SecurityException e) {
                    // TODO Auto-generated catch block
                    fb_error += e.toString();
                } catch (IllegalStateException e) {
                    // TODO Auto-generated catch block
                    fb_error += e.getMessage();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    fb_error += e.toString();
                }
            } else {
                mediaPlayer.stop();
                playing_now = false;
            }
            return fb_error;
        }

        @Override
        protected void onPostExecute(String result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
//           Toast.makeText(MainActivity.this, fb_error, Toast.LENGTH_LONG).show();
        }
    }

当我打开另一个Activity并返回MainActivity(生成流)时,它开始再次运行流式传输而不会弯曲旧的。

我在这里发了很多帖子,唯一的建议是使用:

if ( mediaPlayer.isPlaying()) mediaPlayer.stop();

但它没有帮助(有人写道,mediaPlayer对象很奇怪,你无法告诉对象的实际状态是什么 - 就像.isPlaying()是真/假)。

那么在这种情况下我能做些什么呢?

0 个答案:

没有答案