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
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 (measurementManager != null) {
51 // [java_MeasurementManager_setPublishIntervalMs]
52 // Optional: interval between measurement batches sent to listeners (ms)
53 measurementManager.setPublishIntervalMs(1000);
54 // [java_MeasurementManager_setPublishIntervalMs]
55 }
56
57 if (locationManager != null && measurementManager != null) {
58 System.out.println("LocationManager and MeasurementManager successfully initialized");
59 }
60 } catch (Exception e) {
61 System.err.println("Error initializing SDK: " + e.getMessage());
62 }
63 }
64
68 private void setupMeasurementListener() {
69 measurementListener = new MeasurementListener() {
70 @Override
71 // [java_MeasurementListener_onSensorMeasurementDetected]
72 public void onSensorMeasurementDetected(Map<SensorType, SensorMeasurement> sensors) {
73 System.out.println("Sensor measurements detected");
75 }
76 // [java_MeasurementListener_onSensorMeasurementDetected]
77
78 @Override
79 // [java_MeasurementListener_onSignalMeasurementDetected]
80 public void onSignalMeasurementDetected(Map<String, SignalMeasurement> signals) {
81 System.out.println("Signal measurements detected");
83 }
84 // [java_MeasurementListener_onSignalMeasurementDetected]
85 };
86 }
87
92 if (measurementManager == null) {
93 System.err.println("MeasurementManager not initialized");
94 return;
95 }
96
97 // [java_MeasurementManager_addMeasurementListener]
98 // Add measurement listener
99 measurementManager.addMeasurementListener(measurementListener);
100 System.out.println("Added measurement listener");
101 // [java_MeasurementManager_addMeasurementListener]
102
103 // Demonstrate beacon generators
104 demonstrateBeaconGenerators();
105
106 // Demonstrate Eddystone generators
107 demonstrateEddystoneGenerators();
108
109 // Demonstrate Wi-Fi generators
110 demonstrateWifiGenerators();
111
112 // Demonstrate Wi-Fi RTT generators
113 demonstrateWifiRttGenerators();
114
115 // Demonstrate location generators
116 demonstrateLocationGenerators();
117
118 // Simulate some time passing for measurements
119 new Thread(() -> {
120 try {
121 Thread.sleep(2000);
122 } catch (InterruptedException e) {
123 Thread.currentThread().interrupt();
124 }
125
126 // [java_MeasurementManager_removeMeasurementListener]
127 // Remove measurement listener
128 measurementManager.removeMeasurementListener(measurementListener);
129 System.out.println("Removed measurement listener");
130 // [java_MeasurementManager_removeMeasurementListener]
131 }).start();
132 }
133
137 private void demonstrateBeaconGenerators() {
138 // [java_MeasurementManager_addBeaconGenerator]
139 // Add beacon generator
140 String beaconId = measurementManager.addBeaconGenerator(
141 "12345678-1234-1234-1234-123456789012", // UUID
142 100, // major
143 200, // minor
144 -60, // power (dBm)
145 5000, // timeout (ms)
146 -80, // rssiMin
147 -40 // rssiMax
148 );
149 System.out.println("Added beacon generator with ID: " + beaconId);
150 // [java_MeasurementManager_addBeaconGenerator]
151
152 // [java_MeasurementManager_removeBleGenerator]
153 // Remove specific BLE generator
154 measurementManager.removeBleGenerator(beaconId);
155 System.out.println("Removed BLE generator: " + beaconId);
156 // [java_MeasurementManager_removeBleGenerator]
157
158 // [java_MeasurementManager_removeBleGenerators]
159 // Remove all BLE generators
160 measurementManager.removeBleGenerators();
161 System.out.println("Removed all BLE generators");
162 // [java_MeasurementManager_removeBleGenerators]
163 }
164
168 private void demonstrateEddystoneGenerators() {
169 // [java_MeasurementManager_addEddystoneGenerator]
170 // Add Eddystone generator
171 String eddystoneId = measurementManager.addEddystoneGenerator(
172 "12345678901234567890", // namespaceId
173 "1234567890123456", // instanceId
174 -65, // power (dBm)
175 3000, // timeout (ms)
176 -85, // rssiMin
177 -45 // rssiMax
178 );
179 System.out.println("Added Eddystone generator with ID: " + eddystoneId);
180 // [java_MeasurementManager_addEddystoneGenerator]
181
182 // Remove Eddystone generator (uses same method as BLE)
183 measurementManager.removeBleGenerator(eddystoneId);
184 System.out.println("Removed Eddystone generator: " + eddystoneId);
185 }
186
190 private void demonstrateWifiGenerators() {
191 // [java_MeasurementManager_addWifiGenerator]
192 // Add Wi-Fi generator
193 String wifiId = measurementManager.addWifiGenerator(
194 "AA:BB:CC:DD:EE:FF", // MAC address
195 4000, // timeout (ms)
196 -90, // rssiMin
197 -50 // rssiMax
198 );
199 System.out.println("Added Wi-Fi generator with ID: " + wifiId);
200 // [java_MeasurementManager_addWifiGenerator]
201
202 // [java_MeasurementManager_removeWifiGenerator]
203 // Remove specific Wi-Fi generator
204 measurementManager.removeWifiGenerator(wifiId);
205 System.out.println("Removed Wi-Fi generator: " + wifiId);
206 // [java_MeasurementManager_removeWifiGenerator]
207
208 // [java_MeasurementManager_removeWifiGenerators]
209 // Remove all Wi-Fi generators
210 measurementManager.removeWifiGenerators();
211 System.out.println("Removed all Wi-Fi generators");
212 // [java_MeasurementManager_removeWifiGenerators]
213 }
214
218 private void demonstrateWifiRttGenerators() {
219 // [java_MeasurementManager_addWifiRttGenerator]
220 // Add Wi-Fi RTT generator
221 String wifiRttId = measurementManager.addWifiRttGenerator(
222 "11:22:33:44:55:66", // MAC address
223 6000, // timeout (ms)
224 1, // distMin (meters)
225 10, // distMax (meters)
226 0, // stdDevMin
227 2, // stdDevMax
228 -70, // rssiMin
229 -30 // rssiMax
230 );
231 System.out.println("Added Wi-Fi RTT generator with ID: " + wifiRttId);
232 // [java_MeasurementManager_addWifiRttGenerator]
233
234 // [java_MeasurementManager_removeWifiRttGenerator]
235 // Remove specific Wi-Fi RTT generator
236 measurementManager.removeWifiRttGenerator(wifiRttId);
237 System.out.println("Removed Wi-Fi RTT generator: " + wifiRttId);
238 // [java_MeasurementManager_removeWifiRttGenerator]
239
240 // [java_MeasurementManager_removeWifiRttGenerators]
241 // Remove all Wi-Fi RTT generators
242 measurementManager.removeWifiRttGenerators();
243 System.out.println("Removed all Wi-Fi RTT generators");
244 // [java_MeasurementManager_removeWifiRttGenerators]
245 }
246
250 private void demonstrateLocationGenerators() {
251 // [java_MeasurementManager_addLocationGenerator]
252 // Add location generator
253 String locationId = measurementManager.addLocationGenerator(
254 55.7558, // latMin
255 55.7559, // latMax
256 37.6176, // lonMin
257 37.6177, // lonMax
258 1.0, // accMin (meters)
259 5.0, // accMax (meters)
260 7000 // timeout (ms)
261 );
262 System.out.println("Added location generator with ID: " + locationId);
263 // [java_MeasurementManager_addLocationGenerator]
264
265 // [java_MeasurementManager_removeLocationGenerator]
266 // Remove specific location generator
267 measurementManager.removeLocationGenerator(locationId);
268 System.out.println("Removed location generator: " + locationId);
269 // [java_MeasurementManager_removeLocationGenerator]
270
271 // [java_MeasurementManager_removeLocationGenerators]
272 // Remove all location generators
273 measurementManager.removeLocationGenerators();
274 System.out.println("Removed all location generators");
275 // [java_MeasurementManager_removeLocationGenerators]
276 }
277
281 public void demonstrateSensorMeasurements(Map<SensorType, SensorMeasurement> sensors) {
282 sensors.forEach((sensorType, measurement) -> {
283 // [java_SensorMeasurement_getType]
284 // Get sensor type
285 SensorType type = measurement.getType();
286 System.out.println("Sensor type: " + type);
287 // [java_SensorMeasurement_getType]
288
289 // [java_SensorMeasurement_getValues]
290 // Get sensor values
291 Vector3d values = measurement.getValues();
292 System.out.println("Sensor values - X: " + values.getX() + ", Y: " + values.getY() + ", Z: " + values.getZ());
293 // [java_SensorMeasurement_getValues]
294
295 // [java_SensorMeasurement_getTime]
296 // Get measurement timestamp
297 long time = measurement.getTime();
298 System.out.println("Measurement time: " + time + " ms");
299 // [java_SensorMeasurement_getTime]
300
301 // Demonstrate Vector3d properties
302 demonstrateVector3d(values);
303 });
304 }
305
309 public void demonstrateSignalMeasurements(Map<String, SignalMeasurement> signals) {
310 signals.forEach((signalId, measurement) -> {
311 // [java_SignalMeasurement_getType]
312 // Get signal type
313 SignalType type = measurement.getType();
314 System.out.println("Signal type: " + type);
315 // [java_SignalMeasurement_getType]
316
317 // [java_SignalMeasurement_getId]
318 // Get signal identifier
319 String id = measurement.getId();
320 System.out.println("Signal ID: " + id);
321 // [java_SignalMeasurement_getId]
322
323 // [java_SignalMeasurement_getRssi]
324 // Get RSSI value
325 double rssi = measurement.getRssi();
326 System.out.println("Signal RSSI: " + rssi + " dBm");
327 // [java_SignalMeasurement_getRssi]
328
329 // [java_SignalMeasurement_getDistance]
330 // Get estimated distance
331 double distance = measurement.getDistance();
332 System.out.println("Signal distance: " + distance + " meters");
333 // [java_SignalMeasurement_getDistance]
334
335 // [java_SignalMeasurement_getTime]
336 // Get measurement timestamp
337 long time = measurement.getTime();
338 System.out.println("Signal measurement time: " + time + " ms");
339 // [java_SignalMeasurement_getTime]
340 });
341 }
342
346 private void demonstrateVector3d(Vector3d vector) {
347 // [java_Vector3d_getX]
348 // Get X coordinate
349 double x = vector.getX();
350 System.out.println("Vector X: " + x);
351 // [java_Vector3d_getX]
352
353 // [java_Vector3d_getY]
354 // Get Y coordinate
355 double y = vector.getY();
356 System.out.println("Vector Y: " + y);
357 // [java_Vector3d_getY]
358
359 // [java_Vector3d_getZ]
360 // Get Z coordinate
361 double z = vector.getZ();
362 System.out.println("Vector Z: " + z);
363 // [java_Vector3d_getZ]
364 }
365
369 public void runExample() {
370 System.out.println("=== MeasurementManager Example ===");
371
373
374 // Wait a bit for measurements
375 try {
376 Thread.sleep(5000);
377 } catch (InterruptedException e) {
378 Thread.currentThread().interrupt();
379 }
380
381 System.out.println("=== Example completed ===");
382 }
383
387 public static void main(String[] args) {
389 example.runExample();
390 }
391}