所以我试图让媒体播放器工作,但在第一次安装时,音乐不会开始播放(我认为这是因为可视化工具所需的权限)。但每次之后它都会很好。
代码:
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"/>
答案 0 :(得分:1)
您收到两个不同的错误。第一个
E/MediaPlayer: Error (-38,0)
表示您尝试先调用MediaPlayer
而不先准备它。
第二个错误
E/MediaPlayer: Error (1,-1010)
答案 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)