1. 添加录音权限:
在 AndroidManifest.xml 文件中添加录音权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2. 初始化 MediaRecorder:
在你的 Activity 或 Fragment 中,首先创建 MediaRecorder 对象:
private MediaRecorder mediaRecorder;
private String outputFile;
在 onCreate 方法或其他适当的地方初始化 MediaRecorder:
outputFile = Environment.getExternalStorageDirectory().getAbsolutePath() + "/audio.3gp";
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile(outputFile);
3. 开始录音:
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
4. 停止录音:
mediaRecorder.stop();
mediaRecorder.release();
mediaRecorder = null;
5. 添加动态权限处理:
在 Android 6.0 及以上版本,需要处理动态权限请求。你可以使用 [EasyPermissions](https://github.com/googlesamples/easypermissions) 库简化权限请求流程。
@AfterPermissionGranted(REQUEST_RECORD_AUDIO_PERMISSION)
private void requestRecordAudioPermission() {
String[] perms = {Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (EasyPermissions.hasPermissions(this, perms)) {
// 已经获取录音权限,执行录音操作
startRecording();
} else {
// 申请录音权限
EasyPermissions.requestPermissions(this, "需要录音权限", REQUEST_RECORD_AUDIO_PERMISSION, perms);
}
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
// 权限授予成功的回调
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
// 录音权限授予成功,执行录音操作
startRecording();
}
// 权限拒绝的回调
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
// 处理权限被拒绝的情况
}
6. 添加录音文件保存和读取权限:
如果你希望保存和读取录音文件,还需要添加相应的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
7. 注意事项:
- 在使用 MediaRecorder 时,确保在合适的生命周期方法(例如 onDestroy)中释放资源,避免内存泄漏。
- 在录音结束后,可以通过 outputFile 所指定的路径来获取录音文件。
这是一个简单的使用 MediaRecorder 进行录音的例子。
转载请注明出处:http://www.zyzy.cn/article/detail/15241/Android