init method

Future<bool> init({
  1. required String host,
  2. required String accessKey,
  3. required String accessSecret,
  4. String? hostAuto,
  5. String? accessKeyAuto,
  6. String? accessSecretAuto,
  7. int recorderConfigRate = 8000,
  8. Duration? requestTimeout,
  9. int recorderConfigChannels = 1,
  10. bool isVolumeCallback = true,
  11. bool setLog = true,
  12. ACRCloudRecMode recMode = ACRCloudRecMode.default_mode,
})

You should initilize the AcrCloudSdk instance with this function.

The host argument's meaning depends on recMode, if recMode is ACRCloudRecMode.local it means local fingerprinting database directory else it means the host of server

LocationData. The interval and distanceFilter are controlling how

accessKey is the Access key of your ACRCloud project

accessSecret is the Access secret of your ACRCloud project

Http request timeout, default is 5000ms and can be set using requestTimeout.

This setLog argument is to toggle display of log in terminal

recMode argument is the Recognition mode

Implementation

Future<bool> init({
  required String host,
  required String accessKey,
  required String accessSecret,
  String? hostAuto,
  String? accessKeyAuto,
  String? accessSecretAuto,
  int recorderConfigRate = 8000,
  Duration? requestTimeout,
  int recorderConfigChannels = 1,
  bool isVolumeCallback = true,
  bool setLog = true,
  ACRCloudRecMode recMode = ACRCloudRecMode.default_mode,
}) async {
  try {
    var status = await Permission.microphone.status;
    if ((status.isDenied || status.isPermanentlyDenied) &&
        Platform.isAndroid) {
      // We didn't ask for permission yet.
      await [
        Permission.microphone,
        Permission.location,
        Permission.locationAlways,
        Permission.locationWhenInUse,
        Permission.phone,
        Permission.storage,
      ].request();
      return await init(
          host: host,
          accessKey: accessKey,
          accessSecret: accessSecret,
          hostAuto: hostAuto,
          accessKeyAuto: accessKeyAuto,
          accessSecretAuto: accessSecretAuto,
          recorderConfigRate: recorderConfigRate,
          recorderConfigChannels: recorderConfigChannels,
          requestTimeout: requestTimeout,
          isVolumeCallback: isVolumeCallback,
          setLog: setLog,
          recMode: recMode);
    } else {
      return await _channel.invokeMethod(
        'init',
        {
          "host": host,
          "accessKey": accessKey,
          "accessSecret": accessSecret,
          "hostAuto": hostAuto ?? host,
          "accessKeyAuto": accessKeyAuto ?? accessKey,
          "accessSecretAuto": accessSecretAuto ?? accessSecret,
          "recorderConfigRate": recorderConfigRate,
          "recorderConfigChannels": recorderConfigChannels,
          "isVolumeCallback": isVolumeCallback,
          "setLog": setLog,
          "requestTimeout": requestTimeout?.inMilliseconds,
          "recMode": recMode.index,
        },
      );
    }
  } catch (e) {
    return false;
  }
}