Loading...
Searching...
No Matches
NavigationManagerExample.java
Go to the documentation of this file.
1package com.navigine.examples;
2
3import com.navigine.idl.java.*;
4
10 private NavigineSdk sdk;
11 private LocationManager locationManager;
12 private NavigationManager navigationManager;
13 private PositionListener positionListener;
14
16 initializeSdk();
17 setupPositionListener();
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_getNavigationManager]
46 // Get NavigationManager for working with navigation
47 navigationManager = sdk.getNavigationManager(locationManager);
48 // [java_NavigineSdk_getNavigationManager]
49
50 if (locationManager != null && navigationManager != null) {
51 System.out.println("LocationManager and NavigationManager successfully initialized");
52 }
53 } catch (Exception e) {
54 System.err.println("Error initializing SDK: " + e.getMessage());
55 }
56 }
57
61 private void setupPositionListener() {
62 positionListener = new PositionListener() {
63 @Override
64 // [java_PositionListener_onPositionUpdated]
65 public void onPositionUpdated(Position position) {
66 System.out.println("Position updated successfully");
68 }
69 // [java_PositionListener_onPositionUpdated]
70
71 @Override
72 // [java_PositionListener_onPositionError]
73 public void onPositionError(Error error) {
74 System.err.println("Position error: " + error.getMessage());
75 }
76 // [java_PositionListener_onPositionError]
77 };
78 }
79
84 if (navigationManager == null) {
85 System.err.println("NavigationManager not initialized");
86 return;
87 }
88
89 // [java_NavigationManager_addPositionListener]
90 // Add position listener
91 navigationManager.addPositionListener(positionListener);
92 // [java_NavigationManager_addPositionListener]
93
94 // [java_NavigationManager_startLogRecording]
95 // Start log recording
96 navigationManager.startLogRecording();
97 // [java_NavigationManager_startLogRecording]
98
99 // [java_NavigationManager_addCheckPoint]
100 // Add check point
101 Point point = new Point(10.0, 20.0);
102 LocationPoint locationPoint = new LocationPoint(point, 12345, 1);
103 navigationManager.addCheckPoint(locationPoint);
104 // [java_NavigationManager_addCheckPoint]
105
106 // [java_NavigationManager_addLocationMeasurement]
107 // Add location measurement
108 GlobalPoint globalPoint = new GlobalPoint(55.7558, 37.6176); // Moscow coordinates
109 navigationManager.addLocationMeasurement(globalPoint, 5.0f, "gps");
110 // [java_NavigationManager_addLocationMeasurement]
111
112 // [java_NavigationManager_stopLogRecording]
113 // Stop log recording
114 navigationManager.stopLogRecording();
115 // [java_NavigationManager_stopLogRecording]
116 }
117
121 public void demonstratePositionUsage(Position position) {
122 if (position == null) {
123 System.err.println("Position is null");
124 return;
125 }
126
127 // [java_Position_getPoint]
128 // Get global point (WGS84 coordinates)
129 GlobalPoint globalPoint = position.getPoint();
130 if (globalPoint != null) {
131 demonstrateGlobalPointUsage(globalPoint);
132 }
133 // [java_Position_getPoint]
134
135 // [java_Position_getAccuracy]
136 // Get position accuracy
137 double accuracy = position.getAccuracy();
138 System.out.println("Position accuracy: " + accuracy + " meters");
139 // [java_Position_getAccuracy]
140
141 // [java_Position_getHeading]
142 // Get heading (angle of rotation about the -Z axis in radians)
143 Double heading = position.getHeading();
144 if (heading != null) {
145 System.out.println("Heading: " + heading + " radians");
146 }
147 // [java_Position_getHeading]
148
149 // [java_Position_getHeadingAccuracy]
150 // Get heading accuracy
151 Double headingAccuracy = position.getHeadingAccuracy();
152 if (headingAccuracy != null) {
153 System.out.println("Heading accuracy: " + headingAccuracy + " radians");
154 }
155 // [java_Position_getHeadingAccuracy]
156
157 // [java_Position_getLocationPoint]
158 // Get location point (metrics coordinates)
159 LocationPoint locationPoint = position.getLocationPoint();
160 if (locationPoint != null) {
161 demonstrateLocationPointUsage(locationPoint);
162 }
163 // [java_Position_getLocationPoint]
164
165 // [java_Position_getLocationHeading]
166 // Get location heading (with respect to sublocation north)
167 Double locationHeading = position.getLocationHeading();
168 if (locationHeading != null) {
169 System.out.println("Location heading: " + locationHeading + " radians");
170 }
171 // [java_Position_getLocationHeading]
172 }
173
177 public void demonstrateGlobalPointUsage(GlobalPoint globalPoint) {
178 if (globalPoint == null) {
179 System.err.println("GlobalPoint is null");
180 return;
181 }
182
183 // [java_GlobalPoint_getLatitude]
184 // Get latitude
185 double latitude = globalPoint.getLatitude();
186 System.out.println("Latitude: " + latitude);
187 // [java_GlobalPoint_getLatitude]
188
189 // [java_GlobalPoint_getLongitude]
190 // Get longitude
191 double longitude = globalPoint.getLongitude();
192 System.out.println("Longitude: " + longitude);
193 // [java_GlobalPoint_getLongitude]
194
195 // [java_GlobalPoint_constructor]
196 // Create new GlobalPoint
197 GlobalPoint newPoint = new GlobalPoint(latitude, longitude);
198 System.out.println("Created new GlobalPoint: " + newPoint);
199 // [java_GlobalPoint_constructor]
200 }
201
205 public void demonstrateLocationPointUsage(LocationPoint locationPoint) {
206 if (locationPoint == null) {
207 System.err.println("LocationPoint is null");
208 return;
209 }
210
211 // [java_LocationPoint_getPoint]
212 // Get point coordinates
213 Point point = locationPoint.getPoint();
214 if (point != null) {
216 }
217 // [java_LocationPoint_getPoint]
218
219 // [java_LocationPoint_getLocationId]
220 // Get location ID
221 int locationId = locationPoint.getLocationId();
222 System.out.println("Location ID: " + locationId);
223 // [java_LocationPoint_getLocationId]
224
225 // [java_LocationPoint_getSublocationId]
226 // Get sublocation ID
227 int sublocationId = locationPoint.getSublocationId();
228 System.out.println("Sublocation ID: " + sublocationId);
229 // [java_LocationPoint_getSublocationId]
230
231 // [java_LocationPoint_constructor]
232 // Create new LocationPoint
233 Point newPoint = new Point(15.0, 25.0);
234 LocationPoint newLocationPoint = new LocationPoint(newPoint, locationId, sublocationId);
235 System.out.println("Created new LocationPoint: " + newLocationPoint);
236 // [java_LocationPoint_constructor]
237 }
238
242 public void demonstratePointUsage(Point point) {
243 if (point == null) {
244 System.err.println("Point is null");
245 return;
246 }
247
248 // [java_Point_getX]
249 // Get X coordinate
250 double x = point.getX();
251 System.out.println("Point X: " + x);
252 // [java_Point_getX]
253
254 // [java_Point_getY]
255 // Get Y coordinate
256 double y = point.getY();
257 System.out.println("Point Y: " + y);
258 // [java_Point_getY]
259
260 // [java_Point_constructor]
261 // Create new Point
262 Point newPoint = new Point(x, y);
263 System.out.println("Created new Point: " + newPoint);
264 // [java_Point_constructor]
265 }
266
271 if (locationManager == null) {
272 System.err.println("LocationManager not initialized");
273 return;
274 }
275
276 // [java_LocationManager_addLocationListener]
277 // Add location listener for navigation integration
278 LocationListener locationListener = new LocationListener() {
279 @Override
280 // [java_LocationListener_onLocationLoaded]
281 public void onLocationLoaded(Location location) {
282 System.out.println("Location loaded for navigation");
283 if (location != null) {
284 // [java_LocationManager_setLocationId]
285 // Set location ID for navigation
286 locationManager.setLocationId(location.getId());
287 // [java_LocationManager_setLocationId]
288 }
289 }
290 // [java_LocationListener_onLocationLoaded]
291
292 @Override
293 // [java_LocationListener_onLocationUploaded]
294 public void onLocationUploaded(int locationId) {
295 System.out.println("Location uploaded: " + locationId);
296 }
297 // [java_LocationListener_onLocationUploaded]
298
299 @Override
300 // [java_LocationListener_onLocationFailed]
301 public void onLocationFailed(int locationId, Error error) {
302 System.err.println("Failed to load location " + locationId + ": " + error.getMessage());
303 }
304 // [java_LocationListener_onLocationFailed]
305 };
306 locationManager.addLocationListener(locationListener);
307 // [java_LocationManager_addLocationListener]
308
309 // [java_LocationManager_setLocationId]
310 // Set location ID to load
311 locationManager.setLocationId(12345);
312 // [java_LocationManager_setLocationId]
313
314 // [java_LocationManager_getLocationId]
315 // Get current location ID
316 int currentLocationId = locationManager.getLocationId();
317 System.out.println("Current location ID: " + currentLocationId);
318 // [java_LocationManager_getLocationId]
319
320 // [java_LocationManager_setLocationUpdateInterval]
321 // Set location update interval
322 locationManager.setLocationUpdateInterval(300); // 5 minutes
323 // [java_LocationManager_setLocationUpdateInterval]
324
325 // [java_LocationManager_commitChanges]
326 // Commit changes
327 locationManager.commitChanges();
328 // [java_LocationManager_commitChanges]
329 }
330
335 System.out.println("=== Advanced Navigation Features ===");
336
337 // Create multiple check points for path tracking
338 Point[] checkPoints = {
339 new Point(0.0, 0.0),
340 new Point(10.0, 10.0),
341 new Point(20.0, 20.0),
342 new Point(30.0, 30.0)
343 };
344
345 for (int i = 0; i < checkPoints.length; i++) {
346 LocationPoint locationPoint = new LocationPoint(checkPoints[i], 12345, 1);
347 // [java_NavigationManager_addCheckPoint]
348 // Add check point for path tracking
349 navigationManager.addCheckPoint(locationPoint);
350 // [java_NavigationManager_addCheckPoint]
351 System.out.println("Added check point " + (i + 1) + ": " + locationPoint);
352 }
353
354 // Add location measurements with different providers
355 GlobalPoint[] measurements = {
356 new GlobalPoint(55.7558, 37.6176), // Moscow
357 new GlobalPoint(40.7128, -74.0060), // New York
358 new GlobalPoint(51.5074, -0.1278) // London
359 };
360
361 String[] providers = {"gps", "network", "fused"};
362
363 for (int i = 0; i < measurements.length; i++) {
364 // [java_NavigationManager_addLocationMeasurement]
365 // Add location measurement with different providers
366 navigationManager.addLocationMeasurement(measurements[i], 3.0f + i, providers[i % providers.length]);
367 // [java_NavigationManager_addLocationMeasurement]
368 System.out.println("Added measurement " + (i + 1) + " with provider: " + providers[i % providers.length]);
369 }
370 }
371
376 System.out.println("=== Position Tracking Simulation ===");
377
378 // [java_NavigationManager_startLogRecording]
379 // Start log recording for position tracking
380 navigationManager.startLogRecording();
381 // [java_NavigationManager_startLogRecording]
382
383 // Simulate position updates
384 for (int i = 0; i < 5; i++) {
385 double lat = 55.7558 + (i * 0.001); // Move north
386 double lon = 37.6176 + (i * 0.001); // Move east
387
388 GlobalPoint globalPoint = new GlobalPoint(lat, lon);
389 // [java_NavigationManager_addLocationMeasurement]
390 // Add simulated location measurement
391 navigationManager.addLocationMeasurement(globalPoint, 2.0f, "simulated");
392 // [java_NavigationManager_addLocationMeasurement]
393
394 System.out.println("Simulated position " + (i + 1) + ": " + globalPoint);
395
396 try {
397 Thread.sleep(1000); // Wait 1 second between updates
398 } catch (InterruptedException e) {
399 Thread.currentThread().interrupt();
400 break;
401 }
402 }
403
404 // [java_NavigationManager_stopLogRecording]
405 // Stop log recording
406 navigationManager.stopLogRecording();
407 // [java_NavigationManager_stopLogRecording]
408 }
409
413 public void cleanup() {
414 if (navigationManager != null && positionListener != null) {
415 // [java_NavigationManager_removePositionListener]
416 // Remove position listener
417 navigationManager.removePositionListener(positionListener);
418 // [java_NavigationManager_removePositionListener]
419 }
420 }
421
425 public void runExample() {
426 System.out.println("=== NavigationManager Example ===");
427
432
433 // Wait a bit for position updates
434 try {
435 Thread.sleep(3000);
436 } catch (InterruptedException e) {
437 Thread.currentThread().interrupt();
438 }
439
440 cleanup();
441 System.out.println("=== Example completed ===");
442 }
443
447 public static void main(String[] args) {
449 example.runExample();
450 }
451}