java - 为什么 MediaPlayer 没有准备好?

标签 java android android-mediaplayer

我正在使用 MediaPlayer 加载 mp3 文件并在线播放。我正在使用这段代码:

try{
    Log.i("tag1", "try");
    mediaPlayer.setDataSource(activity.this, Uri.parse("link"));
    mediaPlayer.prepareAsync();
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mediaPlayer) {
            Log.i("tag2", "" + mediaPlayer.getDuration());
        }
    });
    } catch(IOException e) {
    e.printStackTrace();
}

大多数时候什么都没有准备,所以我的 log.i 结果如下:

tag1 = 尝试

tag2 永远不会执行

如果(有时)mediaPlayer 已准备好,我会收到以下日志:

tag1 = 尝试

tag2 = 0 _ 既 Not Acceptable 也不可用

此外,当我调用 mediaPlayer.setOnErrorListener 时,我收到错误 1,-10041,-2147483648。此外,mediaPlayer.setOnInfoListener 没有提供任何信息;我认为它从未被调用过...

可能是什么问题?

不用说,在服务器文件管理器的日志文件夹中,我发现了这个:“stagefright/1.2 (Linux; Android 4.4.4)”。我认为这可以帮助解决问题。 另外,与此相关的是,问题是否是由 PHP 扩展引起的?如果是,激活哪个扩展可以解决此问题?


非常感谢任何帮助。

最佳答案

您有一个MEDIA_ERROR_IO 。正如文档所说,这是针对文件或网络相关操作错误。

在大多数情况下,问题出在 MediaPlayer 类的实现中,或者可能是在 Android 4 中,如上所述 here

我会推荐你​​ExoPlayer ,相反。

关于java - 为什么 MediaPlayer 没有准备好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59581173/

相关文章:

Java Applet CPU 限制?

java - 在 clojure 中重复 "Have a nice day"用户请求的次数

android - 如何在android studio中设置库

android - Multiple SelectionArgs - 查询 mediaStore

java - 委托(delegate)第三方服务器请求的最佳方式是什么?

java - 线程中出现异常 "main"java.lang.NullPointerException 错误 - Eclipse Java 链表

java - 无法发布后台 while 循环中异步任务的进度 - Android

java - 如何将私钥与证书链绑定(bind)?

android - 启用/禁用接收 gcm 通知的最佳程序是什么?

Android 媒体播放器循环无间隙(歌曲开始和结束时无静音)