init method

Future init(
  1. String path, {
  2. AudioFormat? audioFormat,
  3. int sampleRate = 16000,
  4. RecordMode recordMode = RecordMode.Offline,
  5. bool request = true,
  6. bool noiseFilter = false,
  7. bool startForeground = false,
  8. 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;
}