flutter_audio_rec

Last updated:

0 purchases

flutter_audio_rec Image
flutter_audio_rec Images
Add to Cart

Description:

flutter audio rec

originally a fork of flutter_audio_recorder2 with few more features.
i made this out of flutter_audio_recorder2 because the author was inactive(he isn't merging PRs or attending to issues) and i started having alot of issues with the plugin
flutter_audio_rec #





English
Flutter Audio Rec Plugin that supports Record Pause Resume Stop and provide access to audio level metering properties average power peak power
Works for both Android and iOS

Installation #
add flutter_audio_rec to your pubspec.yaml
iOS Permission #

Add usage description to Info.plist

<key>NSMicrophoneUsageDescription</key>
<string>Can We Use Your Microphone Please</string>
copied to clipboard

Then use hasPermission api to ask user for permission when needed

Android Permission #

Add uses-permission to ./android/app/src/main/AndroidManifest.xml in xml root level like below

...
</application>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
...
</manifest>
copied to clipboard

Then use hasPermission api to ask user for permission when needed

Configuration #
iOS Deployment Target is 8.0 above
Android

AndroidX: use latest version (0.5.x)
Legacy Android: use old version (0.4.9)

Usage #
Recommended API Usage: hasPermission => init > start -> (pause <-> resume) * n -> stop, call init again before start another recording
Always check permission first(it will request permission if permission has not been set to true/false yet, otherwise it will return the result of recording permission)
bool hasPermission = await FlutterAudioRec.hasPermissions;
copied to clipboard
Initialize (run this before start, so we could check if file with given name already exists)
var recorder = FlutterAudioRec("file_path.mp4"); // .wav .aac .m4a
await recorder.initialized;
copied to clipboard
or
var recorder = FlutterAudioRec("file_path", audioFormat: AudioFormat.AAC); // or AudioFormat.WAV
await recorder.initialized;
copied to clipboard
Sample Rate
var recorder = FlutterAudioRec("file_path", audioFormat: AudioFormat.AAC, sampleRate: 22000); // sampleRate is 16000 by default
await recorder.initialized;
copied to clipboard
Audio Extension and Format Mapping



Audio Format
Audio Extension List




AAC
.m4a .aac .mp4


WAV
.wav



Start recording
await recorder.start();
var recording = await recorder.current(channel: 0);
copied to clipboard
Get recording details
var current = await recording.current(channel: 0);
// print(current.status);
copied to clipboard
You could use a timer to access details every 50ms(simply cancel the timer when recording is done)
new Timer.periodic(tick, (Timer t) async {
var current = await recording.current(channel: 0);
// print(current.status);
setState(() {
});
});
copied to clipboard
Recording



Name
Description




path
String


extension
String


duration
Duration


audioFormat
AudioFormat


metering
AudioMetering


status
RecordingStatus



Recording.metering



Name
Description




peakPower
double


averagePower
double


isMeteringEnabled
bool



Recording.status
Unset,Initialized,Recording,Paused,Stopped
Pause
await recorder.pause();
copied to clipboard
Resume
await recorder.resume();
copied to clipboard
Stop (after stop, run init again to create another recording)
var result = await recorder.stop();
File file = widget.localFileSystem.file(result.path);
copied to clipboard
Example #
Please check example app using Xcode.
Getting Started #
This project is a starting point for a Flutter
plug-in package,
a specialized package that includes platform-specific implementation code for
Android and/or iOS.
For help getting started with Flutter, view our
online documentation, which offers tutorials,
samples, guidance on mobile development, and a full API reference.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.