9class MeasurementManagerExample {
11 LocationManager? _locationManager;
12 MeasurementManager? _measurementManager;
13 MeasurementListener? _measurementListener;
15 MeasurementManagerExample() {
17 _setupMeasurementListener();
23 void _initializeSdk() {
27 _sdk = NavigineSdk.getInstance();
32 _sdk?.setUserHash(
"USER-HASH-HERE");
37 _sdk?.setServer(
"https://custom.navigine.com");
42 _locationManager = _sdk?.getLocationManager();
47 _measurementManager = _sdk?.getMeasurementManager(_locationManager!);
50 if (_locationManager !=
null && _measurementManager !=
null) {
51 print(
"LocationManager and MeasurementManager successfully initialized");
54 print(
"Error initializing SDK: $e");
61 void _setupMeasurementListener() {
62 _measurementListener = MeasurementListener(
64 onSensorMeasurementDetected: (Map<SensorType, SensorMeasurement> sensors) {
65 print(
"Sensor measurements detected");
66 _demonstrateSensorMeasurements(sensors);
71 onSignalMeasurementDetected: (Map<String, SignalMeasurement> signals) {
72 print(
"Signal measurements detected");
73 _demonstrateSignalMeasurements(signals);
82 void demonstrateMeasurementManagerMethods() {
83 if (_measurementManager ==
null) {
84 print(
"MeasurementManager not initialized");
90 _measurementManager!.addMeasurementListener(_measurementListener!);
91 print(
"Added measurement listener");
95 _demonstrateBeaconGenerators();
98 _demonstrateEddystoneGenerators();
101 _demonstrateWifiGenerators();
104 _demonstrateWifiRttGenerators();
107 _demonstrateLocationGenerators();
110 Future.delayed(Duration(seconds: 2), () {
113 _measurementManager!.removeMeasurementListener(_measurementListener!);
114 print(
"Removed measurement listener");
122 void _demonstrateBeaconGenerators() {
125 String beaconId = _measurementManager!.addBeaconGenerator(
126 "12345678-1234-1234-1234-123456789012",
134 print(
"Added beacon generator with ID: $beaconId");
139 _measurementManager!.removeBleGenerator(beaconId);
140 print(
"Removed BLE generator: $beaconId");
145 _measurementManager!.removeBleGenerators();
146 print(
"Removed all BLE generators");
153 void _demonstrateEddystoneGenerators() {
156 String eddystoneId = _measurementManager!.addEddystoneGenerator(
157 "12345678901234567890",
164 print(
"Added Eddystone generator with ID: $eddystoneId");
168 _measurementManager!.removeBleGenerator(eddystoneId);
169 print(
"Removed Eddystone generator: $eddystoneId");
175 void _demonstrateWifiGenerators() {
178 String wifiId = _measurementManager!.addWifiGenerator(
184 print(
"Added Wi-Fi generator with ID: $wifiId");
189 _measurementManager!.removeWifiGenerator(wifiId);
190 print(
"Removed Wi-Fi generator: $wifiId");
195 _measurementManager!.removeWifiGenerators();
196 print(
"Removed all Wi-Fi generators");
203 void _demonstrateWifiRttGenerators() {
206 String wifiRttId = _measurementManager!.addWifiRttGenerator(
216 print(
"Added Wi-Fi RTT generator with ID: $wifiRttId");
221 _measurementManager!.removeWifiRttGenerator(wifiRttId);
222 print(
"Removed Wi-Fi RTT generator: $wifiRttId");
227 _measurementManager!.removeWifiRttGenerators();
228 print(
"Removed all Wi-Fi RTT generators");
235 void _demonstrateLocationGenerators() {
238 String locationId = _measurementManager!.addLocationGenerator(
247 print(
"Added location generator with ID: $locationId");
252 _measurementManager!.removeLocationGenerator(locationId);
253 print(
"Removed location generator: $locationId");
258 _measurementManager!.removeLocationGenerators();
259 print(
"Removed all location generators");
266 void _demonstrateSensorMeasurements(Map<SensorType, SensorMeasurement> sensors) {
267 sensors.forEach((sensorType, measurement) {
270 SensorType type = measurement.type;
271 print(
"Sensor type: $type");
276 Vector3d values = measurement.values;
277 print(
"Sensor values - X: ${values.x}, Y: ${values.y}, Z: ${values.z}");
282 int time = measurement.time;
283 print(
"Measurement time: $time ms");
287 _demonstrateVector3d(values);
294 void _demonstrateSignalMeasurements(Map<String, SignalMeasurement> signals) {
295 signals.forEach((signalId, measurement) {
298 SignalType type = measurement.type;
299 print(
"Signal type: $type");
304 String
id = measurement.id;
305 print(
"Signal ID: $id");
310 double rssi = measurement.rssi;
311 print(
"Signal RSSI: $rssi dBm");
316 double distance = measurement.distance;
317 print(
"Signal distance: $distance meters");
322 int time = measurement.time;
323 print(
"Signal measurement time: $time ms");
331 void _demonstrateVector3d(Vector3d vector) {
335 print(
"Vector X: $x");
341 print(
"Vector Y: $y");
347 print(
"Vector Z: $z");
354 Future<void> runExample() async {
355 print(
"=== MeasurementManager Example ===");
357 demonstrateMeasurementManagerMethods();
360 await Future.delayed(Duration(seconds: 5));
362 print(
"=== Example completed ===");