Loading...
Searching...
No Matches
MeasurementManagerExample.java
Go to the documentation of this file.
1package com.navigine.examples;
2
3import java.util.Map;
4
10 private NavigineSdk sdk;
11 private LocationManager locationManager;
12 private MeasurementManager measurementManager;
13 private MeasurementListener measurementListener;
14
16 initializeSdk();
17 setupMeasurementListener();
18 }
19
23 private void initializeSdk() {
24 try {
25 // [java_NavigineSdk_getInstance]
26 // Get SDK instance
27 sdk = NavigineSdk.getInstance();
28 // [java_NavigineSdk_getInstance]
29
30 // [java_NavigineSdk_setUserHash]
31 // Set user hash
32 sdk.setUserHash("USER-HASH-HERE");
33 // [java_NavigineSdk_setUserHash]
34
35 // [java_NavigineSdk_setServer]
36 // Set server URL (optional)
37 sdk.setServer("https://custom.navigine.com");
38 // [java_NavigineSdk_setServer]
39
40 // [java_NavigineSdk_getLocationManager]
41 // Get LocationManager for working with locations
42 locationManager = sdk.getLocationManager();
43 // [java_NavigineSdk_getLocationManager]
44
45 // [java_NavigineSdk_getMeasurementManager]
46 // Get MeasurementManager for working with measurements
47 measurementManager = sdk.getMeasurementManager(locationManager);
48 // [java_NavigineSdk_getMeasurementManager]
49
50 if (locationManager != null && measurementManager != null) {
51 System.out.println("LocationManager and MeasurementManager successfully initialized");
52 }
53 } catch (Exception e) {
54 System.err.println("Error initializing SDK: " + e.getMessage());
55 }
56 }
57
61 private void setupMeasurementListener() {
62 measurementListener = new MeasurementListener() {
63 @Override
64 // [java_MeasurementListener_onSensorMeasurementDetected]
65 public void onSensorMeasurementDetected(Map<SensorType, SensorMeasurement> sensors) {
66 System.out.println("Sensor measurements detected");
68 }
69 // [java_MeasurementListener_onSensorMeasurementDetected]
70
71 @Override
72 // [java_MeasurementListener_onSignalMeasurementDetected]
73 public void onSignalMeasurementDetected(Map<String, SignalMeasurement> signals) {
74 System.out.println("Signal measurements detected");
76 }
77 // [java_MeasurementListener_onSignalMeasurementDetected]
78 };
79 }
80
85 if (measurementManager == null) {
86 System.err.println("MeasurementManager not initialized");
87 return;
88 }
89
90 // [java_MeasurementManager_addMeasurementListener]
91 // Add measurement listener
92 measurementManager.addMeasurementListener(measurementListener);
93 System.out.println("Added measurement listener");
94 // [java_MeasurementManager_addMeasurementListener]
95
96 // Demonstrate beacon generators
97 demonstrateBeaconGenerators();
98
99 // Demonstrate Eddystone generators
100 demonstrateEddystoneGenerators();
101
102 // Demonstrate Wi-Fi generators
103 demonstrateWifiGenerators();
104
105 // Demonstrate Wi-Fi RTT generators
106 demonstrateWifiRttGenerators();
107
108 // Demonstrate location generators
109 demonstrateLocationGenerators();
110
111 // Simulate some time passing for measurements
112 new Thread(() -> {
113 try {
114 Thread.sleep(2000);
115 } catch (InterruptedException e) {
116 Thread.currentThread().interrupt();
117 }
118
119 // [java_MeasurementManager_removeMeasurementListener]
120 // Remove measurement listener
121 measurementManager.removeMeasurementListener(measurementListener);
122 System.out.println("Removed measurement listener");
123 // [java_MeasurementManager_removeMeasurementListener]
124 }).start();
125 }
126
130 private void demonstrateBeaconGenerators() {
131 // [java_MeasurementManager_addBeaconGenerator]
132 // Add beacon generator
133 String beaconId = measurementManager.addBeaconGenerator(
134 "12345678-1234-1234-1234-123456789012", // UUID
135 100, // major
136 200, // minor
137 -60, // power (dBm)
138 5000, // timeout (ms)
139 -80, // rssiMin
140 -40 // rssiMax
141 );
142 System.out.println("Added beacon generator with ID: " + beaconId);
143 // [java_MeasurementManager_addBeaconGenerator]
144
145 // [java_MeasurementManager_removeBleGenerator]
146 // Remove specific BLE generator
147 measurementManager.removeBleGenerator(beaconId);
148 System.out.println("Removed BLE generator: " + beaconId);
149 // [java_MeasurementManager_removeBleGenerator]
150
151 // [java_MeasurementManager_removeBleGenerators]
152 // Remove all BLE generators
153 measurementManager.removeBleGenerators();
154 System.out.println("Removed all BLE generators");
155 // [java_MeasurementManager_removeBleGenerators]
156 }
157
161 private void demonstrateEddystoneGenerators() {
162 // [java_MeasurementManager_addEddystoneGenerator]
163 // Add Eddystone generator
164 String eddystoneId = measurementManager.addEddystoneGenerator(
165 "12345678901234567890", // namespaceId
166 "1234567890123456", // instanceId
167 -65, // power (dBm)
168 3000, // timeout (ms)
169 -85, // rssiMin
170 -45 // rssiMax
171 );
172 System.out.println("Added Eddystone generator with ID: " + eddystoneId);
173 // [java_MeasurementManager_addEddystoneGenerator]
174
175 // Remove Eddystone generator (uses same method as BLE)
176 measurementManager.removeBleGenerator(eddystoneId);
177 System.out.println("Removed Eddystone generator: " + eddystoneId);
178 }
179
183 private void demonstrateWifiGenerators() {
184 // [java_MeasurementManager_addWifiGenerator]
185 // Add Wi-Fi generator
186 String wifiId = measurementManager.addWifiGenerator(
187 "AA:BB:CC:DD:EE:FF", // MAC address
188 4000, // timeout (ms)
189 -90, // rssiMin
190 -50 // rssiMax
191 );
192 System.out.println("Added Wi-Fi generator with ID: " + wifiId);
193 // [java_MeasurementManager_addWifiGenerator]
194
195 // [java_MeasurementManager_removeWifiGenerator]
196 // Remove specific Wi-Fi generator
197 measurementManager.removeWifiGenerator(wifiId);
198 System.out.println("Removed Wi-Fi generator: " + wifiId);
199 // [java_MeasurementManager_removeWifiGenerator]
200
201 // [java_MeasurementManager_removeWifiGenerators]
202 // Remove all Wi-Fi generators
203 measurementManager.removeWifiGenerators();
204 System.out.println("Removed all Wi-Fi generators");
205 // [java_MeasurementManager_removeWifiGenerators]
206 }
207
211 private void demonstrateWifiRttGenerators() {
212 // [java_MeasurementManager_addWifiRttGenerator]
213 // Add Wi-Fi RTT generator
214 String wifiRttId = measurementManager.addWifiRttGenerator(
215 "11:22:33:44:55:66", // MAC address
216 6000, // timeout (ms)
217 1, // distMin (meters)
218 10, // distMax (meters)
219 0, // stdDevMin
220 2, // stdDevMax
221 -70, // rssiMin
222 -30 // rssiMax
223 );
224 System.out.println("Added Wi-Fi RTT generator with ID: " + wifiRttId);
225 // [java_MeasurementManager_addWifiRttGenerator]
226
227 // [java_MeasurementManager_removeWifiRttGenerator]
228 // Remove specific Wi-Fi RTT generator
229 measurementManager.removeWifiRttGenerator(wifiRttId);
230 System.out.println("Removed Wi-Fi RTT generator: " + wifiRttId);
231 // [java_MeasurementManager_removeWifiRttGenerator]
232
233 // [java_MeasurementManager_removeWifiRttGenerators]
234 // Remove all Wi-Fi RTT generators
235 measurementManager.removeWifiRttGenerators();
236 System.out.println("Removed all Wi-Fi RTT generators");
237 // [java_MeasurementManager_removeWifiRttGenerators]
238 }
239
243 private void demonstrateLocationGenerators() {
244 // [java_MeasurementManager_addLocationGenerator]
245 // Add location generator
246 String locationId = measurementManager.addLocationGenerator(
247 55.7558, // latMin
248 55.7559, // latMax
249 37.6176, // lonMin
250 37.6177, // lonMax
251 1.0, // accMin (meters)
252 5.0, // accMax (meters)
253 7000 // timeout (ms)
254 );
255 System.out.println("Added location generator with ID: " + locationId);
256 // [java_MeasurementManager_addLocationGenerator]
257
258 // [java_MeasurementManager_removeLocationGenerator]
259 // Remove specific location generator
260 measurementManager.removeLocationGenerator(locationId);
261 System.out.println("Removed location generator: " + locationId);
262 // [java_MeasurementManager_removeLocationGenerator]
263
264 // [java_MeasurementManager_removeLocationGenerators]
265 // Remove all location generators
266 measurementManager.removeLocationGenerators();
267 System.out.println("Removed all location generators");
268 // [java_MeasurementManager_removeLocationGenerators]
269 }
270
274 public void demonstrateSensorMeasurements(Map<SensorType, SensorMeasurement> sensors) {
275 sensors.forEach((sensorType, measurement) -> {
276 // [java_SensorMeasurement_getType]
277 // Get sensor type
278 SensorType type = measurement.getType();
279 System.out.println("Sensor type: " + type);
280 // [java_SensorMeasurement_getType]
281
282 // [java_SensorMeasurement_getValues]
283 // Get sensor values
284 Vector3d values = measurement.getValues();
285 System.out.println("Sensor values - X: " + values.getX() + ", Y: " + values.getY() + ", Z: " + values.getZ());
286 // [java_SensorMeasurement_getValues]
287
288 // [java_SensorMeasurement_getTime]
289 // Get measurement timestamp
290 long time = measurement.getTime();
291 System.out.println("Measurement time: " + time + " ms");
292 // [java_SensorMeasurement_getTime]
293
294 // Demonstrate Vector3d properties
295 demonstrateVector3d(values);
296 });
297 }
298
302 public void demonstrateSignalMeasurements(Map<String, SignalMeasurement> signals) {
303 signals.forEach((signalId, measurement) -> {
304 // [java_SignalMeasurement_getType]
305 // Get signal type
306 SignalType type = measurement.getType();
307 System.out.println("Signal type: " + type);
308 // [java_SignalMeasurement_getType]
309
310 // [java_SignalMeasurement_getId]
311 // Get signal identifier
312 String id = measurement.getId();
313 System.out.println("Signal ID: " + id);
314 // [java_SignalMeasurement_getId]
315
316 // [java_SignalMeasurement_getRssi]
317 // Get RSSI value
318 double rssi = measurement.getRssi();
319 System.out.println("Signal RSSI: " + rssi + " dBm");
320 // [java_SignalMeasurement_getRssi]
321
322 // [java_SignalMeasurement_getDistance]
323 // Get estimated distance
324 double distance = measurement.getDistance();
325 System.out.println("Signal distance: " + distance + " meters");
326 // [java_SignalMeasurement_getDistance]
327
328 // [java_SignalMeasurement_getTime]
329 // Get measurement timestamp
330 long time = measurement.getTime();
331 System.out.println("Signal measurement time: " + time + " ms");
332 // [java_SignalMeasurement_getTime]
333 });
334 }
335
339 private void demonstrateVector3d(Vector3d vector) {
340 // [java_Vector3d_getX]
341 // Get X coordinate
342 double x = vector.getX();
343 System.out.println("Vector X: " + x);
344 // [java_Vector3d_getX]
345
346 // [java_Vector3d_getY]
347 // Get Y coordinate
348 double y = vector.getY();
349 System.out.println("Vector Y: " + y);
350 // [java_Vector3d_getY]
351
352 // [java_Vector3d_getZ]
353 // Get Z coordinate
354 double z = vector.getZ();
355 System.out.println("Vector Z: " + z);
356 // [java_Vector3d_getZ]
357 }
358
362 public void runExample() {
363 System.out.println("=== MeasurementManager Example ===");
364
366
367 // Wait a bit for measurements
368 try {
369 Thread.sleep(5000);
370 } catch (InterruptedException e) {
371 Thread.currentThread().interrupt();
372 }
373
374 System.out.println("=== Example completed ===");
375 }
376
380 public static void main(String[] args) {
382 example.runExample();
383 }
384}