Flutter社交媒体录制插件social_media_recorder的使用
Flutter社交媒体录制插件social_media_recorder的使用
social_media_recorder
是一个适用于Flutter的音频录制插件,支持Android和iOS平台。它提供了通过按钮开始和停止录音的功能,类似于社交媒体应用中的语音消息录制按钮。
功能特性
- 支持多种音频编码格式。
- 可以设置最大录音时长。
- 提供回调函数用于处理录音开始、结束等事件。
视频演示
界面截图
配置指南
Android配置
在AndroidManifest.xml
文件中添加如下权限声明:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
...
android:requestLegacyExternalStorage="true">
最低SDK版本为16(如果使用OPUS编码则需要29)。
iOS配置
在Info.plist
文件中添加麦克风访问描述:
<key>NSMicrophoneUsageDescription</key>
<string>We need to access to the microphone to record audio file</string>
同时,在ios/Podfile
文件中添加以下内容以确保正确编译:
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.microphone
'PERMISSION_MICROPHONE=1',
]
end
end
end
最低iOS SDK版本为8.0(如果使用OPUS编码则需要11.0)。
支持的编码器
以下是social_media_recorder
支持的音频编码器枚举:
enum AudioEncoder {
/// Will output to MPEG_4 format container
AAC,
/// Will output to MPEG_4 format container
AAC_LD,
/// Will output to MPEG_4 format container
AAC_HE,
/// sampling rate should be set to 8kHz
/// Will output to 3GP format container on Android
AMR_NB,
/// sampling rate should be set to 16kHz
/// Will output to 3GP format container on Android
AMR_WB,
/// Will output to MPEG_4 format container
/// /!\ SDK 29 on Android /!\
/// /!\ SDK 11 on iOs /!\
OPUS,
}
更多关于编码器的信息可以参考官方文档:
使用示例
下面是一个完整的示例代码,展示了如何在Flutter项目中集成并使用social_media_recorder
插件。
import 'package:flutter/material.dart';
import 'package:social_media_recorder/audio_encoder_type.dart';
import 'package:social_media_recorder/screen/social_media_recorder.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowMaterialGrid: false,
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Social Media Recorder Example'),
),
body: Center(
child: Padding(
padding: const EdgeInsets.only(top: 140, left: 4, right: 4),
child: Align(
alignment: Alignment.centerRight,
child: SocialMediaRecorder(
maxRecordTimeInSecond: 10, // 设置最大录音时间为10秒
startRecording: () {
print("开始录音...");
},
stopRecording: (time) {
print("录音结束,时长:$time 秒");
},
sendRequestFunction: (soundFile, time) {
print("录音文件路径:${soundFile.path},时长:$time 秒");
},
encode: AudioEncoderType.AAC, // 使用AAC编码
),
),
),
),
);
}
}
在这个例子中,我们创建了一个简单的Flutter应用程序,其中包含了一个SocialMediaRecorder
小部件。当用户点击录音按钮时,会触发相应的回调函数,并且可以在控制台输出相关信息。此外,还设置了最大录音时间为10秒,并选择了AAC作为默认的音频编码格式。
希望这篇教程能帮助你更好地理解和使用social_media_recorder
插件!如果有任何问题或建议,请随时提问。
更多关于Flutter社交媒体录制插件social_media_recorder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复