问题:
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); }