在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒

2024-06-20

由于更新至 Android 5.0 MediaPlayer 在 Samsung 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();

如果我在服务中/与prepareAsync()/其他音频流中使用MediaPlayer,也会出现同样的问题。搭载 Android 5 的 Nexus 4 没有这样的问题。 有什么解决办法吗?


首先,你的代码应该被 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();
        }

其次,如果您的prepare() 停止,您可能会考虑使用包装在线程中的prepare() 而不是prepareAsync()。该设备可能正在执行一些挂起的行为,并试图阻止 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(); 
            } 
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒 的相关文章

随机推荐