使用MediaRecord录音,运行时易报错如下:
java.lang.RuntimeException:
Caused by: java.lang.RuntimeException: setAudioSource failed.
查看原因是代码中的 setAudioSource() 方法出错
解决(权限问题导致):
1.Android6.0以下,缺少权限,在代码中添加如下权限:
<uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>2.如果6.0以上,需要添加动态权限,如:
//android6.0动态权限获取 if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { //申请权限 第二个参数是一个 数组 说明可以同时申请多个权限 ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.RECORD_AUDIO}, 1); } else {//已授权 //执行相应逻辑代码... }
//动态权限授权后的回调逻辑 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == 1) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //权限申请成功,执行相应逻辑代码... } else { Toast.makeText(MainActivity.this, "获取权限申请失败", Toast.LENGTH_SHORT).show(); } } super.onRequestPermissionsResult(requestCode, permissions, grantResults); }然后运行,就可以了