Flutter音频录制插件audio_record的使用

在本教程中,我们将介绍如何使用Flutter音频录制插件audio_recorder来录制音频并显示录制状态。此插件允许您轻松地在Flutter应用程序中实现音频录制功能。

使用步骤

1. 添加依赖

首先,在您的pubspec.yaml文件中添加audio_recorder依赖:

dependencies:
  audio_recorder: ^0.0.1

然后运行以下命令以获取依赖项:

flutter pub get

2. 导入必要的库

在您的Dart文件中导入audio_recorder和其他必要的库:

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

3. 创建一个简单的UI

创建一个简单的用户界面,包括开始和停止录音的按钮以及显示录制状态的文本。

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

class _AudioRecorderExampleState extends State<AudioRecorderExample> {
  bool isRecording = false;
  String statusText = "未开始录音";

  void startRecording() async {
    // 开始录音
    await AudioRecorder.start();
    setState(() {
      isRecording = true;
      statusText = "正在录音";
    });
  }

  void stopRecording() async {
    // 停止录音
    final filePath = await AudioRecorder.stop();
    setState(() {
      isRecording = false;
      statusText = "录音已停止,文件路径: $filePath";
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("音频录制示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              statusText,
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                ElevatedButton(
                  onPressed: isRecording ? null : startRecording,
                  child: Text("开始录音"),
                ),
                ElevatedButton(
                  onPressed: isRecording ? stopRecording : null,
                  child: Text("停止录音"),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

4. 运行应用

现在您可以运行应用程序,并点击“开始录音”按钮来启动录音,点击“停止录音”按钮来停止录音并查看文件路径。

完整代码示例

以下是完整的代码示例:

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

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

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

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

class _AudioRecorderExampleState extends State<AudioRecorderExample> {
  bool isRecording = false;
  String statusText = "未开始录音";

  void startRecording() async {
    // 开始录音
    await AudioRecorder.start();
    setState(() {
      isRecording = true;
      statusText = "正在录音";
    });
  }

  void stopRecording() async {
    // 停止录音
    final filePath = await AudioRecorder.stop();
    setState(() {
      isRecording = false;
      statusText = "录音已停止,文件路径: $filePath";
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("音频录制示例"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              statusText,
              style: TextStyle(fontSize: 18),
            ),
            SizedBox(height: 20),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                ElevatedButton(
                  onPressed: isRecording ? null : startRecording,
                  child: Text("开始录音"),
                ),
                ElevatedButton(
                  onPressed: isRecording ? stopRecording : null,
                  child: Text("停止录音"),
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}
1 回复

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


audio_record 是一个用于在 Flutter 应用中录制音频的插件。它提供了简单的 API 来开始、停止和暂停音频录制,并且可以将录制的音频保存为文件。以下是如何使用 audio_record 插件的基本步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 audio_record 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  audio_record: ^latest_version

然后运行 flutter pub get 来安装依赖。

2. 配置权限

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

Android

android/app/src/main/AndroidManifest.xml 文件中添加以下权限:

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

iOS

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

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

3. 使用 audio_record 插件

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

import 'package:flutter/material.dart';
import 'package:audio_record/audio_record.dart';
import 'package:path_provider/path_provider.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> {
  AudioRecord _audioRecord = AudioRecord();
  bool _isRecording = false;
  String _filePath = '';

  Future<void> _startRecording() async {
    try {
      final directory = await getApplicationDocumentsDirectory();
      final filePath = '${directory.path}/recording.wav';
      await _audioRecord.start(filePath, encoder: AudioEncoder.WAV);
      setState(() {
        _isRecording = true;
        _filePath = filePath;
      });
    } catch (e) {
      print("Error starting recording: $e");
    }
  }

  Future<void> _stopRecording() async {
    try {
      await _audioRecord.stop();
      setState(() {
        _isRecording = false;
      });
      print("Recording saved to: $_filePath");
    } catch (e) {
      print("Error stopping recording: $e");
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Audio Recorder'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            _isRecording
                ? Text("Recording...")
                : Text("Press the button to start recording"),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _isRecording ? _stopRecording : _startRecording,
              child: Text(_isRecording ? 'Stop Recording' : 'Start Recording'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!