gpt4 book ai didi

Android MediaPlayer java.io.IOException : Prepare failed.:状态=0x1

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:01:19 24 4
gpt4 key购买 nike

我正在使用 Android 的 MediaPlayer 在我的应用程序中设置 URL 流。我尝试了几个不同的帖子来处理退出代码和错误:(1,-2147483648)。

我尝试了几种不同的流,但我似乎无法让 MediaPlayer 工作。我曾考虑过使用 Google 的 ExoPlayer,但它有点复杂,我不想跳槽以防遗漏某些东西。

媒体播放器:

private MediaPlayer player;
String url = "http://199.180.75.118:80/stream"; //temp stream
private void initializeMediaPlayer() {
player = new MediaPlayer();
player.setAudioAttributes( new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build());

try {
player.setDataSource(url);
player.prepareAsync();
player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

我还包含了 android 权限:

<uses-permission android:name="android.permission.INTERNET" /> 

我曾尝试使用原始流类型(但它会引发弃用警告):

player.setAudioStreamType(AudioManager.STREAM_MUSIC);

所以我改为使用 .setAudioAttributes(...)我试图只运行 prepare() 而不是给出问题标题的 prepareAsync() ,但我仍然会导致相同的错误。我已经查看了实际的错误定义,但也没有运气( Android MediaPlayer error (1, -2147483648) )。我不认为这是一个来源问题,因为我已经尝试了多个其他流。如果我跳过了可能导致错误的重要内容,请告诉我。

编辑如果它有帮助的话,我一直在调查我的电话,我发现 MediaPlayer 从不调用 onPrepared(...)。我检查了我一直在测试的所有媒体的内容类型,它们都是音频/MPEG header 。所以我不明白为什么 MediaPlay 没有访问 onPrepared。

最佳答案

private void initializeMediaPlayer() {
player = new MediaPlayer();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
player.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setLegacyStreamType(AudioManager.STREAM_MUSIC)
.build());
} else {
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
try {
player.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
player.setDataSource(url);
player.prepareAsync();
} catch (Exception e) {
e.printStackTrace();
}
}

onPrepared calling in seconds.

在 android 9 中,检查这个 https://developer.android.com/training/articles/security-config

AndroidManifest.xml 添加networkSecurityConfig属性

...
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
...

在 src/res/xml 添加 network_security_config.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config>

关于Android MediaPlayer java.io.IOException : Prepare failed.:状态=0x1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55479574/

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