Loading...
Searching...
No Matches
ZoneManagerExample.java
Go to the documentation of this file.
1package com.navigine.examples;
2
7public class ZoneManagerExample {
8 private NavigineSdk sdk;
9 private LocationManager locationManager;
10 private NavigationManager navigationManager;
11 private ZoneManager zoneManager;
12 private ZoneListener zoneListener;
13
15 initializeSdk();
16 setupZoneListener();
17 }
18
22 private void initializeSdk() {
23 try {
24 // [java_NavigineSdk_getInstance]
25 // Get SDK instance
26 sdk = NavigineSdk.getInstance();
27 // [java_NavigineSdk_getInstance]
28
29 // [java_NavigineSdk_setUserHash]
30 // Set user hash
31 sdk.setUserHash("USER-HASH-HERE");
32 // [java_NavigineSdk_setUserHash]
33
34 // [java_NavigineSdk_setServer]
35 // Set server URL (optional)
36 sdk.setServer("https://custom.navigine.com");
37 // [java_NavigineSdk_setServer]
38
39 // [java_NavigineSdk_getLocationManager]
40 // Get LocationManager for working with locations
41 locationManager = sdk.getLocationManager();
42 // [java_NavigineSdk_getLocationManager]
43
44 // [java_NavigineSdk_getNavigationManager]
45 // Get NavigationManager for working with navigation
46 navigationManager = sdk.getNavigationManager(locationManager);
47 // [java_NavigineSdk_getNavigationManager]
48
49 // [java_NavigineSdk_getZoneManager]
50 // Get ZoneManager for working with zones
51 zoneManager = sdk.getZoneManager(locationManager, navigationManager);
52 // [java_NavigineSdk_getZoneManager]
53
54 if (locationManager != null && navigationManager != null && zoneManager != null) {
55 System.out.println("LocationManager, NavigationManager and ZoneManager successfully initialized");
56 }
57 } catch (Exception e) {
58 System.err.println("Error initializing SDK: " + e.getMessage());
59 }
60 }
61
65 private void setupZoneListener() {
66 zoneListener = new ZoneListener() {
67 @Override
68 // [java_ZoneListener_onZoneEvent]
69 public void onZoneEvent(ZoneEvent zoneEvent) {
70 System.out.println("Zone event detected");
72 }
73 // [java_ZoneListener_onZoneEvent]
74 };
75 }
76
81 if (zoneManager == null) {
82 System.err.println("ZoneManager not initialized");
83 return;
84 }
85
86 // [java_ZoneManager_addZoneListener]
87 // Add zone listener
88 zoneManager.addZoneListener(zoneListener);
89 System.out.println("Added zone listener");
90 // [java_ZoneManager_addZoneListener]
91
92 // Simulate some time passing for zone events
93 new Thread(() -> {
94 try {
95 Thread.sleep(2000);
96 } catch (InterruptedException e) {
97 Thread.currentThread().interrupt();
98 }
99
100 // [java_ZoneManager_removeZoneListener]
101 // Remove zone listener
102 zoneManager.removeZoneListener(zoneListener);
103 System.out.println("Removed zone listener");
104 // [java_ZoneManager_removeZoneListener]
105 }).start();
106 }
107
111 public void demonstrateZoneEventUsage(ZoneEvent zoneEvent) {
112 if (zoneEvent == null) {
113 System.err.println("ZoneEvent is null");
114 return;
115 }
116
117 // [java_ZoneEvent_getType]
118 // Get event type
119 ZoneEventType type = zoneEvent.getType();
120 System.out.println("Zone event type: " + type);
121 // [java_ZoneEvent_getType]
122
123 // [java_ZoneEvent_getLocationId]
124 // Get location ID
125 int locationId = zoneEvent.getLocationId();
126 System.out.println("Zone location ID: " + locationId);
127 // [java_ZoneEvent_getLocationId]
128
129 // [java_ZoneEvent_getSublocationId]
130 // Get sublocation ID
131 int sublocationId = zoneEvent.getSublocationId();
132 System.out.println("Zone sublocation ID: " + sublocationId);
133 // [java_ZoneEvent_getSublocationId]
134
135 // [java_ZoneEvent_getId]
136 // Get zone ID
137 int id = zoneEvent.getId();
138 System.out.println("Zone ID: " + id);
139 // [java_ZoneEvent_getId]
140
141 // [java_ZoneEvent_getName]
142 // Get zone name
143 String name = zoneEvent.getName();
144 System.out.println("Zone name: " + name);
145 // [java_ZoneEvent_getName]
146
147 // [java_ZoneEvent_getAlias]
148 // Get zone alias
149 String alias = zoneEvent.getAlias();
150 System.out.println("Zone alias: " + alias);
151 // [java_ZoneEvent_getAlias]
152
153 // [java_ZoneEvent_constructor]
154 // Create new zone event
155 ZoneEvent newZoneEvent = new ZoneEvent(
156 ZoneEventType.ENTER,
157 12345,
158 1,
159 100,
160 "Test Zone",
161 "test_zone"
162 );
163 System.out.println("Created new zone event: " + newZoneEvent.getName() + " (" + newZoneEvent.getAlias() + ")");
164 // [java_ZoneEvent_constructor]
165 }
166
171 // [java_ZoneEventType_values]
172 // Get all zone event type values
173 ZoneEventType[] types = ZoneEventType.values();
174 System.out.println("Available zone event types:");
175 for (ZoneEventType type : types) {
176 System.out.println(" - " + type);
177 }
178 // [java_ZoneEventType_values]
179 }
180
185 System.out.println("=== Advanced Zone Features ===");
186
187 if (zoneManager == null) {
188 return;
189 }
190
191 // Add multiple listeners
192 ZoneListener listener1 = new ZoneListener() {
193 @Override
194 public void onZoneEvent(ZoneEvent event) {
195 System.out.println("Listener 1: Zone event - " + event.getName());
196 }
197 };
198
199 ZoneListener listener2 = new ZoneListener() {
200 @Override
201 public void onZoneEvent(ZoneEvent event) {
202 System.out.println("Listener 2: Zone event - " + event.getName());
203 }
204 };
205
206 // [java_ZoneManager_addZoneListener_2]
207 // Add first zone listener
208 zoneManager.addZoneListener(listener1);
209 System.out.println("Added first zone listener");
210 // [java_ZoneManager_addZoneListener_2]
211
212 try {
213 Thread.sleep(1000);
214 } catch (InterruptedException e) {
215 Thread.currentThread().interrupt();
216 }
217
218 // [java_ZoneManager_addZoneListener_3]
219 // Add second zone listener
220 zoneManager.addZoneListener(listener2);
221 System.out.println("Added second zone listener");
222 // [java_ZoneManager_addZoneListener_3]
223
224 // Wait for zone events
225 try {
226 Thread.sleep(3000);
227 } catch (InterruptedException e) {
228 Thread.currentThread().interrupt();
229 }
230
231 // Remove listeners
232 // [java_ZoneManager_removeZoneListener_1]
233 // Remove first zone listener
234 zoneManager.removeZoneListener(listener1);
235 System.out.println("Removed first zone listener");
236 // [java_ZoneManager_removeZoneListener_1]
237
238 try {
239 Thread.sleep(1000);
240 } catch (InterruptedException e) {
241 Thread.currentThread().interrupt();
242 }
243
244 // [java_ZoneManager_removeZoneListener_2]
245 // Remove second zone listener
246 zoneManager.removeZoneListener(listener2);
247 System.out.println("Removed second zone listener");
248 // [java_ZoneManager_removeZoneListener_2]
249 }
250
255 System.out.println("=== Zone Event Simulation ===");
256
257 // Create different types of zone events
258 ZoneEvent[] simulatedEvents = {
259 new ZoneEvent(ZoneEventType.ENTER, 12345, 1, 100, "Entrance Zone", "entrance"),
260 new ZoneEvent(ZoneEventType.EXIT, 12345, 1, 100, "Entrance Zone", "entrance"),
261 new ZoneEvent(ZoneEventType.ENTER, 12345, 1, 101, "Meeting Room", "meeting_room"),
262 new ZoneEvent(ZoneEventType.ENTER, 12345, 1, 102, "Cafeteria", "cafeteria"),
263 new ZoneEvent(ZoneEventType.EXIT, 12345, 1, 101, "Meeting Room", "meeting_room"),
264 };
265
266 // Simulate zone events
267 for (int i = 0; i < simulatedEvents.length; i++) {
268 final int index = i;
269 new Thread(() -> {
270 try {
271 Thread.sleep((index + 1) * 1000);
272 } catch (InterruptedException e) {
273 Thread.currentThread().interrupt();
274 }
275 ZoneEvent event = simulatedEvents[index];
276 System.out.println("Simulated zone event: " + event.getType() + " - " + event.getName() + " (" + event.getAlias() + ")");
278 }).start();
279 }
280 }
281
286 System.out.println("=== Zone Listener Management ===");
287
288 if (zoneManager == null) {
289 return;
290 }
291
292 // Create a test listener
293 ZoneListener testListener = new ZoneListener() {
294 @Override
295 public void onZoneEvent(ZoneEvent event) {
296 System.out.println("Test listener received event: " + event.getName());
297 }
298 };
299
300 // Add listener
301 zoneManager.addZoneListener(testListener);
302 System.out.println("Added test zone listener");
303
304 // Simulate some time passing
305 new Thread(() -> {
306 try {
307 Thread.sleep(2000);
308 } catch (InterruptedException e) {
309 Thread.currentThread().interrupt();
310 }
311
312 // Remove listener
313 zoneManager.removeZoneListener(testListener);
314 System.out.println("Removed test zone listener");
315 }).start();
316 }
317
321 public void cleanup() {
322 if (zoneManager != null && zoneListener != null) {
323 // [java_ZoneManager_removeZoneListener_3]
324 // Remove zone listener
325 zoneManager.removeZoneListener(zoneListener);
326 // [java_ZoneManager_removeZoneListener_3]
327 }
328 }
329
333 public void runExample() {
334 System.out.println("=== ZoneManager Example ===");
335
341
342 // Wait a bit for zone events
343 try {
344 Thread.sleep(5000);
345 } catch (InterruptedException e) {
346 Thread.currentThread().interrupt();
347 }
348
349 cleanup();
350 System.out.println("=== Example completed ===");
351 }
352
356 public static void main(String[] args) {
358 example.runExample();
359 }
360}