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);
}