Android无法初始化Visualizer引擎,错误码:-3

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.xindawn.mediarender, PID: 18702
    java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -3
        at android.media.audiofx.Visualizer.<init>(Visualizer.java:238)
        at com.xx.mediarender.player.MusicPlayEngineImpl.reInitVisualizer(MusicPlayEngineImpl.java:48)
        at com.xx.mediarender.player.MusicPlayEngineImpl.prepareComplete(MusicPlayEngineImpl.java:137)
        at com.xx.mediarender.player.AbstractMediaPlayEngine.onPrepared(AbstractMediaPlayEngine.java:122)
        at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3984)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loopOnce(Looper.java:226)
        at android.os.Looper.loop(Looper.java:313)
        at android.app.ActivityThread.main(ActivityThread.java:8582)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)

错误原因:没有权限,Android6.0以后需要动态申请RECORD_AUDIO权限。

授权代码如下:

List<String> permissions = new ArrayList<String>();

private boolean askPermission() {

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        int RECORD_AUDIO = checkSelfPermission( Manifest.permission.RECORD_AUDIO );
        if (RECORD_AUDIO != PackageManager.PERMISSION_GRANTED) {
            permissions.add(Manifest.permission.RECORD_AUDIO);
        }

        if (!permissions.isEmpty()) {
            requestPermissions(permissions.toArray(new String[permissions.size()]), 1);
        } else
            return false;
    } else
        return false;
    return true;

}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == 1) {

        boolean result = true;
        for (int i = 0; i < permissions.length; i++) {
            result = result && grantResults[i] == PackageManager.PERMISSION_GRANTED;
        }
        if (!result) {

            Toast.makeText(this, "授权result="+result, Toast.LENGTH_LONG).show();//授权结果
        } else {
            //成功
        }
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值