Flutter音频录制插件simple_audio_recorder的使用

Flutter音频录制插件simple_audio_recorder的使用

Simple Audio Recorder 是一个轻量级且用户友好的包,它提供了一个用于录制音频的界面,并返回录制音频的文件路径。它利用了 record、sound_waveform 和 wakelock_plus 库的强大功能,以确保无缝高效的录音体验。

安装

在你的 pubspec.yaml 文件中添加以下依赖项:

dependencies:
  simple_audio_recorder: latest_version

使用

基本示例

以下是如何使用 SimpleAudioRecorder 的示例:

import 'package:flutter/material.dart';
import 'package:simple_audio_recorder/simple_audio_recorder.dart';

void main() => runApp(const App());

class App extends StatelessWidget {
  const App({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      debugShowCheckedModeBanner: false,
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  [@override](/user/override)
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  String? _audioPath;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Simple Audio Recorder')),
      body: Center(
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ElevatedButton(
              onPressed: () async {
                // 打开音频录制器并配置录音参数
                final audioPath = await SimpleAudioRecorder.open(
                  context,
                  recordConfig: const RecordConfig(
                    encoder: AudioEncoder.opus,
                  ),
                );
                if (audioPath != null) {
                  // 更新状态以显示录制的音频路径
                  setState(() {
                    _audioPath = audioPath;
                  });
                }
              },
              child: const Text('打开音频录制器'),
            ),
            // 如果有音频路径,则显示音频播放器
            if (_audioPath != null) ...[
              const SizedBox(
                height: 24,
              ),
              AudioPlayerWidget(
                key: UniqueKey(),
                audioPath: _audioPath!,
              ),
            ],
          ],
        ),
      ),
    );
  }
}

更多关于Flutter音频录制插件simple_audio_recorder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter音频录制插件simple_audio_recorder的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


simple_audio_recorder 是一个用于在 Flutter 应用中录制音频的插件。它的使用相对简单,适合那些需要快速集成音频录制功能的开发者。下面是如何使用 simple_audio_recorder 插件的详细步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 simple_audio_recorder 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  simple_audio_recorder: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 配置权限

在 Android 和 iOS 上,你需要配置相应的权限来允许应用录制音频。

Android

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

iOS

Info.plist 文件中添加以下权限:

<key>NSMicrophoneUsageDescription</key>
<string>We need access to the microphone to record audio.</string>

3. 使用 simple_audio_recorder 插件

下面是一个简单的示例,展示如何使用 simple_audio_recorder 插件来录制音频。

import 'package:flutter/material.dart';
import 'package:simple_audio_recorder/simple_audio_recorder.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AudioRecorderScreen(),
    );
  }
}

class AudioRecorderScreen extends StatefulWidget {
  [@override](/user/override)
  _AudioRecorderScreenState createState() => _AudioRecorderScreenState();
}

class _AudioRecorderScreenState extends State<AudioRecorderScreen> {
  bool _isRecording = false;
  String _filePath = '';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Simple Audio Recorder'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(_isRecording ? 'Recording...' : 'Not Recording'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _isRecording ? _stopRecording : _startRecording,
              child: Text(_isRecording ? 'Stop Recording' : 'Start Recording'),
            ),
            SizedBox(height: 20),
            if (_filePath.isNotEmpty)
              Text('Audio saved to: $_filePath'),
          ],
        ),
      ),
    );
  }

  void _startRecording() async {
    bool hasPermission = await SimpleAudioRecorder.hasPermissions;
    if (!hasPermission) {
      // 请求权限
      await SimpleAudioRecorder.requestPermissions;
    }

    setState(() {
      _isRecording = true;
    });

    // 开始录制
    _filePath = await SimpleAudioRecorder.startRecording();
  }

  void _stopRecording() async {
    // 停止录制
    _filePath = await SimpleAudioRecorder.stopRecording();

    setState(() {
      _isRecording = false;
    });
  }
}
回到顶部