init method
Future
init(
- String path, {
- AudioFormat? audioFormat,
- int sampleRate = 16000,
- RecordMode recordMode = RecordMode.Offline,
- bool request = true,
- bool noiseFilter = false,
- bool startForeground = false,
- bool isWriteFile = false,
Initialized recorder instance
Implementation
Future init(String path,
{AudioFormat? audioFormat, int sampleRate = 16000, RecordMode recordMode = RecordMode.Offline,bool request = true,bool noiseFilter = false, bool startForeground = false,bool isWriteFile = false}) async {
this._isRequest = request;
this._isNoiseFilter = noiseFilter;
this.recordMode = recordMode;
if (isOfflineMode) {
_offlineController = VaisOfflineController();
} else {
_streamingController = VaisStreamingController(_token,grpcAddress,port);
_streamingController!.initialize();
}
String extension;
String extensionInPath;
if (path != null) {
// Extension(.xyz) of Path
extensionInPath = p.extension(path);
// Use AudioFormat
if (audioFormat != null) {
// .m4a != .m4a
if (_stringToAudioFormat(extensionInPath) != audioFormat) {
// use AudioOutputFormat
extension = _audioFormatToString(audioFormat);
path = p.withoutExtension(path) + extension;
} else {
extension = p.extension(path);
}
} else {
// Else, Use Extension that inferred from Path
// if extension in path is valid
if (_isValidAudioFormat(extensionInPath)) {
extension = extensionInPath;
} else {
extension = DEFAULT_EXTENSION; // default value
path += extension;
}
}
File file = fs.file(path);
if (await file.exists()) {
throw new Exception("A file already exists at the path :" + path);
} else if (!await file.parent.exists()) {
throw new Exception("The specified parent directory does not exist");
}
}
else {
extension = DEFAULT_EXTENSION; // default value
}
_path = path;
_extension = extension;
_sampleRate = sampleRate;
_startForeground = startForeground;
_isWriteFile = isWriteFile;
late Map<String, Object> response;
var result = await _channel.invokeMethod('init',
{"path": _path, "extension": _extension, "sampleRate": _sampleRate,"realtime": this.recordMode == RecordMode.Streaming,"startForeground" : _startForeground,"isWriteFile" : _isWriteFile});
if (result != false) {
response = Map.from(result);
}
_recording = new Recording()
..status = _stringToRecordingStatus(response['status'] as String?)
..metering = new AudioMetering(
averagePower: -120, peakPower: -120, isMeteringEnabled: true);
Wakelock.enable();
return;
}