Visualizer initCheck failed -3( Error code -3 when initializing Visualizer)

问题:

E/AudioEffect: set(): AudioFlinger could not create effect, status: -1
E/visualizers-JNI: Visualizer initCheck failed -3
E/Visualizer-JAVA: Error code -3 when initializing Visualizer.

java.lang.RuntimeException: Unable to start activity ComponentInfo

java.lang.RuntimeException: Cannot initialize Visualizer engine, error: -3


原因:

没有授权。

要注意,在Android 6.0+ 以上,在AndroidManifest.xml添加权限是不够的,要显式询问用户


解决办法:

如下,记得调用 askPermission() !

-------------------------------------代码分割线------------


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();
            // askPermission();
        } else {
            //授权成功
        }
    }
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值