超过10秒钟加载与MediaPlayer的一个语音串流的三星Galaxy S5的Andr​​oid 5.0 [英] Over 10 seconds to load an audiostream with MediaPlayer on Samsung Galaxy S5 Android 5.0

查看:328
本文介绍了超过10秒钟加载与MediaPlayer的一个语音串流的三星Galaxy S5的Andr​​oid 5.0的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于更新到Android 5.0的MediaPlayer不正常的三星Galaxy S5工作。加载时间超过10秒钟启动音频流之后。

Since the update to Android 5.0 MediaPlayer does not work properly on the Samsung Galaxy S5. The loading time is over 10 seconds after you start an audio stream.

样code:

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()/其他audiostreams。的Nexus 4与Android 5还没有这样的问题。
任何解决方案?

Same problem if I use MediaPlayer in a service/with prepareAsync()/other audiostreams. Nexus 4 with Android 5 has not such problems. Any solutions?

推荐答案

首先,你的code应的try-catch包围。所以,你可能想要做一个更新,如

First, your code should be surrounded in try-catch. So you might want to do an update such as

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();
        }

第二,如果你的prepare()被拖延,你可能会考虑使用包裹在一个线程,而不是prepareAsync prepare()()。该设备可能会做一些都挂的行为,并试图阻止国会议​​员。添加actionCancel可能是有用的。

Secondly, if your prepare() is stalling you might consider using prepare() wrapped in a thread instead of prepareAsync(). That device might be doing some behaviors that are hanging, and trying to stop the MP. Adding an actionCancel might be useful.

private void actionCancel(){ 
            try { 
                mp.setDataSource(new String());
            } catch (Exception e) {
                e.printStackTrace();
                android.util.Log.d(TAG,"actionCancel(): mp.setDataSource() exception");
                mp.reset(); 
            } 
} 

这篇关于超过10秒钟加载与MediaPlayer的一个语音串流的三星Galaxy S5的Andr​​oid 5.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆