addInstance method
Adds a new KeyWordFlutterPC instance from config
, sets up the
DetectionCallback, and starts keyword detection.
If an instance with config.id
already exists, it simply starts detection
on that existing instance instead of creating a new one.
Implementation
Future<void> addInstance(
InstanceConfig config,
DetectionCallback callback,
) async {
final existingInstance = _instances[config.id];
if (existingInstance != null) {
// If instance exists, just start detection on it.
await existingInstance.startKeywordDetection(config.id, config.threshold);
return;
}
// Create a new KeyWordFlutterPC instance.
final instance = createKeyWordFlutterPCInstance(
config.id,
isSticky: config.sticky,
);
await instance.createInstance(
config.modelName,
config.threshold,
config.bufferCnt,
);
await instance.setKeywordDetectionLicense(gLicenseKey);
_instances[config.id] = instance;
// Listen to detection events.
final stream = instance.onKeywordDetectionEvent();
final listener = stream.listen(callback);
instance.listeners.add(listener);
// Start detection on the new instance.
await instance.startKeywordDetection(config.id, config.threshold);
}