gpt4 book ai didi

android - MediaPlayer onPrepared 未触发

转载 作者:行者123 更新时间:2023-11-30 02:58:37 25 4
gpt4 key购买 nike

我在使用 MediaPlayer 时遇到了一点问题。问题出现在 Android 4.0.3 - 4.0.4 上。发生的事情是我的 onPrepare() 方法在这两个版本上根本没有被触发。在 4.3 和 4.4 上测试,完全没有问题。

我不知道它不起作用的可能原因是什么。所以欢迎任何想法、想法等。

播放代码:

       try {
if (!player.isPlaying()) {
player.reset();
player.setOnPreparedListener(this);
player.setOnCompletionListener(mFragment);
player.setDataSource(String.valueOf(tmpUri));
player.prepareAsync();
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

start() 在 prepare 方法中。

Logcat 错误:

  ERROR/MediaPlayer(10830): Error (1,-2147483648)
ERROR/MediaPlayer(10830): mOnErrorListener is null. Failed to send MEDIA_ERROR message.

最佳答案

我找到了问题的答案,所以我要分享我的信息。

无论如何,问题是在 Android 4.0.4 和 4.0.3 上读取 mp3 文件时设备内存 setDataSource() 没有正确读取文件长度。这让 MediaPlayer 变得疯狂并调用 Error (1,-2147483648)。

Android 给所有文件长度 = 0x7ffffffffffffffL。

为什么?我不知道;)

修复:

 File file = new File(uri);
long length = file.getTotalSpace()
FileInputStream is = new FileInputStream(file);
player.setDataSource(is.getFD(), 0l, length);
player.prepareAsync();

就是这样!希望它能帮助有类似问题的人,和平!

关于android - MediaPlayer onPrepared 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22910417/

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