官方介紹
??這個(gè)插件為android和ios平臺提供了簡單的記錄器和播放器功能贞盯。這僅支持每個(gè)平臺的默認(rèn)文件擴(kuò)展名舔琅。該插件可以處理來自遠(yuǎn)程URL的文件绩卤,也可以處理本地播放流(通過橋接同步準(zhǔn)確時(shí)間)椒丧。
需要權(quán)限
iOS:需要在info.plist
文件添加一下權(quán)限
<key>NSMicrophoneUsageDescription</key>
<string>This sample uses the microphone to record your speech and convert it to text.</string>
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
Android:需要AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
官方的功能方法
用法
生成對象
FlutterSound flutterSound = new FlutterSound();
一、錄音功能
1.啟動錄音
//file是文件名,比如 file = Platform.isIOS ? 'ios.m4a' : 'android.mp4'
Future<String> result = await flutterSound.startRecorder(file);
返回錄音音頻文件的uri路徑字符串成号坡。
2.停止錄音
Future<String> result = await flutterSound.stopRecorder();
result.then(value) {
print('stopRecorder: $value');
if (_recorderSubscription != null) {
_recorderSubscription.cancel();
_recorderSubscription = null;
}
}
3.通過訂閱流來監(jiān)聽錄音狀態(tài)
StreamSubscription _recorderSubscription = = flutterSound.onRecorderStateChanged.listen((e) {
// RecordStatus
DateTime date = new DateTime.fromMillisecondsSinceEpoch(
e.currentPosition.toInt(),
isUtc: true);
print("got update -> ${e.currentPosition}");
String txt = DateFormat('mm:ss:SS', 'en_GB').format(date);
this.setState(() {
this._recorderTxt = txt.substring(0, 5);
});
});
_recorderSubscription
可以控制錄音暫停和回復(fù)錄音
注意6认酢<テ辍6稀裆站!
_recorderSubscription
這個(gè)監(jiān)聽的暫停和恢復(fù)錄音有一個(gè)bug溯职,就是暫停錄音的時(shí)候烂瘫,錄音的時(shí)間會不準(zhǔn)確媒熊,錄音時(shí)它會一直走,就是說當(dāng)我恢復(fù)錄音的時(shí)候坟比,錄音的時(shí)間加上我暫停時(shí)的時(shí)間芦鳍,就是說我暫停的時(shí)候已經(jīng)記錄了00:10,當(dāng)我過了10秒之后恢復(fù)錄音葛账,給我返回的記錄時(shí)間是00:20柠衅,但是我期待的是返回00:11。這個(gè)bug我試了很多遍籍琳,最后也沒辦法解決菲宴,這也導(dǎo)致我了我放棄錄音功能來使用它,而改用了flutter_audio_recorder.
PS:希望大神來解決這個(gè)問題趋急。
二喝峦、語音播放
1.開始播放
// uri 可以是本地的音頻,也可以是網(wǎng)絡(luò)上的音頻呜达。注意谣蠢,如果網(wǎng)絡(luò)不好的話,需要等待...
Future<String> result = await flutterSound.startPlayer(uri);
2.停止播放
Future<String> result = await flutterSound.stopPlayer();
3.暫停
Future<String> result = await flutterSound.pausePlayer();
4.恢復(fù)播放
Future<String> result = await flutterSound.resumePlayer();
5.拖動進(jìn)度
String Future<result> = await flutterSound.seekToPlayer(miliSecs);
音頻播放基本上是正常的闻丑,可以播放本地的音頻,也可以是網(wǎng)絡(luò)上的音頻勋颖,親測都可以用嗦嗡。
??