/[zanavi_public1]/navit/navit/android/src/com/zoffcc/applications/zanavi/ZANaviDebugReceiver.java
ZANavi

Diff of /navit/navit/android/src/com/zoffcc/applications/zanavi/ZANaviDebugReceiver.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 40 Revision 41
18 */ 18 */
19 19
20package com.zoffcc.applications.zanavi; 20package com.zoffcc.applications.zanavi;
21 21
22import java.io.BufferedReader; 22import java.io.BufferedReader;
23import java.io.File;
23import java.io.FileReader; 24import java.io.FileReader;
24import java.text.SimpleDateFormat; 25import java.text.SimpleDateFormat;
25import java.util.Date; 26import java.util.Date;
26import java.util.Locale; 27import java.util.Locale;
27 28
35public class ZANaviDebugReceiver extends BroadcastReceiver 36public class ZANaviDebugReceiver extends BroadcastReceiver
36{ 37{
37 38
38 static boolean stop_me = false; 39 static boolean stop_me = false;
39 static boolean dont_save_loc = false; 40 static boolean dont_save_loc = false;
41
42 private static int skip_count = 0;
43 private static int rewind_count = 0;
44 final private static int skip = 30;
45 static boolean is_replaying = false;
46 static boolean flag_route_ready = false;
47 static String file_name_global = "";
40 48
41 /* 49 /*
42 * 50 *
43 * Examples: 51 * Examples:
44 * 52 *
82 b.putInt("Callback", 3); 90 b.putInt("Callback", 3);
83 b.putString("lat", String.valueOf(lat)); 91 b.putString("lat", String.valueOf(lat));
84 b.putString("lon", String.valueOf(lon)); 92 b.putString("lon", String.valueOf(lon));
85 b.putString("q", "DEST 001"); 93 b.putString("q", "DEST 001");
86 msg.setData(b); 94 msg.setData(b);
87 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 95 NavitGraphics.callback_handler.sendMessage(msg);
88 } 96 }
89 else 97 else
90 { 98 {
91 Message msg = new Message(); 99 Message msg = new Message();
92 Bundle b = new Bundle(); 100 Bundle b = new Bundle();
93 b.putInt("Callback", 48); 101 b.putInt("Callback", 48);
94 b.putString("lat", String.valueOf(lat)); 102 b.putString("lat", String.valueOf(lat));
95 b.putString("lon", String.valueOf(lon)); 103 b.putString("lon", String.valueOf(lon));
96 b.putString("q", "DEST"); 104 b.putString("q", "DEST");
97 msg.setData(b); 105 msg.setData(b);
98 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 106 NavitGraphics.callback_handler.sendMessage(msg);
99 } 107 }
100 108
101 System.out.println("ZANaviDebugReceiver:" + String.format("%s %s (%s)", key, value.toString(), value.getClass().getName())); 109 System.out.println("ZANaviDebugReceiver:" + String.format("%s %s (%s)", key, value.toString(), value.getClass().getName()));
102 } 110 }
103 111
104 static void DR_set_position(String key, Bundle extras) 112 static void DR_set_position(String key, Bundle extras, boolean disable_loc)
113 {
114 if (disable_loc)
105 { 115 {
106 disable_normal_location(); 116 disable_normal_location();
117 }
107 118
108 Object value = extras.get(key); 119 Object value = extras.get(key);
109 String value2 = value.toString().replaceAll("\\s+", "").replaceAll("\"", ""); 120 String value2 = value.toString().replaceAll("\\s+", "").replaceAll("\"", "");
110 float lat = Float.parseFloat(value2.split(",", 4)[0]); 121 float lat = Float.parseFloat(value2.split(",", 4)[0]);
111 float lon = Float.parseFloat(value2.split(",", 4)[1]); 122 float lon = Float.parseFloat(value2.split(",", 4)[1]);
157 b.putInt("Callback", 96); 168 b.putInt("Callback", 96);
158 String date = new SimpleDateFormat("yyyy-MM-dd_HHmmss", Locale.GERMAN).format(new Date()); 169 String date = new SimpleDateFormat("yyyy-MM-dd_HHmmss", Locale.GERMAN).format(new Date());
159 String filename = Navit.NAVIT_DATA_DEBUG_DIR + "/zanavi_route_" + date + ".gpx"; 170 String filename = Navit.NAVIT_DATA_DEBUG_DIR + "/zanavi_route_" + date + ".gpx";
160 b.putString("s", filename); 171 b.putString("s", filename);
161 msg.setData(b); 172 msg.setData(b);
162 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 173 NavitGraphics.callback_handler.sendMessage(msg);
163 System.out.println("ZANaviDebugReceiver:" + "file=" + filename); 174 System.out.println("ZANaviDebugReceiver:" + "file=" + filename);
164 } 175 }
165 176
166 static void DR_clear_route() 177 static void DR_clear_route()
167 { 178 {
168 // clear any previous destinations 179 // clear any previous destinations
169 Message msg2 = new Message(); 180 Message msg2 = new Message();
170 Bundle b2 = new Bundle(); 181 Bundle b2 = new Bundle();
171 b2.putInt("Callback", 7); 182 b2.putInt("Callback", 7);
172 msg2.setData(b2); 183 msg2.setData(b2);
173 Navit.N_NavitGraphics.callback_handler.sendMessage(msg2); 184 NavitGraphics.callback_handler.sendMessage(msg2);
174 System.out.println("ZANaviDebugReceiver:" + "clear route"); 185 System.out.println("ZANaviDebugReceiver:" + "clear route");
175 } 186 }
176 187
188 static void DR_rewind_small()
189 {
190 rewind_count = 20;
191 System.out.println("ZANaviDebugReceiver:" + "rewind_small");
192 }
193
194 static void DR_skip()
195 {
196 skip_count = 0;
197 System.out.println("ZANaviDebugReceiver:" + "skip");
198 }
199
177 static void DR_replay_gps_file(String filename) 200 static void DR_replay_yaml_file(String filename)
178 { 201 {
179 202
180 System.out.println("ZANaviDebugReceiver:" + "Enter!!"); 203 file_name_global = filename;
181
182 stop_me = false;
183 dont_save_loc = true;
184 204
185 try 205 try
186 { 206 {
187 if ((filename != null) && (!filename.equals(""))) 207 if ((filename != null) && (!filename.equals("")))
188 { 208 {
189 BufferedReader br = null; 209 BufferedReader br = null;
190 br = new BufferedReader(new FileReader(filename)); 210 br = new BufferedReader(new FileReader(filename));
191 211
212 is_replaying = true;
213 NavitGraphics.NavitAOverlay_s.postInvalidate();
214
215 disable_normal_location();
216
217 String mode = "-";
218 double lat_pos = 0.0;
219 double lon_pos = 0.0;
220 double lat_dst = 0.0;
221 double lon_dst = 0.0;
222
223 String line = "";
224 while ((line = br.readLine()) != null)
225 {
226 if ((line.length() >= "from:".length()) && (line.equals("from:")))
227 {
228 mode = "from";
229 }
230 else if ((line.length() >= "to:".length()) && (line.equals("to:")))
231 {
232 mode = "to";
233 }
234 else if ((line.length() >= "success:".length()) && (line.equals("success:")))
235 {
236 mode = "success";
237 }
238 else if ((line.length() >= "capture:".length()) && (line.equals("capture:")))
239 {
240 mode = "capture";
241 }
242 else if ((line.length() > 2) && (!line.startsWith("#")))
243 {
244 // read lat,lon
245 try
246 {
247 String name_str = line.split(":", 2)[0];
248 String value_str = line.split(":", 2)[1];
249 double lat = 0.0;
250 double lon = 0.0;
251
252 if (name_str.contains("lat"))
253 {
254 lat = Double.parseDouble(value_str);
255 if (mode.equals("from"))
256 {
257 lat_pos = lat;
258 }
259 else if (mode.equals("to"))
260 {
261 lat_dst = lat;
262 }
263 }
264 else if (name_str.contains("lng"))
265 {
266 lon = Double.parseDouble(value_str);
267 if (mode.equals("from"))
268 {
269 lon_pos = lon;
270 }
271 else if (mode.equals("to"))
272 {
273 lon_dst = lon;
274 }
275 }
276 }
277 catch (Exception e2)
278 {
279 }
280 }
281 }
282
283 DR_clear_route();
284 Thread.sleep(200);
285 Bundle extras = new Bundle();
286
287 // System.out.println("ZANaviDebugReceiver:" + "set_position" + lat_pos + "," + lon_pos + "," + "0.0" + "," + "0");
288
289 extras.putString("set_position", "" + lat_pos + "," + lon_pos + "," + "0.0" + "," + "0");
290 DR_set_position("set_position", extras, true);
291 Thread.sleep(1000);
292 extras = new Bundle();
293
294 // System.out.println("ZANaviDebugReceiver:" + "add_destination" + lat_dst + "," + lon_dst);
295
296 extras.putString("add_destination", "" + lat_dst + "," + lon_dst);
297 DR_add_destination("add_destination", extras);
298
299 flag_route_ready = false;
300
301 final Thread debug_zoom_to_route_001 = new Thread()
302 {
303 int wait = 1;
304 int count = 0;
305 int max_count = 240;
306
307 @Override
308 public void run()
309 {
310 while (wait == 1)
311 {
312 try
313 {
314 if ((NavitGraphics.navit_route_status == 17) || (NavitGraphics.navit_route_status == 33))
315 {
316 // zoom to route
317 Message msg = new Message();
318 Bundle b = new Bundle();
319 b.putInt("Callback", 17);
320 msg.setData(b);
321 NavitGraphics.callback_handler.sendMessage(msg);
322
323 Navit.set_map_position_to_screen_center();
324
325 // save route to gpx file
326 DR_save_route_to_gpx_file();
327
328 wait = 0;
329 }
330 else
331 {
332 wait = 1;
333 }
334
335 count++;
336 if (count > max_count)
337 {
338 wait = 0;
339
340 Message msg7 = Navit.Navit_progress_h.obtainMessage();
341 Bundle b7 = new Bundle();
342 msg7.what = 2; // long Toast message
343 b7.putString("text", Navit.get_text("saving route to GPX-file failed")); //TRANS
344 msg7.setData(b7);
345 Navit.Navit_progress_h.sendMessage(msg7);
346 }
347 else
348 {
349 Thread.sleep(400);
350 }
351 }
352 catch (Exception e)
353 {
354 }
355 }
356
357 // save map screenshot
358 File f = new File(file_name_global);
359 System.out.println("NNNNN=" + f.getParent() + " / " + f.getName());
360 Navit.take_map_screenshot(f.getParent(), f.getName());
361
362 flag_route_ready = true;
363 }
364 };
365 debug_zoom_to_route_001.start();
366
367 is_replaying = false;
368 NavitGraphics.NavitAOverlay_s.postInvalidate();
369 br.close();
370 }
371 }
372 catch (Exception e)
373 {
374 is_replaying = false;
375 NavitGraphics.NavitAOverlay_s.postInvalidate();
376 }
377 }
378
379 static void DR_replay_gps_file(String filename)
380 {
381
382 System.out.println("ZANaviDebugReceiver:" + "Enter!!");
383
384 stop_me = false;
385 dont_save_loc = true;
386
387 try
388 {
389 if ((filename != null) && (!filename.equals("")))
390 {
391
392 if (filename.endsWith("yaml"))
393 {
394
395 DR_replay_yaml_file(filename);
396
397 return;
398 }
399
400 BufferedReader br = null;
401 br = new BufferedReader(new FileReader(filename));
402
192 Bundle extras2; 403 Bundle extras2;
193 404
194 String line = ""; 405 String line = "";
195 String[] line_parts; 406 String[] line_parts;
196 407
408 skip_count = skip;
409 is_replaying = true;
410 NavitGraphics.NavitAOverlay_s.postInvalidate();
411
412 long line_number = 0;
413
414 disable_normal_location();
415
197 while ((line = br.readLine()) != null) 416 while ((line = br.readLine()) != null)
198 { 417 {
199 if (line.length() > 1) 418 //if (line.length() > 1)
200 { 419 //{
201 System.out.println("ZANaviDebugReceiver:" + "line=" + line); 420 // System.out.println("ZANaviDebugReceiver:" + "line=" + line);
202 } 421 //}
422
423 line_number++;
203 424
204 if (stop_me == true) 425 if (stop_me == true)
205 { 426 {
206 try 427 try
207 { 428 {
209 } 430 }
210 catch (Exception ce) 431 catch (Exception ce)
211 { 432 {
212 ce.printStackTrace(); 433 ce.printStackTrace();
213 } 434 }
435
436 is_replaying = false;
437 NavitGraphics.NavitAOverlay_s.postInvalidate();
214 return; 438 return;
439 }
440
441 if ((rewind_count > 0) && (skip_count == skip))
442 {
443 try
444 {
445 // seek to start of file and skip lines
446 br.close();
447 br = new BufferedReader(new FileReader(filename));
448
449 line_number = line_number - rewind_count;
450 rewind_count = 0;
451 int l_new = 0;
452
453 while (line_number > 0)
454 {
455 // just skip lines
456 line = br.readLine();
457 // System.out.println("ZANaviDebugReceiver:" + "skip line:" + line + " l=" + l_new);
458 line_number--;
459 l_new++;
460 }
461
462 line_number = l_new;
463 }
464 catch (Exception ce)
465 {
466 ce.printStackTrace();
467 }
215 } 468 }
216 469
217 if (line.length() > 3) 470 if (line.length() > 3)
218 { 471 {
219 extras2 = new Bundle(); 472 extras2 = new Bundle();
220 line_parts = line.split(":", 2); 473 line_parts = line.split(":", 2);
221 474
222 if (line_parts[0].equals("CLR")) 475 if (line_parts[0].equals("CLR"))
223 { 476 {
477 if (skip_count >= skip)
478 {
224 DR_clear_route(); 479 DR_clear_route();
225 Thread.sleep(200); 480 Thread.sleep(200);
481 }
482 else
483 {
484 skip_count++;
485 }
226 } 486 }
227 else if (line_parts[0].equals("DST")) 487 else if (line_parts[0].equals("DST"))
228 { 488 {
489 if (skip_count >= skip)
490 {
229 extras2.putString("add_destination", line_parts[1]); 491 extras2.putString("add_destination", line_parts[1]);
230 DR_add_destination("add_destination", extras2); 492 DR_add_destination("add_destination", extras2);
231 Thread.sleep(5000); // wait 5 seconds to calc route 493 Thread.sleep(5000); // wait 5 seconds to calc route
494 }
495 else
496 {
497 skip_count++;
498 }
232 } 499 }
233 else if (line_parts[0].equals("POS")) 500 else if (line_parts[0].equals("POS"))
234 { 501 {
502 while (Navit.follow_current == Navit.follow_off)
503 {
504 try
505 {
506 Thread.sleep(600);
507 }
508 catch (Exception sl1)
509 {
510 }
511 }
512
513 if (skip_count >= skip)
514 {
235 extras2.putString("set_position", line_parts[1]); 515 extras2.putString("set_position", line_parts[1]);
236 DR_set_position("set_position", extras2); 516 DR_set_position("set_position", extras2, false);
237 Thread.sleep(950); 517 Thread.sleep(950); // about 1 second between locationpoints
518 }
519 else
520 {
521 skip_count++;
522 }
238 } 523 }
239 else 524 else
240 { 525 {
241 } 526 }
242 527
243 } 528 }
244 } 529 }
530
531 is_replaying = false;
245 System.out.println("ZANaviDebugReceiver:" + "while loop end"); 532 System.out.println("ZANaviDebugReceiver:" + "while loop end");
246 br.close(); 533 br.close();
247 } 534 }
248 535
249 } 536 }
251 { 538 {
252 e.printStackTrace(); 539 e.printStackTrace();
253 System.out.println("ZANaviDebugReceiver:" + "EX:" + e.getMessage()); 540 System.out.println("ZANaviDebugReceiver:" + "EX:" + e.getMessage());
254 } 541 }
255 542
543 is_replaying = false;
256 dont_save_loc = true; 544 dont_save_loc = true;
545
546 NavitGraphics.NavitAOverlay_s.postInvalidate();
257 547
258 System.out.println("ZANaviDebugReceiver:" + "Leave!!"); 548 System.out.println("ZANaviDebugReceiver:" + "Leave!!");
259 } 549 }
260 550
261 @Override 551 @Override
262 public void onReceive(Context context, Intent intent) 552 public void onReceive(Context context, Intent intent)
263 { 553 {
264 if (Navit.PREF_enable_debug_enable_comm) 554 if (Navit.p.PREF_enable_debug_enable_comm)
265 { 555 {
266 System.out.println("ZANaviDebugReceiver:" + "enter"); 556 System.out.println("ZANaviDebugReceiver:" + "enter");
267 try 557 try
268 { 558 {
269 Bundle extras = intent.getExtras(); 559 Bundle extras = intent.getExtras();
286 b.putInt("Callback", 97); 576 b.putInt("Callback", 97);
287 b.putString("lat", String.valueOf(lat)); 577 b.putString("lat", String.valueOf(lat));
288 b.putString("lon", String.valueOf(lon)); 578 b.putString("lon", String.valueOf(lon));
289 b.putString("q", "POSITION"); 579 b.putString("q", "POSITION");
290 msg.setData(b); 580 msg.setData(b);
291 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 581 NavitGraphics.callback_handler.sendMessage(msg);
292 582
293 break; 583 break;
294 } 584 }
295 else if (key.equals("set_pos_and_dest")) 585 else if (key.equals("set_pos_and_dest"))
296 { 586 {
297 Object value = extras.get(key); 587 Object value = extras.get(key);
298 String value2 = value.toString().replaceAll("\"", ""); 588 String value2 = value.toString().replaceAll("\"", "");
299 String route_name = value2.split(" ", 5)[0]; 589 // String route_name = value2.split(" ", 5)[0];
300 float lat1 = Float.parseFloat(value2.split(" ", 5)[2]); 590 float lat1 = Float.parseFloat(value2.split(" ", 5)[2]);
301 float lon1 = Float.parseFloat(value2.split(" ", 5)[1]); 591 float lon1 = Float.parseFloat(value2.split(" ", 5)[1]);
302 float lat2 = Float.parseFloat(value2.split(" ", 5)[4]); 592 float lat2 = Float.parseFloat(value2.split(" ", 5)[4]);
303 float lon2 = Float.parseFloat(value2.split(" ", 5)[3]); 593 float lon2 = Float.parseFloat(value2.split(" ", 5)[3]);
304 594
306 596
307 DR_clear_route(); 597 DR_clear_route();
308 Thread.sleep(200); 598 Thread.sleep(200);
309 extras = new Bundle(); 599 extras = new Bundle();
310 extras.putString("set_position", "" + lat1 + "," + lon1 + "," + "0.0" + "," + "0"); 600 extras.putString("set_position", "" + lat1 + "," + lon1 + "," + "0.0" + "," + "0");
311 DR_set_position("set_position", extras); 601 DR_set_position("set_position", extras, true);
312 Thread.sleep(1000); 602 Thread.sleep(1000);
313 extras = new Bundle(); 603 extras = new Bundle();
314 extras.putString("add_destination", "" + lat2 + "," + lon2); 604 extras.putString("add_destination", "" + lat2 + "," + lon2);
315 DR_add_destination("add_destination", extras); 605 DR_add_destination("add_destination", extras);
316 606
332 // zoom to route 622 // zoom to route
333 Message msg = new Message(); 623 Message msg = new Message();
334 Bundle b = new Bundle(); 624 Bundle b = new Bundle();
335 b.putInt("Callback", 17); 625 b.putInt("Callback", 17);
336 msg.setData(b); 626 msg.setData(b);
337 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 627 NavitGraphics.callback_handler.sendMessage(msg);
338 628
339 Navit.set_map_position_to_screen_center(); 629 Navit.set_map_position_to_screen_center();
340 630
341 // save route to gpx file 631 // save route to gpx file
342 DR_save_route_to_gpx_file(); 632 DR_save_route_to_gpx_file();
375 665
376 break; 666 break;
377 } 667 }
378 else if (key.equals("set_position")) 668 else if (key.equals("set_position"))
379 { 669 {
380 DR_set_position(key, extras); 670 DR_set_position(key, extras, true);
381 break; 671 break;
382 } 672 }
383 else if (key.equals("add_destination")) 673 else if (key.equals("add_destination"))
384 { 674 {
385 DR_add_destination(key, extras); 675 DR_add_destination(key, extras);
402 // zoom to route 692 // zoom to route
403 Message msg = new Message(); 693 Message msg = new Message();
404 Bundle b = new Bundle(); 694 Bundle b = new Bundle();
405 b.putInt("Callback", 17); 695 b.putInt("Callback", 17);
406 msg.setData(b); 696 msg.setData(b);
407 Navit.N_NavitGraphics.callback_handler.sendMessage(msg); 697 NavitGraphics.callback_handler.sendMessage(msg);
408 698
409 Navit.set_map_position_to_screen_center(); 699 Navit.set_map_position_to_screen_center();
410 700
411 wait = 0; 701 wait = 0;
412 } 702 }

Legend:
Removed from v.40  
changed lines
  Added in v.41

   
Visit the ZANavi Wiki