在三星Galaxy S5 Android 5.0上用MediaPlayer加载音频流超过10秒
由于Android 5.0 MediaPlayer的更新无法在三星Galaxy S5上正常运行。启动音频流后,加载时间超过10秒 样本代码:在三星Galaxy S5 Android 5.0上用MediaPlayer加载音频流超过10秒,android,android-mediaplayer,android-5.0-lollipop,audio-streaming,samsung-mobile,Android,Android Mediaplayer,Android 5.0 Lollipop,Audio Streaming,Samsung Mobile,由于Android 5.0 MediaPlayer的更新无法在三星Galaxy S5上正常运行。启动音频流后,加载时间超过10秒 样本代码: MediaPlayer mPlayer new MediaPlayer(); String url = "http://149.13.0.80:80/radio1.ogg"; mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mPlayer.setDataSource(url); mPlayer
MediaPlayer mPlayer new MediaPlayer();
String url = "http://149.13.0.80:80/radio1.ogg";
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setDataSource(url);
mPlayer.prepare();
mPlayer.start();
如果将MediaPlayer与prepareAsync()或其他音频流一起使用,则会出现同样的问题。带有安卓5的Nexus4没有这样的问题。
有什么解决方案吗?首先,您的代码应该包含在try-catch中。因此,您可能需要执行更新,例如
MediaPlayer mPlayer = new MediaPlayer();
String url = "http://149.13.0.80:80/radio1.ogg";
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mPlayer.setDataSource(url);
mPlayer.prepare();
mPlayer.start();
} 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();
}
第二,如果你的准备()正在拖延,你可以考虑在线程中使用PayRayes(),而不是准备好()。该设备可能正在执行某些挂起的行为,并试图停止MP。添加actionCancel可能很有用
private void actionCancel(){
try {
mp.setDataSource(new String());
} catch (Exception e) {
e.printStackTrace();
android.util.Log.d(TAG,"actionCancel(): mp.setDataSource() exception");
mp.reset();
}
}
谢谢你的回答。但这没用。@asdf321你找到解决这个问题的方法了吗?