Flutter社交媒体音频录制插件social_media_audio_recorder的使用
Flutter社交媒体音频录制插件social_media_audio_recorder的使用
Android
-
权限处理:
- 由于版本4.4.0开始,此插件已使用Flutter 1.12 Android插件API实现。因此,应用程序开发者也需要迁移到支持新Android基础设施的环境。可以通过遵循升级预1.12 Android项目迁移指南来完成.未进行迁移可能会导致意外行为.最常见的已知错误是
permission_handler
在调用.request()
方法后没有返回.
- 由于版本4.4.0开始,此插件已使用Flutter 1.12 Android插件API实现。因此,应用程序开发者也需要迁移到支持新Android基础设施的环境。可以通过遵循升级预1.12 Android项目迁移指南来完成.未进行迁移可能会导致意外行为.最常见的已知错误是
-
AndroidX
- 自从版本3.1.0起,
permission_handler
插件切换到了AndroidX版本的Android Support Libraries.这意味着您的Android项目也需要升级以支持AndroidX.详细的说明可以在这里找到.
TL;DR版本如下:
- 在
gradle.properties
文件中添加以下内容:android.useAndroidX=true android.enableJetifier=true
- 确保在
android/app/build.gradle
文件中将compileSdkVersion
设置为33:android { compileSdkVersion 33 ... }
- 确保替换所有
android.
依赖项为其对应的AndroidX版本(完整的列表可以在这里找到).
添加权限到您的
AndroidManifest.xml
文件。 有debug
,main
和profile
版本,根据您如何启动应用选择这些版本.通常,仅添加main
版本的权限就足够了. 一个包含所有可能权限的完整示例AndroidManifest.xml
可以在这里找到.示例XML代码如下:
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- Optional, you'll have to check this permission by yourself. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 最小SDK版本:19(可能更高 -> 编码器依赖)
- 自从版本3.1.0起,
-
振动权限:
- 确保在您的
Android Manifest
文件中添加以下权限:
<uses-permission android:name="android.permission.VIBRATE"/>
- 确保在您的
iOS
-
权限处理:
- 将权限添加到您的
Info.plist
文件. 一个包含所有可能权限的完整示例Info.plist
可以在这里找到.
重要提示:当您想要提交应用时,必须包括所有权限选项。这是因为
permission_handler
插件会触及不同的SDK,并且静态代码分析器(由Apple在提交应用时运行)会检测到这一点并断言如果找不到匹配的权限选项。更多相关信息可以在这里找到。插件使用宏来控制是否启用权限。
您必须列出应用程序中需要使用的权限:
示例Podfile代码如下:
post_install do |installer| installer.pods_project.targets.each do |target| ... # 这里有一些自动生成的配置 # 开始权限处理配置 target.build_configurations.each do |config| config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [ '$(inherited)', ## dart: PermissionGroup.camera 'PERMISSION_CAMERA=1', ## dart: PermissionGroup.calendar 'PERMISSION_EVENTS=1', ## dart: PermissionGroup.reminders 'PERMISSION_REMINDERS=1', ## dart: PermissionGroup.contacts 'PERMISSION_CONTACTS=1', ## dart: PermissionGroup.camera 'PERMISSION_CAMERA=1', ## dart: PermissionGroup.microphone 'PERMISSION_MICROPHONE=1', ## dart: PermissionGroup.speech 'PERMISSION_SPEECH_RECOGNIZER=1', ## dart: PermissionGroup.photos 'PERMISSION_PHOTOS=1', ## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse] 'PERMISSION_LOCATION=1', ## dart: PermissionGroup.notification 'PERMISSION_NOTIFICATIONS=1', ## dart: PermissionGroup.mediaLibrary 'PERMISSION_MEDIA_LIBRARY=1', ## dart: PermissionGroup.sensors 'PERMISSION_SENSORS=1', ## dart: PermissionGroup.bluetooth 'PERMISSION_BLUETOOTH=1', ## dart: PermissionGroup.appTrackingTransparency 'PERMISSION_APP_TRACKING_TRANSPARENCY=1', ## dart: PermissionGroup.criticalAlerts 'PERMISSION_CRITICAL_ALERTS=1' ] end # 结束权限处理配置 end end
删除您不需要的权限描述。例如,如果您不需要相机权限,请删除
NSCameraUsageDescription
。以下是Info.plist
中的权限与键之间的关系:权限 Info.plist 键 宏 PermissionGroup.calendar NSCalendarsUsageDescription PERMISSION_EVENTS PermissionGroup.reminders NSRemindersUsageDescription PERMISSION_REMINDERS PermissionGroup.contacts NSContactsUsageDescription PERMISSION_CONTACTS PermissionGroup.camera NSCameraUsageDescription PERMISSION_CAMERA PermissionGroup.microphone NSMicrophoneUsageDescription PERMISSION_MICROPHONE PermissionGroup.speech NSSpeechRecognitionUsageDescription PERMISSION_SPEECH_RECOGNIZER PermissionGroup.photos NSPhotoLibraryUsageDescription PERMISSION_PHOTOS PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse NSLocationUsageDescription, NSLocationAlwaysAndWhenInUseUsageDescription, NSLocationWhenInUseUsageDescription PERMISSION_LOCATION PermissionGroup.notification PermissionGroupNotification PERMISSION_NOTIFICATIONS PermissionGroup.mediaLibrary NSAppleMusicUsageDescription, kTCCServiceMediaLibrary PERMISSION_MEDIA_LIBRARY PermissionGroup.sensors NSMotionUsageDescription PERMISSION_SENSORS PermissionGroup.bluetooth NSBluetoothAlwaysUsageDescription, NSBluetoothPeripheralUsageDescription PERMISSION_BLUETOOTH PermissionGroup.appTrackingTransparency NSUserTrackingUsageDescription PERMISSION_APP_TRACKING_TRANSPARENCY PermissionGroup.criticalAlerts PermissionGroupCriticalAlerts PERMISSION_CRITICAL_ALERTS - 将权限添加到您的
-
清理与重建:
-
录音权限:
<key>NSMicrophoneUsageDescription</key> <string>We need to access to the microphone to record audio file</string>
- 最小SDK版本:11.0
使用示例
更多关于Flutter社交媒体音频录制插件social_media_audio_recorder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交媒体音频录制插件social_media_audio_recorder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用social_media_audio_recorder
插件的一个基本示例。这个插件允许你在Flutter应用中录制音频,非常适合社交媒体应用。
首先,确保你已经在pubspec.yaml
文件中添加了social_media_audio_recorder
依赖:
dependencies:
flutter:
sdk: flutter
social_media_audio_recorder: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤使用social_media_audio_recorder
插件来录制音频。
- 导入插件:
在你的Dart文件中导入插件:
import 'package:social_media_audio_recorder/social_media_audio_recorder.dart';
- 初始化录音器:
在需要的地方初始化录音器,并配置相关参数。例如,在State
类中:
class _MyHomePageState extends State<MyHomePage> {
late SocialMediaAudioRecorder _recorder;
String? _recordingPath;
@override
void initState() {
super.initState();
_recorder = SocialMediaAudioRecorder(
androidRecorderConfig: AndroidAudioRecorderConfig(
audioSource: AudioSource.MIC,
outputFormat: OutputFormat.THREE_GPP,
audioEncoder: AudioEncoder.AMR_NB,
outputFilePath: '${(await getApplicationDocumentsDirectory()).path}/audio_record.3gp',
),
iosRecorderConfig: IosAudioRecorderConfig(
audioQuality: AudioQuality.Low,
),
);
}
@override
void dispose() {
_recorder.dispose();
super.dispose();
}
- 开始和停止录音:
添加按钮来开始和停止录音:
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
if (!_recorder.isRecording) {
await _recorder.startRecorder();
setState(() {});
}
},
child: Text('Start Recording'),
),
ElevatedButton(
onPressed: () async {
if (_recorder.isRecording) {
final result = await _recorder.stopRecorder();
if (result == ResultState.Success) {
_recordingPath = _recorder.audioPath;
setState(() {});
}
}
},
child: Text('Stop Recording'),
),
if (_recordingPath != null)
Text('Recording saved at: $_recordingPath'),
],
)
- 处理录音结果:
你可以根据_recordingPath
来访问录制的音频文件,或者将其上传到服务器等。
这是一个非常基本的示例,展示了如何使用social_media_audio_recorder
插件来录制音频。根据需求,你可能需要调整配置参数,或者添加更多的错误处理和用户反馈。
请注意,插件的API和配置可能会随着版本的更新而变化,因此请查阅最新的插件文档以获取最新的使用指南和API参考。