在Flutter中实现录音功能可以使用官方推荐的audioplayers和audio_recorder(或just_audio和record)组合。以下是使用record包的实现步骤:
- 添加依赖
在
pubspec.yaml中添加:
dependencies:
record: ^4.4.0
permission_handler: ^11.0.1
- 配置权限
- Android:在
android/app/src/main/AndroidManifest.xml添加:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
- iOS:在
ios/Runner/Info.plist添加:
<key>NSMicrophoneUsageDescription</key>
<string>需要麦克风权限进行录音</string>
- 核心代码实现
import 'package:record/record.dart';
import 'package:permission_handler/permission_handler.dart';
class AudioRecorder {
final Record _audioRecord = Record();
Future<bool> startRecording() async {
// 检查权限
if (!await _checkPermission()) return false;
// 开始录音
return await _audioRecord.start(
path: '/path/to/recording.m4a', // 保存路径
encoder: AudioEncoder.aacLc, // 编码格式
);
}
Future<String?> stopRecording() async {
return await _audioRecord.stop();
}
Future<bool> _checkPermission() async {
final status = await Permission.microphone.request();
return status.isGranted;
}
}
- 使用示例
final recorder = AudioRecorder();
// 开始录音
await recorder.startRecording();
// 停止录音
final path = await recorder.stopRecording();
关键说明:
- 需要动态处理权限请求(Android 6.0+/iOS)
- 录音文件默认保存为m4a格式(iOS/Android通用)
- 支持配置采样率、比特率等参数
- 实时音量监听可通过
onAmplitudeChanged回调实现
注意事项:
- 真机测试权限功能
- iOS模拟器不支持录音
- 长时间录音需注意存储空间
如果需要播放录音,可配合使用audioplayers包实现播放功能。