Android用MediaRecord录音,运行报错

使用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);
}
然后运行,就可以了

猜你喜欢

转载自blog.csdn.net/qiy6010/article/details/79142163