1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > flutter录音_Flutter 实现的仿微信语音录制功能

flutter录音_Flutter 实现的仿微信语音录制功能

时间:2020-09-29 16:28:47

相关推荐

flutter录音_Flutter 实现的仿微信语音录制功能

插件提供的功能录制语音,

播放录音,

录制声音大小的监听

提供录制时长的监听

提供类似微信的录制组件

1,引入

在pubspec.yaml 文件上引入如下配置

引入方式1(引入最新的版本)

flutter_plugin_record:

git:

url: /yxwandroid/flutter_plugin_record.git

引入方式2 (引入指定某次commit)

flutter_plugin_record:

git:

url: /yxwandroid/flutter_plugin_record.git

ref: 29c02b15835907879451ad9f8f88c357149c6085

引入方式3 (引入Flutter仓库的library)

dependencies:

flutter_plugin_record: ^0.0.9

使用

1, 初始化录制

可以在页面初始化的时候进行初始化比如: 在initState方法中进行初始化

//实例化对象

FlutterPluginRecord recordPlugin = new FlutterPluginRecord();

// 初始化

recordPlugin.init()

2, 开始录制

recordPlugin.start()

3, 停止录制

recordPlugin.stop()

4, 播放

recordPlugin.play()

3, 释放资源

可以在页面退出的时候进行资源释放 比如在 dispose方法中调用如下代码

recordPlugin.dispose()

4,回调监听

1,初始化回调监听

///初始化方法的监听

recordPlugin.responseFromInit.listen((data) {

if (data) {

print("初始化成功");

} else {

print("初始化失败");

}

});

2,开始录制停止录制监听

/// 开始录制或结束录制的监听

recordPlugin.response.listen((data) {

if (data.msg == "onStop") {

///结束录制时会返回录制文件的地址方便上传服务器

print("onStop " + data.path);

} else if (data.msg == "onStart") {

print("onStart --");

}

});

3,录制声音大小回调监听

///录制过程监听录制的声音的大小 方便做语音动画显示图片的样式

recordPlugin.responseFromAmplitude.listen((data) {

var voiceData = double.parse(data.msg);

var tempVoice = "";

if (voiceData > 0 && voiceData < 0.1) {

tempVoice = "images/voice_volume_2.png";

} else if (voiceData > 0.2 && voiceData < 0.3) {

tempVoice = "images/voice_volume_3.png";

} else if (voiceData > 0.3 && voiceData < 0.4) {

tempVoice = "images/voice_volume_4.png";

} else if (voiceData > 0.4 && voiceData < 0.5) {

tempVoice = "images/voice_volume_5.png";

} else if (voiceData > 0.5 && voiceData < 0.6) {

tempVoice = "images/voice_volume_6.png";

} else if (voiceData > 0.6 && voiceData < 0.7) {

tempVoice = "images/voice_volume_7.png";

} else if (voiceData > 0.7 && voiceData < 1) {

tempVoice = "images/voice_volume_7.png";

}

setState(() {

voiceIco = tempVoice;

if(overlayEntry!=null){

overlayEntry.markNeedsBuild();

}

});

print("振幅大小 " + voiceData.toString() + " " + voiceIco);

});

2,录制组件的使用

组件使用效果

1,在使用的页面进行导入package

import 'package:flutter_plugin_record/index.dart';

2,在使用的地方引入VoiceWidget组件

VoiceWidget(),

VoiceWidget({startRecord: Function, stopRecord: Function}) {

startRecord 开始录制的回调

stopRecord 停止录制的回调 返回的path是录制成功之后文件的保存地址

IOS配置注意事项

ios集成的的时候需要在info.list添加

NSMicrophoneUsageDescription

打开话筒

更新内容实现录制时长的监听

TODO实现发送语音时间按下抬起时间很短提示

关注公众号获取更多内容

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。