gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:34:47 25 4
gpt4 key购买 nike

由于更新到 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();

如果我在服务中使用 MediaPlayer/使用 prepareAsync()/其他音频流,也会出现同样的问题。 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();
}
}

关于android - 在 Samsung Galaxy S5 Android 5.0 上使用 MediaPlayer 加载音频流需要超过 10 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29023132/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com