我正在构建一个可以简化广播电台的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()是真/假)。
那么在这种情况下我能做些什么呢?