Mediaplayer错误(-38,0)和错误(1,-1010)

时间:2016-11-23 16:22:29

标签: android android-mediaplayer

所以我试图让媒体播放器工作,但在第一次安装时,音乐不会开始播放(我认为这是因为可视化工具所需的权限)。但每次之后它都会很好。

代码:

    mPlayer = MediaPlayer.create(this, R.raw.bik);
    mPlayer.setLooping(true);
    mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mp.start();
        }
    });

Log cat:

11-23 17:18:29.979 28329-28329/com.waro.blockevader E/MediaPlayer: Error (-38,0)
11-23 17:18:29.979 28329-28329/com.waro.blockevader E/MediaPlayer: Error (-38,0)
11-23 17:18:29.979 28329-28329/com.waro.blockevader E/MediaPlayer: Error (1,-1010)
11-23 17:18:29.979 28329-28329/com.waro.blockevader E/MediaPlayer: Error (-38,0)
11-23 17:18:29.979 28329-28329/com.waro.blockevader V/MediaPlayer[Native]: isPlaying: 0
11-23 17:18:29.979 28329-28329/com.waro.blockevader E/MediaPlayer: Error (-38,0)

文件格式为.mp4

感谢您的帮助。

编辑:

每次我的意思是什么;

每次我给予权限并重新启动应用程序后,音乐就会开始播放,并且没有错误。

权限:

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

2 个答案:

答案 0 :(得分:1)

您收到两个不同的错误。第一个

E/MediaPlayer: Error (-38,0) 

表示您尝试先调用MediaPlayer而不先准备它。

第二个错误

E/MediaPlayer: Error (1,-1010)

表示不支持媒体。您可以看到错误代码herehere

答案 1 :(得分:1)

我通过改变onResumse(),

中的一部分来修复它

正如所料,这确实是造成破坏的许可, 我有:

if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
        if (!mPlayer.isPlaying() && !mpCreated) {
            initTunnelPlayerWorkaround();
            init();
        } else {
            mPlayer.start();
            mVisualizerView.link(mPlayer);
        }
    } else {
        cleanUp();
        mPlayer.start();
        Log.i("boop","biep");
    }

最后通过该日志发现它进入了else,这意味着它正在调用cleanUp();方法

在cleanUp()方法中我有:

private void cleanUp() {
    if (mPlayer != null) {
        mVisualizerView.release();
        if(!mPlayer.isPlaying()) {
            mPlayer.pause();
        }
    }
}

第二个如果造成严重破坏(duh)并通过将其更改为:

来修复它
private void cleanUp() {
    if (mPlayer != null) {
        mVisualizerView.release();
        if(mPlayer.isPlaying()) {
            mPlayer.pause();
        }
}

我知道这是一个奇怪而具体的答案,但也许其他有同样斗争的人可以找出他或她遇到问题的原因。

度过美好的一天,感谢您的帮助

~Waro(dh19,不能悲伤地使用waro)