在三星Galaxy S5 Android 5.0上用MediaPlayer加载音频流超过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

由于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.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你找到解决这个问题的方法了吗?