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

Java Android广播流媒体-活动恢复-再次播放,java,android,streaming,radio,Java,Android,Streaming,Radio,我正在构建一个Android应用程序,它可以传输简单的广播电台 编辑:我添加了OnCreate事件和init函数 创建时: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); play_or_pause();

我正在构建一个Android应用程序,它可以传输简单的广播电台

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

创建时:

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 = "";
        }
在创建时,我调用AsyncTask方法:

play_or_pause();
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();
        }
    }
异步任务方法:

play_or_pause();
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();
        }
    }
但这无助于有人写到mediaPlayer对象很奇怪,你无法说出对象的真实状态,比如.isPlaying是否为真/假


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

如果您试图独立于活动状态流式传输/播放某些内容,则应该使用带有通知的前台服务。如果要在活动失去焦点时停止/暂停流,则需要在onPause中停止。不幸的是,这里没有包含活动生命周期方法。我添加了OnCreate事件和init函数