flutter_sound
官方介绍:这个插件为android和ios平台提供了简单的记录器和播放器功能。这只支持每个平台的默认文件扩展名。这个插件处理来自远程url的文件。这个插件可以处理本地播放流(通过桥接来同步准确的时间)。
插件网址:https://pub.dev/packages/flutter_sound
安装
在pubspec.yaml
添加依赖
dependencies:
...
flutter_sound: ^1.1.5
接着在控制台运行flutter packages get
获取依赖,最重要一点需要在AndroidManifest.xml
文件中添加,权限请求
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
代码(copy 官方)
期间出现的插件,请自行安装,方法同上
import 'package:flutter/material.dart';
import 'package:intl/intl.dart' show DateFormat;
import 'package:intl/date_symbol_data_local.dart';
import 'dart:io';
import 'dart:async';
import 'package:flutter_sound/flutter_sound.dart';
import 'package:flutter_sound/android_encoder.dart';
import 'dart:convert';
class RecorderPage extends StatelessWidget {
const RecorderPage({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("音频录制页面"),
),
body: RecorderContent(),
);
}
}
class RecorderContent extends StatefulWidget {
RecorderContent({Key key}) : super(key: key);
_RecorderContentState createState() => _RecorderContentState();
}
class _RecorderContentState extends State<RecorderContent> {
bool _isRecording = false;
bool _isPlaying = false;
StreamSubscription _recorderSubscription;
StreamSubscription _dbPeakSubscription;
StreamSubscription _playerSubscription;
FlutterSound flutterSound;
String _recorderTxt = '00:00:00';
String _playerTxt = '00:00:00';
double _dbLevel;
double slider_current_position = 0.0;
double max_duration = 1.0;
@override
void initState() {
super.initState();
flutterSound = new FlutterSound();