所以我使用一个 URL 来使用 mediaPlayer 流式传输音频 - 我可以毫无问题地启动流式传输 - 并停止它......只要我不切换 Activity 。
当我开始流...然后切换 Activity ...然后回来尝试停止它时,就会出现问题。我遇到了崩溃,因为我认为即使 mediaPlayer 仍在运行,该变量也已经为空。
我在主线程中将我的 mediaPlayer 声明为公共(public) - 所以不确定为什么在切换 Activity 后它被视为 null。
这是我启动和关闭流的代码:
if(v.getId()==R.id.btnStart){
Context context = getApplicationContext();
AppPrefs appPrefs = new AppPrefs(context);
if(listening==false){
appPrefs.set_stream("1");
txtListen.setVisibility(View.VISIBLE);
listening=true;
btnStart.setText("Stop Stream");
String url = "http://streamingurl";
mediaPlayer = new MediaPlayer();
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mediaPlayer.setDataSource(url);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} // might take long! (for buffering, etc)
mediaPlayer.start();
}
else{
appPrefs.set_stream("0");
listening=false;
if(
mediaPlayer!=null){mediaPlayer.release();
mediaPlayer = null;
}
btnStart.setText("Start Stream");
txtListen.setVisibility(View.INVISIBLE);
}
}
最佳答案
啊 - 只是不得不让它成为一个静态 - 忘了那部分 - 哎呀!
关于切换 Activity 后,Android dev mediaPlayer 流不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707804/