Loading...
Searching...
No Matches
measurement_manager_example.dart
Go to the documentation of this file.
1import 'dart:async';
2import 'dart:io';
3import 'package:navigine_sdk/navigine_sdk.dart';
4
9class MeasurementManagerExample {
10 NavigineSdk? _sdk;
11 LocationManager? _locationManager;
12 MeasurementManager? _measurementManager;
13 MeasurementListener? _measurementListener;
14
15 MeasurementManagerExample() {
16 _initializeSdk();
17 _setupMeasurementListener();
18 }
19
23 void _initializeSdk() {
24 try {
25 // [dart_NavigineSdk_getInstance]
26 // Get SDK instance
27 _sdk = NavigineSdk.getInstance();
28 // [dart_NavigineSdk_getInstance]
29
30 // [dart_NavigineSdk_setUserHash]
31 // Set user hash
32 _sdk?.setUserHash("USER-HASH-HERE");
33 // [dart_NavigineSdk_setUserHash]
34
35 // [dart_NavigineSdk_setServer]
36 // Set server URL (optional)
37 _sdk?.setServer("https://custom.navigine.com");
38 // [dart_NavigineSdk_setServer]
39
40 // [dart_NavigineSdk_getLocationManager]
41 // Get LocationManager for working with locations
42 _locationManager = _sdk?.getLocationManager();
43 // [dart_NavigineSdk_getLocationManager]
44
45 // [dart_NavigineSdk_getMeasurementManager]
46 // Get MeasurementManager for working with measurements
47 _measurementManager = _sdk?.getMeasurementManager(_locationManager!);
48 // [dart_NavigineSdk_getMeasurementManager]
49
50 if (_locationManager != null && _measurementManager != null) {
51 print("LocationManager and MeasurementManager successfully initialized");
52 }
53 } catch (e) {
54 print("Error initializing SDK: $e");
55 }
56 }
57
61 void _setupMeasurementListener() {
62 _measurementListener = MeasurementListener(
63 // [dart_MeasurementListener_onSensorMeasurementDetected]
64 onSensorMeasurementDetected: (Map<SensorType, SensorMeasurement> sensors) {
65 print("Sensor measurements detected");
66 _demonstrateSensorMeasurements(sensors);
67 },
68 // [dart_MeasurementListener_onSensorMeasurementDetected]
69
70 // [dart_MeasurementListener_onSignalMeasurementDetected]
71 onSignalMeasurementDetected: (Map<String, SignalMeasurement> signals) {
72 print("Signal measurements detected");
73 _demonstrateSignalMeasurements(signals);
74 },
75 // [dart_MeasurementListener_onSignalMeasurementDetected]
76 );
77 }
78
82 void demonstrateMeasurementManagerMethods() {
83 if (_measurementManager == null) {
84 print("MeasurementManager not initialized");
85 return;
86 }
87
88 // [dart_MeasurementManager_addMeasurementListener]
89 // Add measurement listener
90 _measurementManager!.addMeasurementListener(_measurementListener!);
91 print("Added measurement listener");
92 // [dart_MeasurementManager_addMeasurementListener]
93
94 // Demonstrate beacon generators
95 _demonstrateBeaconGenerators();
96
97 // Demonstrate Eddystone generators
98 _demonstrateEddystoneGenerators();
99
100 // Demonstrate Wi-Fi generators
101 _demonstrateWifiGenerators();
102
103 // Demonstrate Wi-Fi RTT generators
104 _demonstrateWifiRttGenerators();
105
106 // Demonstrate location generators
107 _demonstrateLocationGenerators();
108
109 // Simulate some time passing for measurements
110 Future.delayed(Duration(seconds: 2), () {
111 // [dart_MeasurementManager_removeMeasurementListener]
112 // Remove measurement listener
113 _measurementManager!.removeMeasurementListener(_measurementListener!);
114 print("Removed measurement listener");
115 // [dart_MeasurementManager_removeMeasurementListener]
116 });
117 }
118
122 void _demonstrateBeaconGenerators() {
123 // [dart_MeasurementManager_addBeaconGenerator]
124 // Add beacon generator
125 String beaconId = _measurementManager!.addBeaconGenerator(
126 "12345678-1234-1234-1234-123456789012", // UUID
127 100, // major
128 200, // minor
129 -60, // power (dBm)
130 5000, // timeout (ms)
131 -80, // rssiMin
132 -40, // rssiMax
133 );
134 print("Added beacon generator with ID: $beaconId");
135 // [dart_MeasurementManager_addBeaconGenerator]
136
137 // [dart_MeasurementManager_removeBleGenerator]
138 // Remove specific BLE generator
139 _measurementManager!.removeBleGenerator(beaconId);
140 print("Removed BLE generator: $beaconId");
141 // [dart_MeasurementManager_removeBleGenerator]
142
143 // [dart_MeasurementManager_removeBleGenerators]
144 // Remove all BLE generators
145 _measurementManager!.removeBleGenerators();
146 print("Removed all BLE generators");
147 // [dart_MeasurementManager_removeBleGenerators]
148 }
149
153 void _demonstrateEddystoneGenerators() {
154 // [dart_MeasurementManager_addEddystoneGenerator]
155 // Add Eddystone generator
156 String eddystoneId = _measurementManager!.addEddystoneGenerator(
157 "12345678901234567890", // namespaceId
158 "1234567890123456", // instanceId
159 -65, // power (dBm)
160 3000, // timeout (ms)
161 -85, // rssiMin
162 -45, // rssiMax
163 );
164 print("Added Eddystone generator with ID: $eddystoneId");
165 // [dart_MeasurementManager_addEddystoneGenerator]
166
167 // Remove Eddystone generator (uses same method as BLE)
168 _measurementManager!.removeBleGenerator(eddystoneId);
169 print("Removed Eddystone generator: $eddystoneId");
170 }
171
175 void _demonstrateWifiGenerators() {
176 // [dart_MeasurementManager_addWifiGenerator]
177 // Add Wi-Fi generator
178 String wifiId = _measurementManager!.addWifiGenerator(
179 "AA:BB:CC:DD:EE:FF", // MAC address
180 4000, // timeout (ms)
181 -90, // rssiMin
182 -50, // rssiMax
183 );
184 print("Added Wi-Fi generator with ID: $wifiId");
185 // [dart_MeasurementManager_addWifiGenerator]
186
187 // [dart_MeasurementManager_removeWifiGenerator]
188 // Remove specific Wi-Fi generator
189 _measurementManager!.removeWifiGenerator(wifiId);
190 print("Removed Wi-Fi generator: $wifiId");
191 // [dart_MeasurementManager_removeWifiGenerator]
192
193 // [dart_MeasurementManager_removeWifiGenerators]
194 // Remove all Wi-Fi generators
195 _measurementManager!.removeWifiGenerators();
196 print("Removed all Wi-Fi generators");
197 // [dart_MeasurementManager_removeWifiGenerators]
198 }
199
203 void _demonstrateWifiRttGenerators() {
204 // [dart_MeasurementManager_addWifiRttGenerator]
205 // Add Wi-Fi RTT generator
206 String wifiRttId = _measurementManager!.addWifiRttGenerator(
207 "11:22:33:44:55:66", // MAC address
208 6000, // timeout (ms)
209 1, // distMin (meters)
210 10, // distMax (meters)
211 0, // stdDevMin
212 2, // stdDevMax
213 -70, // rssiMin
214 -30, // rssiMax
215 );
216 print("Added Wi-Fi RTT generator with ID: $wifiRttId");
217 // [dart_MeasurementManager_addWifiRttGenerator]
218
219 // [dart_MeasurementManager_removeWifiRttGenerator]
220 // Remove specific Wi-Fi RTT generator
221 _measurementManager!.removeWifiRttGenerator(wifiRttId);
222 print("Removed Wi-Fi RTT generator: $wifiRttId");
223 // [dart_MeasurementManager_removeWifiRttGenerator]
224
225 // [dart_MeasurementManager_removeWifiRttGenerators]
226 // Remove all Wi-Fi RTT generators
227 _measurementManager!.removeWifiRttGenerators();
228 print("Removed all Wi-Fi RTT generators");
229 // [dart_MeasurementManager_removeWifiRttGenerators]
230 }
231
235 void _demonstrateLocationGenerators() {
236 // [dart_MeasurementManager_addLocationGenerator]
237 // Add location generator
238 String locationId = _measurementManager!.addLocationGenerator(
239 55.7558, // latMin
240 55.7559, // latMax
241 37.6176, // lonMin
242 37.6177, // lonMax
243 1.0, // accMin (meters)
244 5.0, // accMax (meters)
245 7000, // timeout (ms)
246 );
247 print("Added location generator with ID: $locationId");
248 // [dart_MeasurementManager_addLocationGenerator]
249
250 // [dart_MeasurementManager_removeLocationGenerator]
251 // Remove specific location generator
252 _measurementManager!.removeLocationGenerator(locationId);
253 print("Removed location generator: $locationId");
254 // [dart_MeasurementManager_removeLocationGenerator]
255
256 // [dart_MeasurementManager_removeLocationGenerators]
257 // Remove all location generators
258 _measurementManager!.removeLocationGenerators();
259 print("Removed all location generators");
260 // [dart_MeasurementManager_removeLocationGenerators]
261 }
262
266 void _demonstrateSensorMeasurements(Map<SensorType, SensorMeasurement> sensors) {
267 sensors.forEach((sensorType, measurement) {
268 // [dart_SensorMeasurement_getType]
269 // Get sensor type
270 SensorType type = measurement.type;
271 print("Sensor type: $type");
272 // [dart_SensorMeasurement_getType]
273
274 // [dart_SensorMeasurement_getValues]
275 // Get sensor values
276 Vector3d values = measurement.values;
277 print("Sensor values - X: ${values.x}, Y: ${values.y}, Z: ${values.z}");
278 // [dart_SensorMeasurement_getValues]
279
280 // [dart_SensorMeasurement_getTime]
281 // Get measurement timestamp
282 int time = measurement.time;
283 print("Measurement time: $time ms");
284 // [dart_SensorMeasurement_getTime]
285
286 // Demonstrate Vector3d properties
287 _demonstrateVector3d(values);
288 });
289 }
290
294 void _demonstrateSignalMeasurements(Map<String, SignalMeasurement> signals) {
295 signals.forEach((signalId, measurement) {
296 // [dart_SignalMeasurement_getType]
297 // Get signal type
298 SignalType type = measurement.type;
299 print("Signal type: $type");
300 // [dart_SignalMeasurement_getType]
301
302 // [dart_SignalMeasurement_getId]
303 // Get signal identifier
304 String id = measurement.id;
305 print("Signal ID: $id");
306 // [dart_SignalMeasurement_getId]
307
308 // [dart_SignalMeasurement_getRssi]
309 // Get RSSI value
310 double rssi = measurement.rssi;
311 print("Signal RSSI: $rssi dBm");
312 // [dart_SignalMeasurement_getRssi]
313
314 // [dart_SignalMeasurement_getDistance]
315 // Get estimated distance
316 double distance = measurement.distance;
317 print("Signal distance: $distance meters");
318 // [dart_SignalMeasurement_getDistance]
319
320 // [dart_SignalMeasurement_getTime]
321 // Get measurement timestamp
322 int time = measurement.time;
323 print("Signal measurement time: $time ms");
324 // [dart_SignalMeasurement_getTime]
325 });
326 }
327
331 void _demonstrateVector3d(Vector3d vector) {
332 // [dart_Vector3d_getX]
333 // Get X coordinate
334 double x = vector.x;
335 print("Vector X: $x");
336 // [dart_Vector3d_getX]
337
338 // [dart_Vector3d_getY]
339 // Get Y coordinate
340 double y = vector.y;
341 print("Vector Y: $y");
342 // [dart_Vector3d_getY]
343
344 // [dart_Vector3d_getZ]
345 // Get Z coordinate
346 double z = vector.z;
347 print("Vector Z: $z");
348 // [dart_Vector3d_getZ]
349 }
350
354 Future<void> runExample() async {
355 print("=== MeasurementManager Example ===");
356
357 demonstrateMeasurementManagerMethods();
358
359 // Wait a bit for measurements
360 await Future.delayed(Duration(seconds: 5));
361
362 print("=== Example completed ===");
363 }
364}
365
369Future<void> main() async {
371 await example.runExample();
372}