为什么创建MediaPlayer实例时会抛出“NOT present”错误?

33

创建 MediaPlayer 实例时,LogCat 显示此错误:

QCMediaPlayer mediaplayer NOT present

为什么会这样,这正常吗?

示例:

package com.example.testapp;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;



public class MainActivity extends Activity{


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MediaPlayer mediaPlayer = new MediaPlayer();
    }
}
5个回答

18

这意味着您的平台不支持QCMediaPlayer。 QCMediaPlayer为兼容Snapdragon构建的DASH协议提供了扩展的API和接口,以获取和设置MPD属性。因此,在正常情况下,此错误不应影响媒体播放。

查看以下资源以了解更多详细信息:

QCMediaPlayer.java


3
如果平台不支持 QCMediaPlayer,为什么要尝试启动 QCMediaPlayer? - iheanyi
25
为什么安卓操作系统允许应用程序以及本身发出错误信息?商业上发布的系统不应该完全去除调试模式吗?请问这是为什么? - carl
4
这是不可接受的;它没有提供任何关于如何解决这个问题的信息,即在某些平台上MediaPlayer完全无法正常工作。 - Shawn Lauzon
1
有没有办法在第一时间阻止QCMediaPlayer被调用? - hybrid
2
你的意思是“你的平台”吗? - Fortran
什么是“正常情况”?这些错误可以安全地忽略吗? - lucidbrot

8

我知道这不是“为什么”发生的答案,但如果有人想让它工作(至少对我而言有效),可以通过使用static方法create创建MediaPlayer,而不是创建一个新实例并设置数据源来初始化它:

MediaPlayer player = MediaPlayer.create(this, Uri.parse(sound_file_path));

或者
MediaPlayer player = MediaPlayer.create(this, soundRedId, loop);

我一开始就以这种方式收到了错误。在我的情况下,我知道目标mp3文件不存在,可能是问题所在。 - David Silva-Barrera

2

对我来说,添加mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);解决了问题。最初,我尝试使用其他类型,但它们都无效。


1
这就是解决方案! - Multithreader
对我不起作用!Api 19(KitKat),lg l65 .创建MediaPlayer player = MediaPlayer()实例。 - Fortran

1
我已经添加了这段代码:

MediaPlayer mediaPlayer = MediaPlayer.create(MainActivity.this,R.raw.menumusic);
mediaPlayer.start();

这似乎是出现了问题,解决方法是 重启 Android Studio
希望能对某些人有所帮助。


1

奇怪的是,我发现重新启动Android Studio似乎解决了这个问题。然后我以调试模式运行它,它开始工作了,而且从那以后就没有再出现错误了。很奇怪!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接