Flutter社交媒体音频录制插件social_media_audio_recorder的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter社交媒体音频录制插件social_media_audio_recorder的使用

Android

  1. 权限处理:

    • 由于版本4.4.0开始,此插件已使用Flutter 1.12 Android插件API实现。因此,应用程序开发者也需要迁移到支持新Android基础设施的环境。可以通过遵循升级预1.12 Android项目迁移指南来完成.未进行迁移可能会导致意外行为.最常见的已知错误是permission_handler在调用.request()方法后没有返回.
  2. AndroidX

    • 自从版本3.1.0起,permission_handler插件切换到了AndroidX版本的Android Support Libraries.这意味着您的Android项目也需要升级以支持AndroidX.详细的说明可以在这里找到.

    TL;DR版本如下:

    1. gradle.properties文件中添加以下内容:
      android.useAndroidX=true
      android.enableJetifier=true
      
    2. 确保在android/app/build.gradle文件中将compileSdkVersion设置为33:
      android {
        compileSdkVersion 33
        ...
      }
      
    3. 确保替换所有android.依赖项为其对应的AndroidX版本(完整的列表可以在这里找到).

    添加权限到您的AndroidManifest.xml文件。 有debug, mainprofile版本,根据您如何启动应用选择这些版本.通常,仅添加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. 振动权限:

    • 确保在您的Android Manifest文件中添加以下权限:
    <uses-permission android:name="android.permission.VIBRATE"/>
    

iOS

  1. 权限处理:

    重要提示:当您想要提交应用时,必须包括所有权限选项。这是因为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
  2. 清理与重建:

  3. 录音权限:

    <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

1 回复

更多关于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插件来录制音频。

  1. 导入插件

在你的Dart文件中导入插件:

import 'package:social_media_audio_recorder/social_media_audio_recorder.dart';
  1. 初始化录音器

在需要的地方初始化录音器,并配置相关参数。例如,在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();
  }
  1. 开始和停止录音

添加按钮来开始和停止录音:

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'),
  ],
)
  1. 处理录音结果

你可以根据_recordingPath来访问录制的音频文件,或者将其上传到服务器等。

这是一个非常基本的示例,展示了如何使用social_media_audio_recorder插件来录制音频。根据需求,你可能需要调整配置参数,或者添加更多的错误处理和用户反馈。

请注意,插件的API和配置可能会随着版本的更新而变化,因此请查阅最新的插件文档以获取最新的使用指南和API参考。

回到顶部