Example usage for android.os Message setData

List of usage examples for android.os Message setData

Introduction

In this page you can find the example usage for android.os Message setData.

Prototype

public void setData(Bundle data) 

Source Link

Document

Sets a Bundle of arbitrary data values.

Usage

From source file:com.zoffcc.applications.zanavi.Navit.java

@SuppressLint("NewApi")
public boolean onOptionsItemSelected_wrapper(int id) {
    // Handle item selection
    switch (id) {
    case 1:/*from   w w  w.j a va  2 s. c  o m*/
        // zoom in
        Message msg = new Message();
        Bundle b = new Bundle();
        b.putInt("Callback", 1);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        // if we zoom, hide the bubble
        if (N_NavitGraphics.NavitAOverlay != null) {
            N_NavitGraphics.NavitAOverlay.hide_bubble();
        }
        Log.e("Navit", "onOptionsItemSelected -> zoom in");
        break;
    case 2:
        // zoom out
        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 2);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        // if we zoom, hide the bubble
        if (N_NavitGraphics.NavitAOverlay != null) {
            N_NavitGraphics.NavitAOverlay.hide_bubble();
        }
        Log.e("Navit", "onOptionsItemSelected -> zoom out");
        break;
    case 3:
        // map download menu
        Intent map_download_list_activity = new Intent(this, NavitDownloadSelectMapActivity.class);
        this.startActivityForResult(map_download_list_activity, Navit.NavitDownloaderPriSelectMap_id);
        break;
    case 5:
        toggle_poi_pref();
        set_poi_layers();
        draw_map();
        break;
    case 6:
        // ok startup address search activity (online google maps search)
        Navit.use_index_search = false;
        Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
        search_intent.putExtra("title", Navit.get_text("Enter: City and Street")); //TRANS
        search_intent.putExtra("address_string", Navit_last_address_search_string);
        //search_intent.putExtra("hn_string", Navit_last_address_hn_string);
        search_intent.putExtra("type", "online");
        String pm_temp = "0";
        if (Navit_last_address_partial_match) {
            pm_temp = "1";
        }
        search_intent.putExtra("partial_match", pm_temp);
        this.startActivityForResult(search_intent, NavitAddressSearch_id_online);
        break;
    case 7:
        // ok startup address search activity (offline binfile search)
        Navit.use_index_search = Navit.allow_use_index_search();
        Intent search_intent2 = new Intent(this, NavitAddressSearchActivity.class);
        search_intent2.putExtra("title", Navit.get_text("Enter: City and Street")); //TRANS
        search_intent2.putExtra("address_string", Navit_last_address_search_string);
        search_intent2.putExtra("hn_string", Navit_last_address_hn_string);
        search_intent2.putExtra("type", "offline");
        search_intent2.putExtra("search_country_id", Navit_last_address_search_country_id);

        String pm_temp2 = "0";
        if (Navit_last_address_partial_match) {
            pm_temp2 = "1";
        }

        search_intent2.putExtra("partial_match", pm_temp2);
        this.startActivityForResult(search_intent2, NavitAddressSearch_id_offline);
        break;
    case 8:
        // map delete menu
        Intent map_delete_list_activity2 = new Intent(this, NavitDeleteSelectMapActivity.class);
        this.startActivityForResult(map_delete_list_activity2, Navit.NavitDeleteSecSelectMap_id);
        break;
    case 9:
        // stop navigation (this menu should only appear when navigation is actually on!)
        Message msg2 = new Message();
        Bundle b2 = new Bundle();
        b2.putInt("Callback", 7);
        msg2.setData(b2);
        NavitGraphics.callback_handler.sendMessage(msg2);
        Log.e("Navit", "stop navigation");
        break;
    case 10:
        // open settings menu
        Intent settingsActivity = new Intent(getBaseContext(), NavitPreferences.class);
        startActivity(settingsActivity);
        break;
    case 11:
        //zoom_to_route
        zoom_to_route();
        break;
    case 12:

        // --------- make app crash ---------
        // --------- make app crash ---------
        // --------- make app crash ---------
        // ** // DEBUG // ** // crash_app_java(1);
        // ** // DEBUG // ** // crash_app_C();
        // --------- make app crash ---------
        // --------- make app crash ---------
        // --------- make app crash ---------

        // announcer off
        Navit_Announcer = false;
        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 34);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        try {
            invalidateOptionsMenu();
        } catch (Exception e) {
        }
        break;
    case 13:
        // announcer on
        Navit_Announcer = true;
        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 35);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        try {
            invalidateOptionsMenu();
        } catch (Exception e) {
        }
        break;
    case 14:
        // show recent destination list
        Intent i2 = new Intent(this, NavitRecentDestinationActivity.class);
        this.startActivityForResult(i2, Navit.NavitRecentDest_id);
        break;
    case 15:
        // show current target on googlemaps
        String current_target_string = NavitGraphics.CallbackGeoCalc(4, 1, 1);
        // Log.e("Navit", "got target  1: "+current_target_string);
        if (current_target_string.equals("x:x")) {
            Log.e("Navit", "no target set!");
        } else {
            try {
                String tmp[] = current_target_string.split(":", 2);
                googlemaps_show(tmp[0], tmp[1], "ZANavi Target");
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("Navit", "problem with target!");
            }
        }
        break;
    case 16:
        // show online manual
        Log.e("Navit", "user wants online help, show the website lang="
                + NavitTextTranslations.main_language.toLowerCase());
        // URL to ZANavi Manual (in english language)
        String url = "http://zanavi.cc/index.php/Manual";
        if (FDBL) {
            url = "http://fd.zanavi.cc/manual";
        }
        if (NavitTextTranslations.main_language.toLowerCase().equals("de")) {
            // show german manual
            url = "http://zanavi.cc/index.php/Manual/de";
            if (FDBL) {
                url = "http://fd.zanavi.cc/manualde";
            }
        }

        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);
        break;
    case 17:
        // show age of maps (online)
        Intent i3 = new Intent(Intent.ACTION_VIEW);
        i3.setData(Uri.parse(NavitMapDownloader.ZANAVI_MAPS_AGE_URL));
        startActivity(i3);
        break;
    case 18:
        Intent intent_latlon = new Intent(Intent.ACTION_MAIN);
        //intent_latlon.setAction("android.intent.action.POINTPICK");
        intent_latlon.setPackage("com.cruthu.latlongcalc1");
        intent_latlon.setClassName("com.cruthu.latlongcalc1", "com.cruthu.latlongcalc1.LatLongMain");
        //intent_latlon.setClassName("com.cruthu.latlongcalc1", "com.cruthu.latlongcalc1.LatLongPointPick");
        try {
            startActivity(intent_latlon);
        } catch (Exception e88) {
            e88.printStackTrace();
            // show install page
            try {
                // String urlx = "http://market.android.com/details?id=com.cruthu.latlongcalc1";
                String urlx = "market://details?id=com.cruthu.latlongcalc1";
                Intent ix = new Intent(Intent.ACTION_VIEW);
                ix.setData(Uri.parse(urlx));
                startActivity(ix);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        break;
    case 19:
        // GeoCoordEnterDialog
        Intent it001 = new Intent(this, GeoCoordEnterDialog.class);
        this.startActivityForResult(it001, Navit.NavitGeoCoordEnter_id);
        break;
    case 20:
        // convert GPX file
        Intent intent77 = new Intent(getBaseContext(), FileDialog.class);
        File a = new File(p.PREF_last_selected_dir_gpxfiles);
        try {
            // convert the "/../" in the path to normal absolut dir
            intent77.putExtra(FileDialog.START_PATH, a.getCanonicalPath());
            //can user select directories or not
            intent77.putExtra(FileDialog.CAN_SELECT_DIR, false);
            // disable the "new" button
            intent77.putExtra(FileDialog.SELECTION_MODE, SelectionMode.MODE_OPEN);
            //alternatively you can set file filter
            //intent.putExtra(FileDialog.FORMAT_FILTER, new String[] { "gpx" });
            startActivityForResult(intent77, Navit.NavitGPXConvChooser_id);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        break;
    case 21:
        // add traffic block (like blocked road, or construction site) at current location of crosshair
        try {
            String traffic = "";
            if (Navit.GFX_OVERSPILL) {
                traffic = NavitGraphics.CallbackGeoCalc(7,
                        (int) (NavitGraphics.Global_dpi_factor
                                * (NavitGraphics.mCanvasWidth / 2 + NavitGraphics.mCanvasWidth_overspill)),
                        (int) (NavitGraphics.Global_dpi_factor
                                * (NavitGraphics.mCanvasHeight / 2 + NavitGraphics.mCanvasHeight_overspill)));
            } else {
                traffic = NavitGraphics.CallbackGeoCalc(7,
                        (int) (NavitGraphics.Global_dpi_factor * NavitGraphics.mCanvasWidth / 2),
                        (int) (NavitGraphics.Global_dpi_factor * NavitGraphics.mCanvasHeight / 2));
            }

            // System.out.println("traffic=" + traffic);
            File traffic_file_dir = new File(MAP_FILENAME_PATH);
            traffic_file_dir.mkdirs();
            File traffic_file = new File(MAP_FILENAME_PATH + "/traffic.txt");
            FileOutputStream fOut = null;
            OutputStreamWriter osw = null;
            try {
                fOut = new FileOutputStream(traffic_file, true);
                osw = new OutputStreamWriter(fOut);
                osw.write("type=traffic_distortion maxspeed=0" + "\n"); // item header
                osw.write(traffic); // item coordinates
                osw.close();
                fOut.close();
            } catch (Exception ef) {
                ef.printStackTrace();
            }

            // update route, if a route is set
            msg = new Message();
            b = new Bundle();
            b.putInt("Callback", 73);
            msg.setData(b);
            NavitGraphics.callback_handler.sendMessage(msg);

            // draw map no-async
            msg = new Message();
            b = new Bundle();
            b.putInt("Callback", 64);
            msg.setData(b);
            NavitGraphics.callback_handler.sendMessage(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case 22:
        // clear all traffic blocks
        try {
            File traffic_file = new File(MAP_FILENAME_PATH + "/traffic.txt");
            traffic_file.delete();

            // update route, if a route is set
            msg = new Message();
            b = new Bundle();
            b.putInt("Callback", 73);
            msg.setData(b);
            NavitGraphics.callback_handler.sendMessage(msg);

            // draw map no-async
            msg = new Message();
            b = new Bundle();
            b.putInt("Callback", 64);
            msg.setData(b);
            NavitGraphics.callback_handler.sendMessage(msg);
        } catch (Exception e) {
        }
        break;
    case 23:
        // clear all GPX maps
        try {
            File gpx_file = new File(MAP_FILENAME_PATH + "/gpxtracks.txt");
            gpx_file.delete();

            // draw map no-async
            msg = new Message();
            b = new Bundle();
            b.putInt("Callback", 64);
            msg.setData(b);
            NavitGraphics.callback_handler.sendMessage(msg);
        } catch (Exception e) {
        }
        break;
    case 24:
        // show feedback form
        Intent i4 = new Intent(this, NavitFeedbackFormActivity.class);
        this.startActivityForResult(i4, Navit.NavitSendFeedback_id);
        break;
    case 25:
        // share the current destination with your friends         
        String current_target_string2 = NavitGraphics.CallbackGeoCalc(4, 1, 1);
        if (current_target_string2.equals("x:x")) {
            Log.e("Navit", "no target set!");
        } else {
            try {
                String tmp[] = current_target_string2.split(":", 2);

                if (Navit.OSD_route_001.arriving_time_valid) {
                    share_location(tmp[0], tmp[1], Navit.get_text("Meeting Point"),
                            Navit.get_text("Meeting Point"), Navit.OSD_route_001.arriving_time, true);
                } else {
                    share_location(tmp[0], tmp[1], Navit.get_text("Meeting Point"),
                            Navit.get_text("Meeting Point"), "", true);
                }
            } catch (Exception e) {
                e.printStackTrace();
                Log.e("Navit", "problem with target!");
            }
        }
        break;
    case 26:
        // donate
        Log.e("Navit", "start donate app");
        donate();
        break;
    case 27:
        // donate
        Log.e("Navit", "donate bitcoins");
        donate_bitcoins();
        break;
    case 28:
        // replay GPS file
        Intent intent771 = new Intent(getBaseContext(), FileDialog.class);
        File a1 = new File(Navit.NAVIT_DATA_DEBUG_DIR);
        try {
            // convert the "/../" in the path to normal absolut dir
            intent771.putExtra(FileDialog.START_PATH, a1.getCanonicalPath());
            //can user select directories or not
            intent771.putExtra(FileDialog.CAN_SELECT_DIR, false);
            // disable the "new" button
            intent771.putExtra(FileDialog.SELECTION_MODE, SelectionMode.MODE_OPEN);
            //alternatively you can set file filter
            intent771.putExtra(FileDialog.FORMAT_FILTER, new String[] { "txt", "yaml" });
            startActivityForResult(intent771, Navit.NavitReplayFileConvChooser_id);
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        break;
    case 29:
        // About Screen
        Intent it002 = new Intent(this, ZANaviAboutPage.class);
        this.startActivityForResult(it002, Navit.ZANaviAbout_id);
        break;
    case 88:
        // dummy entry, just to make "breaks" in the menu
        break;
    case 601:
        // DEBUG: activate demo vehicle and set position to position to screen center

        Navit.DemoVehicle = true;

        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 101);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);

        final Thread demo_v_001 = new Thread() {
            @Override
            public void run() {
                try {
                    Thread.sleep(1000); // wait 1 seconds before we start

                    try {
                        float lat = 0;
                        float lon = 0;

                        String lat_lon = "";
                        if (Navit.GFX_OVERSPILL) {
                            lat_lon = NavitGraphics.CallbackGeoCalc(1, NavitGraphics.Global_dpi_factor
                                    * (NG__map_main.view.getWidth() / 2 + NavitGraphics.mCanvasWidth_overspill),
                                    NavitGraphics.Global_dpi_factor * (NG__map_main.view.getHeight() / 2
                                            + NavitGraphics.mCanvasHeight_overspill));
                        } else {
                            lat_lon = NavitGraphics.CallbackGeoCalc(1,
                                    NavitGraphics.Global_dpi_factor * NG__map_main.view.getWidth() / 2,
                                    NavitGraphics.Global_dpi_factor * NG__map_main.view.getHeight() / 2);
                        }
                        String tmp[] = lat_lon.split(":", 2);
                        //System.out.println("tmp=" + lat_lon);
                        lat = Float.parseFloat(tmp[0]);
                        lon = Float.parseFloat(tmp[1]);
                        //System.out.println("ret=" + lat_lon + " lat=" + lat + " lon=" + lon);
                        Location l = null;
                        l = new Location("ZANavi Demo 001");
                        l.setLatitude(lat);
                        l.setLongitude(lon);
                        l.setBearing(0.0f);
                        l.setSpeed(0);
                        l.setAccuracy(4.0f); // accuracy 4 meters
                        // NavitVehicle.update_compass_heading(0.0f);
                        NavitVehicle.set_mock_location__fast(l);
                    } catch (Exception e) {
                    }

                    Message msg = new Message();
                    Bundle b = new Bundle();
                    b.putInt("Callback", 52);
                    b.putString("s", "45"); // speed in km/h of Demo-Vehicle
                    // b.putString("s", "20");

                    msg.setData(b);
                    NavitGraphics.callback_handler.sendMessage(msg);
                } catch (Exception e) {
                }
            }
        };
        demo_v_001.start();

        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 51);

        if (Navit.GFX_OVERSPILL) {
            b.putInt("x", (int) (NavitGraphics.Global_dpi_factor
                    * ((Navit.NG__map_main.view.getWidth() / 2) + NavitGraphics.mCanvasWidth_overspill)));
            b.putInt("y", (int) (NavitGraphics.Global_dpi_factor
                    * ((Navit.NG__map_main.view.getHeight() / 2) + NavitGraphics.mCanvasHeight_overspill)));
        } else {
            b.putInt("x", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getWidth() / 2));
            b.putInt("y", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getHeight() / 2));
        }
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);

        break;
    case 602:
        // DEBUG: toggle textview with spoken and translated string (to help with translation)
        try {
            if (NavitGraphics.NavitMsgTv2_.getVisibility() == View.VISIBLE) {
                NavitGraphics.NavitMsgTv2_.setVisibility(View.GONE);
                NavitGraphics.NavitMsgTv2_.setEnabled(false);
                NavitGraphics.NavitMsgTv2sc_.setVisibility(View.GONE);
                NavitGraphics.NavitMsgTv2sc_.setEnabled(false);
            } else {
                NavitGraphics.NavitMsgTv2sc_.setVisibility(View.VISIBLE);
                NavitGraphics.NavitMsgTv2sc_.setEnabled(true);
                NavitGraphics.NavitMsgTv2_.setVisibility(View.VISIBLE);
                NavitGraphics.NavitMsgTv2_.setEnabled(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case 603:
        // DEBUG: show all possible navigation commands (also translated)
        NavitGraphics.generate_all_speech_commands();
        break;
    case 604:
        // DEBUG: activate FAST driving demo vehicle and set position to screen center

        Navit.DemoVehicle = true;

        msg = new Message();

        b = new Bundle();
        b.putInt("Callback", 52);
        b.putString("s", "800"); // speed in ~km/h of Demo-Vehicle
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);

        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 51);
        if (Navit.GFX_OVERSPILL) {
            b.putInt("x", (int) (NavitGraphics.Global_dpi_factor
                    * ((Navit.NG__map_main.view.getWidth() / 2) + NavitGraphics.mCanvasWidth_overspill)));
            b.putInt("y", (int) (NavitGraphics.Global_dpi_factor
                    * ((Navit.NG__map_main.view.getHeight() / 2) + NavitGraphics.mCanvasHeight_overspill)));
        } else {
            b.putInt("x", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getWidth() / 2));
            b.putInt("y", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getHeight() / 2));
        }
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);

        try {
            float lat = 0;
            float lon = 0;

            lat = 0;
            lon = 0;
            String lat_lon = "";
            if (Navit.GFX_OVERSPILL) {
                lat_lon = NavitGraphics.CallbackGeoCalc(1,
                        NavitGraphics.Global_dpi_factor
                                * (NG__map_main.view.getWidth() / 2 + NavitGraphics.mCanvasWidth_overspill),
                        NavitGraphics.Global_dpi_factor
                                * (NG__map_main.view.getHeight() / 2 + NavitGraphics.mCanvasHeight_overspill));
            } else {
                lat_lon = NavitGraphics.CallbackGeoCalc(1,
                        NavitGraphics.Global_dpi_factor * NG__map_main.view.getWidth() / 2,
                        NavitGraphics.Global_dpi_factor * NG__map_main.view.getHeight() / 2);
            }

            String tmp[] = lat_lon.split(":", 2);
            //System.out.println("tmp=" + lat_lon);
            lat = Float.parseFloat(tmp[0]);
            lon = Float.parseFloat(tmp[1]);
            //System.out.println("ret=" + lat_lon + " lat=" + lat + " lon=" + lon);
            Location l = null;
            l = new Location("ZANavi Demo 001");
            l.setLatitude(lat);
            l.setLongitude(lon);
            l.setBearing(0.0f);
            l.setSpeed(0);
            l.setAccuracy(4.0f); // accuracy 4 meters
            // NavitVehicle.update_compass_heading(0.0f);
            NavitVehicle.set_mock_location__fast(l);
        } catch (Exception e) {
        }

        break;
    case 605:
        // DEBUG: toggle Routgraph on/off
        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 71);
        Navit.Routgraph_enabled = 1 - Navit.Routgraph_enabled;
        b.putString("s", "" + Navit.Routgraph_enabled);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        break;
    case 606:
        // DEBUG: spill contents of index file(s)
        msg = new Message();
        b = new Bundle();
        b.putInt("Callback", 83);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
        break;
    case 607:
        export_map_points_to_sdcard();
        break;
    case 608:
        import_map_points_from_sdcard();
        break;
    case 609:
        // run yaml tests
        new Thread() {
            public void run() {
                try {
                    ZANaviDebugReceiver.DR_run_all_yaml_tests();
                } catch (Exception e) {
                }
            }
        }.start();
        break;
    case 99:
        try {
            if (wl_navigating != null) {
                //if (wl_navigating.isHeld())
                //{
                wl_navigating.release();
                Log.e("Navit", "WakeLock Nav: release 1");
                //}
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        // exit
        this.onPause();
        this.onStop();
        this.exit();
        //msg = new Message();
        //b = new Bundle();
        //b.putInt("Callback", 5);
        //b.putString("cmd", "quit();");
        //msg.setData(b);
        //N_NavitGraphics.callback_handler.sendMessage(msg);
        break;
    }
    return true;
}

From source file:com.zoffcc.applications.zanavi.Navit.java

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.e("Navit", "onActivityResult");
    switch (requestCode) {
    case Navit.ZANaviIntro_id:
        try {/*from www .  j  a v  a  2 s .c  o m*/
            PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(PREF_KEY_FIRST_START, false)
                    .commit();
        } catch (Exception e) {
            e.printStackTrace();
        }

    case Navit.NavitGPXConvChooser_id:
        try {
            Log.e("Navit", "onActivityResult 001");
            if (resultCode == AppCompatActivity.RESULT_OK) {
                String in_ = data.getStringExtra(FileDialog.RESULT_PATH);
                convert_gpx_file_real(in_);
            }
        } catch (Exception e77) {
            e77.printStackTrace();
        }
        break;

    case NavitReplayFileConvChooser_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                final String in_ = data.getStringExtra(FileDialog.RESULT_PATH);
                final Thread replay_gpx_file_001 = new Thread() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(2000); // wait 2 seconds before we start
                            String date = new SimpleDateFormat("yyyy-MM-dd_HHmmss", Locale.GERMAN)
                                    .format(new Date());
                            ZANaviDebugReceiver.DR_replay_gps_file(in_, date);
                        } catch (Exception e) {
                        }
                    }
                };
                replay_gpx_file_001.start();
            }
        } catch (Exception e77) {
            e77.printStackTrace();
        }
        break;

    case Navit.NavitDeleteSecSelectMap_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                if (!data.getStringExtra("selected_id")
                        .equalsIgnoreCase(NavitDeleteSelectMapActivity.CANCELED_ID)) {
                    System.out.println("Global_Location_update_not_allowed = 1");
                    Navit.Global_Location_update_not_allowed = 1; // dont allow location updates now!

                    // remove all sdcard maps
                    Message msg = new Message();
                    Bundle b = new Bundle();
                    b.putInt("Callback", 19);
                    msg.setData(b);
                    NavitGraphics.callback_handler.sendMessage(msg);

                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                    }

                    Log.d("Navit", "delete map id=" + Integer.parseInt(data.getStringExtra("selected_id")));
                    String map_full_line = NavitMapDownloader.OSM_MAP_NAME_ondisk_ORIG_LIST[Integer
                            .parseInt(data.getStringExtra("selected_id"))];
                    Log.d("Navit", "delete map full line=" + map_full_line);

                    String del_map_name = MAP_FILENAME_PATH + map_full_line.split(":", 2)[0];
                    System.out.println("del map file :" + del_map_name);
                    // remove from cat file
                    NavitMapDownloader.remove_from_cat_file(map_full_line);
                    // remove from disk
                    File del_map_name_file = new File(del_map_name);
                    del_map_name_file.delete();
                    for (int jkl = 1; jkl < 51; jkl++) {
                        File del_map_name_fileSplit = new File(del_map_name + "." + String.valueOf(jkl));
                        del_map_name_fileSplit.delete();
                    }
                    // also remove index file
                    File del_map_name_file_idx = new File(del_map_name + ".idx");
                    del_map_name_file_idx.delete();
                    // remove also any MD5 files for this map that may be on disk
                    try {
                        String tmp = map_full_line.split(":", 2)[1];
                        if (!tmp.equals(NavitMapDownloader.MAP_URL_NAME_UNKNOWN)) {
                            tmp = tmp.replace("*", "");
                            tmp = tmp.replace("/", "");
                            tmp = tmp.replace("\\", "");
                            tmp = tmp.replace(" ", "");
                            tmp = tmp.replace(">", "");
                            tmp = tmp.replace("<", "");
                            System.out
                                    .println("removing md5 file:" + Navit.MAPMD5_FILENAME_PATH + tmp + ".md5");
                            File md5_final_filename = new File(Navit.MAPMD5_FILENAME_PATH + tmp + ".md5");
                            md5_final_filename.delete();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    // remove map, and zoom out
                    // ***** onStop();
                    // ***** onCreate(getIntent().getExtras());

                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                    }

                    // add all sdcard maps
                    msg = new Message();
                    b = new Bundle();
                    b.putInt("Callback", 20);
                    msg.setData(b);
                    NavitGraphics.callback_handler.sendMessage(msg);

                    final Thread zoom_to_route_004 = new Thread() {
                        int wait = 1;
                        int count = 0;
                        int max_count = 60;

                        @Override
                        public void run() {
                            while (wait == 1) {
                                try {
                                    if ((NavitGraphics.navit_route_status == 17)
                                            || (NavitGraphics.navit_route_status == 33)) {
                                        zoom_to_route();
                                        wait = 0;
                                    } else {
                                        wait = 1;
                                    }

                                    count++;
                                    if (count > max_count) {
                                        wait = 0;
                                    } else {
                                        Thread.sleep(400);
                                    }
                                } catch (Exception e) {
                                }
                            }
                        }
                    };
                    zoom_to_route_004.start();

                    System.out.println("Global_Location_update_not_allowed = 0");
                    Navit.Global_Location_update_not_allowed = 0; // DO allow location updates now!
                }
            }
        } catch (Exception e) {
            Log.d("Navit", "error on onActivityResult 3");
            e.printStackTrace();
        }
        break;
    case Navit.NavitDownloaderPriSelectMap_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                try {
                    // Log.d("Navit", "PRI id=" + Integer.parseInt(data.getStringExtra("selected_id")));
                    // set map id to download
                    Navit.download_map_id = NavitMapDownloader.OSM_MAP_NAME_ORIG_ID_LIST[Integer
                            .parseInt(data.getStringExtra("selected_id"))];
                    // show the map download progressbar, and download the map
                    if (Navit.download_map_id > -1) {
                        // --------- start a map download (highest level) ---------
                        // --------- start a map download (highest level) ---------
                        // --------- start a map download (highest level) ---------
                        // showDialog(Navit.MAPDOWNLOAD_PRI_DIALOG); // old method in app

                        // new method in service
                        Message msg = progress_handler.obtainMessage();
                        // Bundle b = new Bundle();
                        msg.what = 22;
                        progress_handler.sendMessage(msg);

                        // show license for OSM maps
                        //. TRANSLATORS: please only translate the first word "Map data" and leave the other words in english
                        Toast.makeText(getApplicationContext(), "Map data (c) OpenStreetMap contributors",
                                Toast.LENGTH_SHORT).show();
                        // --------- start a map download (highest level) ---------
                        // --------- start a map download (highest level) ---------
                        // --------- start a map download (highest level) ---------
                    }
                } catch (NumberFormatException e) {
                    Log.d("Navit", "NumberFormatException selected_id");
                }
            } else {
                // user pressed back key
            }
        } catch (Exception e) {
            Log.d("Navit", "error on onActivityResult");
            e.printStackTrace();
        }
        break;
    case Navit.NavitDownloaderSecSelectMap_id: // unused!!! unused!!! unused!!! unused!!! unused!!!
        break;
    case ZANaviVoiceInput_id:
        if (resultCode == AppCompatActivity.RESULT_OK) {
            try {
                String addr = data.getStringExtra("address_string");
                double lat = data.getDoubleExtra("lat", 0);
                double lon = data.getDoubleExtra("lon", 0);
                String hn = "";

                // save last address entry string
                p.PREF_StreetSearchStrings = pushToArray(p.PREF_StreetSearchStrings, addr,
                        STREET_SEARCH_STRINGS_SAVE_COUNT);
                saveArray(p.PREF_StreetSearchStrings, "xxStrtSrhStrxx", STREET_SEARCH_STRINGS_SAVE_COUNT);

                Boolean partial_match = true;
                Navit.use_index_search = false;

                Navit_last_address_partial_match = partial_match;
                Navit_last_address_search_string = addr;
                Navit_last_address_hn_string = hn;

                Navit_last_address_full_file_search = false;

                // clear results
                Navit.NavitAddressResultList_foundItems.clear();
                Navit.Navit_Address_Result_double_index.clear();
                Navit.NavitSearchresultBarIndex = -1;
                Navit.NavitSearchresultBar_title = "";
                Navit.NavitSearchresultBar_text = "";
                Navit.search_results_towns = 0;
                Navit.search_results_streets = 0;
                Navit.search_results_streets_hn = 0;
                Navit.search_results_poi = 0;

                if (addr.equals("")) {
                    // empty search string entered
                    Toast.makeText(getApplicationContext(), Navit.get_text("No search string"),
                            Toast.LENGTH_LONG).show(); //TRANS
                } else {
                    System.out.println("Global_Location_update_not_allowed = 1");
                    Navit.Global_Location_update_not_allowed = 1; // dont allow location updates now!

                    // --> this still does the search // google_online_search_and_set_destination(addr);
                    result_set_destination(lat, lon, addr);

                    System.out.println("Global_Location_update_not_allowed = 0");
                    Navit.Global_Location_update_not_allowed = 0; // DO allow location updates now!
                }

            } catch (Exception e) {

            }
        }
        break;
    case NavitAddressSearch_id_online:
    case NavitAddressSearch_id_offline:
        Log.e("Navit", "NavitAddressSearch_id_:001");
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                try {
                    String addr = data.getStringExtra("address_string");
                    String hn = "";
                    try {
                        // only from offline mask!
                        hn = data.getStringExtra("hn_string");
                    } catch (Exception e) {
                        hn = "";
                    }

                    // save last address entry string
                    p.PREF_StreetSearchStrings = pushToArray(p.PREF_StreetSearchStrings, addr,
                            STREET_SEARCH_STRINGS_SAVE_COUNT);
                    saveArray(p.PREF_StreetSearchStrings, "xxStrtSrhStrxx", STREET_SEARCH_STRINGS_SAVE_COUNT);

                    Boolean partial_match = false;
                    try {
                        // only from offline mask!
                        partial_match = data.getStringExtra("partial_match").equals("1");
                    } catch (Exception e) {
                    }

                    Message msg2 = new Message();
                    Bundle b2 = new Bundle();
                    b2.putInt("Callback", 44);
                    msg2.setData(b2);
                    NavitGraphics.callback_handler.sendMessage(msg2);

                    if (requestCode == NavitAddressSearch_id_offline) {
                        search_hide_duplicates = false;
                        try {
                            Boolean hide_dup = data.getStringExtra("hide_dup").equals("1");
                            if (hide_dup) {
                                search_hide_duplicates = true;
                                Message msg = new Message();
                                Bundle b = new Bundle();
                                b.putInt("Callback", 45);
                                msg.setData(b);
                                NavitGraphics.callback_handler.sendMessage(msg);
                            }
                        } catch (Exception e) {
                        }

                        if (Navit.CIDEBUG == 0) {
                            Navit.use_index_search = Navit.allow_use_index_search();
                        }
                    } else {
                        Navit.use_index_search = false;
                    }

                    Navit_last_address_partial_match = partial_match;
                    Navit_last_address_search_string = addr;
                    Navit_last_address_hn_string = hn;

                    try {
                        // only from offline mask!
                        Navit_last_address_full_file_search = data.getStringExtra("full_file_search")
                                .equals("1");
                    } catch (Exception e) {
                        Navit_last_address_full_file_search = false;
                    }

                    try {
                        // only from offline mask!
                        Navit_last_address_search_country_iso2_string = data
                                .getStringExtra("address_country_iso2");

                        Navit_last_address_search_country_flags = data.getIntExtra("address_country_flags", 3);
                        // System.out.println("Navit_last_address_search_country_flags=" + Navit_last_address_search_country_flags);
                        Navit_last_address_search_country_id = data.getIntExtra("search_country_id", 1); // default=*ALL*
                        p.PREF_search_country = Navit_last_address_search_country_id;
                        setPrefs_search_country();
                    } catch (Exception e) {

                    }

                    // clear results
                    Navit.NavitAddressResultList_foundItems.clear();
                    Navit.Navit_Address_Result_double_index.clear();
                    Navit.NavitSearchresultBarIndex = -1;
                    Navit.NavitSearchresultBar_title = "";
                    Navit.NavitSearchresultBar_text = "";
                    Navit.search_results_towns = 0;
                    Navit.search_results_streets = 0;
                    Navit.search_results_streets_hn = 0;
                    Navit.search_results_poi = 0;

                    if (addr.equals("")) {
                        // empty search string entered
                        Toast.makeText(getApplicationContext(), Navit.get_text("No search string entered"),
                                Toast.LENGTH_LONG).show(); //TRANS
                    } else {
                        System.out.println("Global_Location_update_not_allowed = 1");
                        Navit.Global_Location_update_not_allowed = 1; // dont allow location updates now!

                        if (requestCode == NavitAddressSearch_id_online) {
                            // online googlemaps search
                            try {
                                Log.e("Navit", "call-11: (1)num " + Navit.SEARCHRESULTS_WAIT_DIALOG);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }

                            System.out.println("dialog -- 11:003");
                            System.out.println("online googlemaps search");
                            Message msg = progress_handler.obtainMessage();
                            Bundle b = new Bundle();
                            msg.what = 11;
                            b.putInt("dialog_num", Navit.SEARCHRESULTS_WAIT_DIALOG);
                            msg.setData(b);
                            progress_handler.sendMessage(msg);
                        } else if (requestCode == NavitAddressSearch_id_offline) {
                            // offline binfile search

                            if (!Navit.use_index_search) {
                                try {
                                    Log.e("Navit",
                                            "call-11: (2)num " + Navit.SEARCHRESULTS_WAIT_DIALOG_OFFLINE);
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }

                                // show dialog, and start search for the results
                                // make it indirect, to give our activity a chance to startup
                                // (remember we come straight from another activity and ours is still paused!)
                                System.out.println("dialog -- 11:004");
                                Message msg = progress_handler.obtainMessage();
                                Bundle b = new Bundle();
                                msg.what = 11;
                                b.putInt("dialog_num", Navit.SEARCHRESULTS_WAIT_DIALOG_OFFLINE);
                                msg.setData(b);
                                progress_handler.sendMessage(msg);
                            }
                        }
                    }
                } catch (NumberFormatException e) {
                    Log.d("Navit", "NumberFormatException selected_id");
                }
            } else {
                // user pressed back key
                Log.e("Navit", "NavitAddressSearch_id_:900");
            }
        } catch (Exception e) {
            Log.d("Navit", "error on onActivityResult");
            e.printStackTrace();
        }
        Log.e("Navit", "NavitAddressSearch_id_:999");
        break;
    case Navit.NavitAddressResultList_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                try {
                    if (data.getStringExtra("what").equals("view")) {
                        // get the coords for the destination
                        int destination_id = Integer.parseInt(data.getStringExtra("selected_id"));

                        // save last address entry string
                        String addr = data.getStringExtra("address_string");
                        p.PREF_StreetSearchStrings = pushToArray(p.PREF_StreetSearchStrings, addr,
                                STREET_SEARCH_STRINGS_SAVE_COUNT);
                        saveArray(p.PREF_StreetSearchStrings, "xxStrtSrhStrxx",
                                STREET_SEARCH_STRINGS_SAVE_COUNT);

                        try {
                            Navit.follow_button_off();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }

                        System.out.println("XSOM:009");

                        if (Navit.use_index_search) {
                            show_geo_on_screen_with_zoom_and_delay(
                                    (float) Navit.transform_to_geo_lat(
                                            Navit.NavitAddressResultList_foundItems.get(destination_id).lat),
                                    (float) Navit.transform_to_geo_lon(
                                            Navit.NavitAddressResultList_foundItems.get(destination_id).lon));
                        } else {
                            show_geo_on_screen_with_zoom_and_delay(
                                    Navit.NavitAddressResultList_foundItems.get(destination_id).lat,
                                    Navit.NavitAddressResultList_foundItems.get(destination_id).lon);
                        }
                    } else if (data.getStringExtra("what").equals("set")) {
                        Log.d("Navit", "adress result list id="
                                + Integer.parseInt(data.getStringExtra("selected_id")));

                        // save last address entry string
                        String addr = data.getStringExtra("address_string");
                        p.PREF_StreetSearchStrings = pushToArray(p.PREF_StreetSearchStrings, addr,
                                STREET_SEARCH_STRINGS_SAVE_COUNT);
                        saveArray(p.PREF_StreetSearchStrings, "xxStrtSrhStrxx",
                                STREET_SEARCH_STRINGS_SAVE_COUNT);

                        // get the coords for the destination
                        int destination_id = Integer.parseInt(data.getStringExtra("selected_id"));

                        String _addr = "";
                        double _lat = 0;
                        double _lon = 0;

                        // (float) Navit.transform_to_geo_lat(Navit.NavitAddressResultList_foundItems.get(destination_id).lat), (float) Navit.transform_to_geo_lon(Navit.NavitAddressResultList_foundItems.get(destination_id).lon)
                        // (float) Navit.transform_to_geo_lat(Navit.NavitAddressResultList_foundItems.get(destination_id).lat)

                        // ok now set target
                        try {
                            if (Navit.use_index_search) {
                                _addr = Navit.NavitAddressResultList_foundItems.get(destination_id).addr;
                                _lat = Navit.transform_to_geo_lat(
                                        Navit.NavitAddressResultList_foundItems.get(destination_id).lat);
                                _lon = Navit.transform_to_geo_lon(
                                        Navit.NavitAddressResultList_foundItems.get(destination_id).lon);
                                //Navit.remember_destination(Navit.NavitAddressResultList_foundItems.get(destination_id).addr, (float) Navit.transform_to_geo_lat(Navit.NavitAddressResultList_foundItems.get(destination_id).lat), (float) Navit.transform_to_geo_lon(Navit.NavitAddressResultList_foundItems.get(destination_id).lon));
                            } else {
                                _addr = Navit.NavitAddressResultList_foundItems.get(destination_id).addr;
                                _lat = Navit.NavitAddressResultList_foundItems.get(destination_id).lat;
                                _lon = Navit.NavitAddressResultList_foundItems.get(destination_id).lon;
                                //Navit.remember_destination(Navit.NavitAddressResultList_foundItems.get(destination_id).addr, Navit.NavitAddressResultList_foundItems.get(destination_id).lat, Navit.NavitAddressResultList_foundItems.get(destination_id).lon);
                            }
                            // save points
                            //write_map_points();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        route_wrapper(_addr, 0, 0, false, _lat, _lon, true);

                        final Thread zoom_to_route_005 = new Thread() {
                            int wait = 1;
                            int count = 0;
                            int max_count = 60;

                            @Override
                            public void run() {
                                while (wait == 1) {
                                    try {
                                        if ((NavitGraphics.navit_route_status == 17)
                                                || (NavitGraphics.navit_route_status == 33)) {
                                            zoom_to_route();
                                            wait = 0;
                                        } else {
                                            wait = 1;
                                        }

                                        count++;
                                        if (count > max_count) {
                                            wait = 0;
                                        } else {
                                            Thread.sleep(400);
                                        }
                                    } catch (Exception e) {
                                    }
                                }
                            }
                        };
                        zoom_to_route_005.start();
                        // zoom_to_route();

                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------
                        if (p.PREF_enable_debug_write_gpx) {
                            write_route_to_gpx_file();
                        }
                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------

                        try {
                            Navit.follow_button_on();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }

                        //                     if (Navit.use_index_search)
                        //                     {
                        //                        show_geo_on_screen((float) Navit.transform_to_geo_lat(Navit.NavitAddressResultList_foundItems.get(destination_id).lat), (float) Navit.transform_to_geo_lon(Navit.NavitAddressResultList_foundItems.get(destination_id).lon));
                        //                     }
                        //                     else
                        //                     {
                        //                        show_geo_on_screen(Navit.NavitAddressResultList_foundItems.get(destination_id).lat, Navit.NavitAddressResultList_foundItems.get(destination_id).lon);
                        //                     }
                    } else {
                        // -- nothing --
                    }
                } catch (NumberFormatException e) {
                    Log.d("Navit", "NumberFormatException selected_id");
                } catch (Exception e) {

                }
            } else {
                // user pressed back key
            }
        } catch (Exception e) {
            Log.d("Navit", "error on onActivityResult");
            e.printStackTrace();
        }
        break;
    case NavitAddressSearch_id_gmaps:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case NavitAddressSearch_id_sharedest:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {

            }
            Log.d("Navit", "sharedest: finished");
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case NavitGeoCoordEnter_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                // lat lon enter activitiy result

                try {
                    if (data.getStringExtra("what").equals("view")) {
                        // get the coords for the destination
                        float lat = Float.parseFloat(data.getStringExtra("lat"));
                        float lon = Float.parseFloat(data.getStringExtra("lon"));

                        // Log.d("Navit", "coord picker: " + lat);
                        // Log.d("Navit", "coord picker: " + lon);

                        // set nice zoomlevel before we show destination
                        //                     int zoom_want = Navit_SHOW_DEST_ON_MAP_ZOOMLEVEL;
                        //                     //
                        //                     Message msg = new Message();
                        //                     Bundle b = new Bundle();
                        //                     b.putInt("Callback", 33);
                        //                     b.putString("s", Integer.toString(zoom_want));
                        //                     msg.setData(b);
                        //                     try
                        //                     {
                        //                        N_NavitGraphics.callback_handler.sendMessage(msg);
                        //                        Navit.GlobalScaleLevel = zoom_want;
                        //                     }
                        //                     catch (Exception e)
                        //                     {
                        //                        e.printStackTrace();
                        //                     }
                        //                     if (PREF_save_zoomlevel)
                        //                     {
                        //                        setPrefs_zoomlevel();
                        //                     }
                        // set nice zoomlevel before we show destination

                        try {
                            Navit.follow_button_off();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }

                        show_geo_on_screen(lat, lon);
                    } else {
                        // get the coords for the destination
                        float lat = Float.parseFloat(data.getStringExtra("lat"));
                        float lon = Float.parseFloat(data.getStringExtra("lat"));
                        String dest_name = "manual coordinates";

                        // ok now set target
                        try {
                            dest_name = NavitGraphics.CallbackGeoCalc(8, lat, lon);
                            if ((dest_name.equals(" ")) || (dest_name == null)) {
                                dest_name = "manual coordinates";
                            }
                            //                        Navit.remember_destination(dest_name, lat, lon);
                            //                        // save points
                            //                        write_map_points();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        //                     // DEBUG: clear route rectangle list
                        //                     NavitGraphics.route_rects.clear();
                        //
                        //                     if (NavitGraphics.navit_route_status == 0)
                        //                     {
                        //                        Navit.destination_set();
                        //
                        //                        Message msg = new Message();
                        //                        Bundle b = new Bundle();
                        //                        b.putInt("Callback", 3);
                        //                        b.putString("lat", String.valueOf(lat));
                        //                        b.putString("lon", String.valueOf(lon));
                        //                        b.putString("q", dest_name);
                        //                        msg.setData(b);
                        //                        NavitGraphics.callback_handler.sendMessage(msg);
                        //                     }
                        //                     else
                        //                     {
                        //                        Message msg = new Message();
                        //                        Bundle b = new Bundle();
                        //                        b.putInt("Callback", 48);
                        //                        b.putString("lat", String.valueOf(lat));
                        //                        b.putString("lon", String.valueOf(lon));
                        //                        b.putString("q", dest_name);
                        //                        msg.setData(b);
                        //                        NavitGraphics.callback_handler.sendMessage(msg);
                        //                     }
                        //

                        route_wrapper(dest_name, 0, 0, false, lat, lon, true);

                        final Thread zoom_to_route_006 = new Thread() {
                            int wait = 1;
                            int count = 0;
                            int max_count = 60;

                            @Override
                            public void run() {
                                while (wait == 1) {
                                    try {
                                        if ((NavitGraphics.navit_route_status == 17)
                                                || (NavitGraphics.navit_route_status == 33)) {
                                            zoom_to_route();
                                            wait = 0;
                                        } else {
                                            wait = 1;
                                        }

                                        count++;
                                        if (count > max_count) {
                                            wait = 0;
                                        } else {
                                            Thread.sleep(400);
                                        }
                                    } catch (Exception e) {
                                    }
                                }
                            }
                        };
                        zoom_to_route_006.start();
                        // zoom_to_route();

                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------
                        if (p.PREF_enable_debug_write_gpx) {
                            write_route_to_gpx_file();
                        }
                        // ---------- DEBUG: write route to file ----------
                        // ---------- DEBUG: write route to file ----------

                        try {
                            Navit.follow_button_on();
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }

                        // show_geo_on_screen(lat, lon);
                    }
                } catch (NumberFormatException e) {
                    Log.d("Navit", "NumberFormatException selected_id");
                } catch (Exception e) {

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    case NavitRecentDest_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                Log.d("Navit", "recent dest id=" + Integer.parseInt(data.getStringExtra("selected_id")));
                // get the coords for the destination
                int destination_id = Integer.parseInt(data.getStringExtra("selected_id"));

                if (data.getStringExtra("what").equals("view")) {
                    try {
                        Navit.follow_button_off();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }

                    float lat = Navit.map_points.get(destination_id).lat;
                    float lon = Navit.map_points.get(destination_id).lon;
                    show_geo_on_screen_with_zoom_and_delay(lat, lon, 150);
                } else {
                    // ok now set target
                    String dest_name = Navit.map_points.get(destination_id).point_name;
                    float lat = Navit.map_points.get(destination_id).lat;
                    float lon = Navit.map_points.get(destination_id).lon;

                    // System.out.println("XXXXXX:" + lat + " " + lon);

                    route_wrapper(dest_name, 0, 0, false, lat, lon, true);

                    final Thread zoom_to_route_007 = new Thread() {
                        int wait = 1;
                        int count = 0;
                        int max_count = 60;

                        @Override
                        public void run() {
                            while (wait == 1) {
                                try {
                                    if ((NavitGraphics.navit_route_status == 17)
                                            || (NavitGraphics.navit_route_status == 33)) {
                                        zoom_to_route();
                                        wait = 0;
                                    } else {
                                        wait = 1;
                                    }

                                    count++;
                                    if (count > max_count) {
                                        wait = 0;
                                    } else {
                                        Thread.sleep(400);
                                    }
                                } catch (Exception e) {
                                }
                            }
                        }
                    };
                    zoom_to_route_007.start();

                    // ---------- DEBUG: write route to file ----------
                    // ---------- DEBUG: write route to file ----------
                    // ---------- DEBUG: write route to file ----------
                    if (p.PREF_enable_debug_write_gpx) {
                        write_route_to_gpx_file();
                    }
                    // ---------- DEBUG: write route to file ----------
                    // ---------- DEBUG: write route to file ----------

                    try {
                        Navit.follow_button_on();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }

                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;

    case NavitSendFeedback_id:
        try {
            if (resultCode == AppCompatActivity.RESULT_OK) {
                String feedback_text = data.getStringExtra("feedback_text");

                String subject_d_version = "";
                if (Navit_DonateVersion_Installed) {
                    subject_d_version = subject_d_version + "D,";
                }

                if (Navit_Largemap_DonateVersion_Installed) {
                    subject_d_version = subject_d_version + "L,";
                }

                try {
                    int rl = get_reglevel();

                    if (rl > 0) {
                        subject_d_version = "U" + rl + ",";
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                String FD_addon = "";
                if (FDBL) {
                    FD_addon = ",FD";
                }

                sendEmail("feedback@zanavi.cc", "ZANavi Feedback (v:" + subject_d_version + FD_addon
                        + NavitAppVersion + " a:" + android.os.Build.VERSION.SDK + ")", feedback_text);
            }
        } catch (Exception e) {
            e.printStackTrace();
            Toast.makeText(getApplicationContext(), Navit.get_text("there was a problem with sending feedback"),
                    Toast.LENGTH_SHORT).show(); //TRANS
        }
        break;

    default:
        Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode);
        try {
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
            // ---------- what is this doing ????? ----------
        } catch (Exception e) {
            e.printStackTrace();
        }
        break;
    }
    Log.e("Navit", "onActivityResult finished");
}

From source file:com.zoffcc.applications.zanavi.Navit.java

@SuppressLint("NewApi")
@Override//from  ww w  . j  ava  2 s. co  m
public void onResume() {
    // if (Navit.METHOD_DEBUG) Navit.my_func_name(0);

    // System.gc();
    super.onResume();

    //      // --- alive timestamp ---
    //      app_status_lastalive = System.currentTimeMillis();
    //      System.out.println("app_status_string set:[onResume]:app_status_lastalive=" + app_status_lastalive);
    //      PreferenceManager.getDefaultSharedPreferences(this).edit().putLong(PREF_KEY_LASTALIVE, app_status_lastalive).commit();
    //      // --- alive timestamp ---

    // hide main progress bar ------------
    if (Navit.progressbar_main_activity.getVisibility() == View.VISIBLE) {
        Navit.progressbar_main_activity.setProgress(0);
        Navit.progressbar_main_activity.setVisibility(View.GONE);
    }
    // hide main progress bar ------------

    try {
        sensorManager.registerListener(lightSensorEventListener, lightSensor, (int) (8 * 1000000)); // updates approx. every 8 seconds
    } catch (Exception e) {
    }

    // get the intent fresh !! ----------
    startup_intent = this.getIntent();
    // get the intent fresh !! ----------

    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    try {
        intro_flag_nomaps = false;
        if (!have_maps_installed()) {
            if ((!NavitMapDownloader.download_active) && (!NavitMapDownloader.download_active_start)) {
                intro_flag_nomaps = true;
            }
        }
    } catch (Exception e) {
    }

    try {
        intro_flag_indexmissing = false;
        allow_use_index_search();
        if (Navit_index_on_but_no_idx_files) {
            if (!NavitMapDownloader.download_active_start) {
                intro_flag_indexmissing = true;
            }
        }

    } catch (Exception e) {
    }

    intro_flag_firststart = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PREF_KEY_FIRST_START,
            true);
    if (intro_flag_firststart) {
        intro_flag_update = false;
    }

    if (EasyPermissions.hasPermissions(this, perms)) {
        // have permissions!
        intro_flag_permissions = false;
    } else {
        // ask for permissions
        intro_flag_permissions = true;
    }

    // only show in onCreate() ------
    //      if (intro_show_count > 0)
    //      {
    //         intro_flag_info = false;
    //         intro_flag_firststart = false;
    //         intro_flag_update = false;
    //      }
    // only show in onCreate() ------

    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------

    // -------------- INTRO --------------
    // -------------- INTRO --------------
    // -------------- INTRO --------------
    if (Navit.CIDEBUG == 0) // -MAT-INTRO-
    {
        //         intro_flag_nomaps = true;
        //         intro_flag_info = true;
        //         intro_flag_firststart = false;
        //         intro_flag_update = false;
        //         intro_flag_indexmissing = false;
        //        intro_flag_crash = true;

        if (intro_flag_crash || intro_flag_firststart || intro_flag_indexmissing || intro_flag_info
                || intro_flag_nomaps || intro_flag_permissions || intro_flag_update) {

            System.out.println("flags=" + "intro_flag_crash:" + intro_flag_crash + " intro_flag_firststart:"
                    + intro_flag_firststart + " intro_flag_indexmissing:" + intro_flag_indexmissing
                    + " intro_flag_info:" + intro_flag_info + " intro_flag_nomaps:" + intro_flag_nomaps
                    + " intro_flag_permissions:" + intro_flag_permissions + " intro_flag_update:"
                    + intro_flag_update);

            // intro pages
            System.out.println("ZANaviMainIntroActivity:" + "start count=" + intro_show_count);
            intro_show_count++;
            Intent intent = new Intent(this, ZANaviMainIntroActivityStatic.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            startActivityForResult(intent, ZANaviIntro_id);
        }
    }
    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------

    PackageInfo pkgInfo;
    Navit_Plugin_001_Installed = false;
    try {
        // is the donate version installed?
        pkgInfo = getPackageManager().getPackageInfo("com.zoffcc.applications.zanavi_msg", 0);
        String sharedUserId = pkgInfo.sharedUserId;
        System.out.println("str nd=" + sharedUserId);
        if (sharedUserId.equals("com.zoffcc.applications.zanavi")) {
            System.out.println("##plugin 001##");
            Navit_Plugin_001_Installed = true;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    // ---- Intent dump ----
    // ---- Intent dump ----
    // ---- Intent dump ----
    // ---- Intent dump ----

    try {
        System.out.println("XXIIXX:111");
        String mid_str = this.getIntent().getExtras().getString("com.zoffcc.applications.zanavi.mid");
        System.out.println("XXIIXX:111a:mid_str=" + mid_str);

        if (mid_str != null) {
            if (mid_str.equals("201:UPDATE-APP")) {
                // a new ZANavi version is available, show something to the user here -------------------
                // a new ZANavi version is available, show something to the user here -------------------
                // a new ZANavi version is available, show something to the user here -------------------
                // a new ZANavi version is available, show something to the user here -------------------
                // a new ZANavi version is available, show something to the user here -------------------
                // a new ZANavi version is available, show something to the user here -------------------
            } else if (mid_str.startsWith("202:UPDATE-MAP:")) {
                System.out.println("need to update1:" + mid_str);
                System.out.println("need to update2:" + mid_str.substring(15));

                auto_start_update_map(mid_str.substring(15));
            }
        }

        System.out.println("XXIIXX:111b:mid_str=" + mid_str);
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("XXIIXX:111:EEEE");
    }

    try {
        System.out.println("XXIIXX:" + this.getIntent());
        Bundle bundle77 = this.getIntent().getExtras();
        System.out.println("XXIIXX:" + intent_flags_to_string(this.getIntent().getFlags()));
        if (bundle77 == null) {
            System.out.println("XXIIXX:" + "null");
        } else {
            for (String key : bundle77.keySet()) {
                Object value = bundle77.get(key);
                System.out.println("XXIIXX:"
                        + String.format("%s %s (%s)", key, value.toString(), value.getClass().getName()));
            }
        }
    } catch (Exception ee22) {
        String exst = Log.getStackTraceString(ee22);
        System.out.println("XXIIXX:ERR:" + exst);
    }
    // ---- Intent dump ----
    // ---- Intent dump ----
    // ---- Intent dump ----
    // ---- Intent dump ----

    is_paused = false;

    Navit_doubleBackToExitPressedOnce = false;

    app_window = getWindow();

    Log.e("Navit", "OnResume");

    while (Global_Init_Finished == 0) {
        Log.e("Navit", "OnResume:Global_Init_Finished==0 !!!!!");
        try {
            Thread.sleep(30, 0); // sleep
        } catch (InterruptedException e) {
        }
    }

    //InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    cwthr.NavitActivity2(1);

    try {
        NSp.resume_me();
    } catch (Exception e) {
        e.printStackTrace();
    }

    NavitVehicle.turn_on_sat_status();

    try {
        if (wl != null) {
            //            try
            //            {
            //               wl.release();
            //            }
            //            catch (Exception e2)
            //            {
            //            }
            wl.acquire();
            Log.e("Navit", "WakeLock: acquire 2");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    //Intent caller = this.getIntent();
    //System.out.println("A=" + caller.getAction() + " D=" + caller.getDataString());
    //System.out.println("C=" + caller.getComponent().flattenToString());

    if (unsupported) {
        class CustomListener implements View.OnClickListener {
            private final Dialog dialog;

            public CustomListener(Dialog dialog) {
                this.dialog = dialog;
            }

            @Override
            public void onClick(View v) {

                // Do whatever you want here

                // If you want to close the dialog, uncomment the line below
                //dialog.dismiss();
            }
        }

        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("WeltBild Tablet");
        dialog.setCancelable(false);
        dialog.setMessage("Your device is not supported!");
        dialog.show();
        //Button theButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
        //theButton.setOnClickListener(new CustomListener(dialog));
    }

    // reset "maps too old" flag
    Navit_maps_too_old = false;

    if (Navit_maps_loaded == false) {
        Navit_maps_loaded = true;
        // activate all maps
        Log.e("Navit", "**** LOAD ALL MAPS **** start");
        Message msg3 = new Message();
        Bundle b3 = new Bundle();
        b3.putInt("Callback", 20);
        msg3.setData(b3);
        NavitGraphics.callback_handler.sendMessage(msg3);
        Log.e("Navit", "**** LOAD ALL MAPS **** end");
    }

    try {
        NavitGraphics.no_maps_container.setVisibility(View.INVISIBLE);

        //         if (!have_maps_installed())
        //         {
        //            // System.out.println("MMMM=no maps installed");
        //            // show semi transparent box "no maps installed" ------------------
        //            // show semi transparent box "no maps installed" ------------------
        //            NavitGraphics.no_maps_container.setVisibility(View.VISIBLE);
        //            try
        //            {
        //               NavitGraphics.no_maps_container.setActivated(true);
        //            }
        //            catch (NoSuchMethodError e)
        //            {
        //            }
        //
        //            show_case_001();
        //
        //            // show semi transparent box "no maps installed" ------------------
        //            // show semi transparent box "no maps installed" ------------------
        //         }
        //         else
        //         {
        //            NavitGraphics.no_maps_container.setVisibility(View.INVISIBLE);
        //            try
        //            {
        //               NavitGraphics.no_maps_container.setActivated(false);
        //            }
        //            catch (NoSuchMethodError e)
        //            {
        //            }
        //         }
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // draw map no-async
        Message msg = new Message();
        Bundle b = new Bundle();
        b.putInt("Callback", 64);
        msg.setData(b);
        NavitGraphics.callback_handler.sendMessage(msg);
    } catch (Exception e) {
        e.printStackTrace();
    }

    String intent_data = null;
    try {
        //Log.e("Navit", "**9**A " + startup_intent.getAction());
        //Log.e("Navit", "**9**D " + startup_intent.getDataString());

        int type = 1; // default = assume it's a map coords intent

        try {
            String si = startup_intent.getDataString();
            String tmp2 = si.split(":", 2)[0];
            Log.e("Navit", "**9a**A " + startup_intent.getAction());
            Log.e("Navit", "**9a**D " + startup_intent.getDataString() + " " + tmp2);
            if (tmp2.equals("file")) {
                Log.e("Navit", "**9b**D " + startup_intent.getDataString() + " " + tmp2);
                if (si.toLowerCase().endsWith(".gpx")) {
                    Log.e("Navit", "**9c**D " + startup_intent.getDataString() + " " + tmp2);
                    type = 4;
                }
            }
        } catch (Exception e2) {
        }

        if (type != 4) {
            Bundle extras = startup_intent.getExtras();
            // System.out.println("DH:001");
            if (extras != null) {
                // System.out.println("DH:002");
                long l = extras.getLong("com.zoffcc.applications.zanavi.ZANAVI_INTENT_type");
                // System.out.println("DH:003 l=" + l);
                if (l != 0L) {
                    // System.out.println("DH:004");
                    if (l == Navit.NAVIT_START_INTENT_DRIVE_HOME) {
                        // System.out.println("DH:005");
                        type = 2; // call from drive-home-widget
                    }
                    // ok, now remove that key
                    extras.remove("com.zoffcc.applications.zanavi");
                    startup_intent.replaceExtras((Bundle) null);
                    // System.out.println("DH:006");
                }
            }
        }

        // ------------------------  BIG LOOP  ------------------------
        // ------------------------  BIG LOOP  ------------------------
        if (type == 2) {
            // drive home

            // check if we have a home location
            int home_id = find_home_point();

            if (home_id != -1) {
                Message msg7 = progress_handler.obtainMessage();
                Bundle b7 = new Bundle();
                msg7.what = 2; // long Toast message
                b7.putString("text", Navit.get_text("driving to Home Location")); //TRANS
                msg7.setData(b7);
                progress_handler.sendMessage(msg7);

                // clear any previous destinations
                Message msg2 = new Message();
                Bundle b2 = new Bundle();
                b2.putInt("Callback", 7);
                msg2.setData(b2);
                NavitGraphics.callback_handler.sendMessage(msg2);

                // set position to middle of screen -----------------------
                // set position to middle of screen -----------------------
                // set position to middle of screen -----------------------
                //               Message msg67 = new Message();
                //               Bundle b67 = new Bundle();
                //               b67.putInt("Callback", 51);
                //               b67.putInt("x", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getWidth() / 2));
                //               b67.putInt("y", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getHeight() / 2));
                //               msg67.setData(b67);
                //               N_NavitGraphics.callback_handler.sendMessage(msg67);
                // set position to middle of screen -----------------------
                // set position to middle of screen -----------------------
                // set position to middle of screen -----------------------

                try {
                    Thread.sleep(60);
                } catch (Exception e) {
                }

                Navit.destination_set();

                // set destination to home location
                //               String lat = String.valueOf(map_points.get(home_id).lat);
                //               String lon = String.valueOf(map_points.get(home_id).lon);
                //               String q = map_points.get(home_id).point_name;
                route_wrapper(map_points.get(home_id).point_name, 0, 0, false, map_points.get(home_id).lat,
                        map_points.get(home_id).lon, true);

                final Thread zoom_to_route_001 = new Thread() {
                    int wait = 1;
                    int count = 0;
                    int max_count = 60;

                    @Override
                    public void run() {
                        while (wait == 1) {
                            try {
                                if ((NavitGraphics.navit_route_status == 17)
                                        || (NavitGraphics.navit_route_status == 33)) {
                                    zoom_to_route();
                                    wait = 0;
                                } else {
                                    wait = 1;
                                }

                                count++;
                                if (count > max_count) {
                                    wait = 0;
                                } else {
                                    Thread.sleep(400);
                                }
                            } catch (Exception e) {
                            }
                        }
                    }
                };
                zoom_to_route_001.start();

                //               try
                //               {
                //                  show_geo_on_screen(Float.parseFloat(lat), Float.parseFloat(lon));
                //               }
                //               catch (Exception e2)
                //               {
                //                  e2.printStackTrace();
                //               }

                try {
                    Navit.follow_button_on();
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            } else {
                // no home location set
                Message msg = progress_handler.obtainMessage();
                Bundle b = new Bundle();
                msg.what = 2; // long Toast message
                b.putString("text", Navit.get_text("No Home Location set")); //TRANS
                msg.setData(b);
                progress_handler.sendMessage(msg);
            }
        } else if (type == 4) {

            if (startup_intent != null) {
                // Log.e("Navit", "**7**A " + startup_intent.getAction() + System.currentTimeMillis() + " " + Navit.startup_intent_timestamp);
                if (System.currentTimeMillis() <= Navit.startup_intent_timestamp + 4000L) {
                    Log.e("Navit", "**7**A " + startup_intent.getAction());
                    Log.e("Navit", "**7**D " + startup_intent.getDataString());
                    intent_data = startup_intent.getDataString();
                    try {
                        intent_data = java.net.URLDecoder.decode(intent_data, "UTF-8");
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }

                    // we consumed the intent, so reset timestamp value to avoid double consuming of event
                    Navit.startup_intent_timestamp = 0L;

                    if (intent_data != null) {
                        // file:///mnt/sdcard/zanavi_pos_recording_347834278.gpx
                        String tmp1;
                        tmp1 = intent_data.split(":", 2)[1].substring(2);

                        Log.e("Navit", "**7**f=" + tmp1);

                        // convert gpx file ---------------------
                        convert_gpx_file_real(tmp1);
                    }
                }
            }
        } else if (type == 1) {
            if (startup_intent != null) {
                if (System.currentTimeMillis() <= Navit.startup_intent_timestamp + 4000L) {
                    Log.e("Navit", "**2**A " + startup_intent.getAction());
                    Log.e("Navit", "**2**D " + startup_intent.getDataString());
                    intent_data = startup_intent.getDataString();
                    // we consumed the intent, so reset timestamp value to avoid double consuming of event
                    Navit.startup_intent_timestamp = 0L;

                    if (intent_data != null) {
                        // set position to middle of screen -----------------------
                        // set position to middle of screen -----------------------
                        // set position to middle of screen -----------------------
                        //                     Message msg67 = new Message();
                        //                     Bundle b67 = new Bundle();
                        //                     b67.putInt("Callback", 51);
                        //                     b67.putInt("x", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getWidth() / 2));
                        //                     b67.putInt("y", (int) (NavitGraphics.Global_dpi_factor * Navit.NG__map_main.view.getHeight() / 2));
                        //                     msg67.setData(b67);
                        //                     N_NavitGraphics.callback_handler.sendMessage(msg67);
                        // set position to middle of screen -----------------------
                        // set position to middle of screen -----------------------
                        // set position to middle of screen -----------------------
                    }
                } else {
                    Log.e("Navit", "timestamp for navigate_to expired! not using data");
                }
            }

            System.out.println("SUI:000a " + intent_data);

            if ((intent_data != null) && ((substring_without_ioobe(intent_data, 0, 18)
                    .equals("google.navigation:"))
                    || (substring_without_ioobe(intent_data, 0, 23).equals("http://maps.google.com/"))
                    || (substring_without_ioobe(intent_data, 0, 24).equals("https://maps.google.com/")))) {

                System.out.println("SUI:000b");

                // better use regex later, but for now to test this feature its ok :-)
                // better use regex later, but for now to test this feature its ok :-)

                // g: google.navigation:///?ll=49.4086,17.4855&entry=w&opt=
                // d: google.navigation:q=blabla-strasse # (this happens when you are offline, or from contacts)
                // b: google.navigation:q=48.25676,16.643
                // a: google.navigation:ll=48.25676,16.643&q=blabla-strasse
                // e: google.navigation:ll=48.25676,16.643&title=blabla-strasse
                //    sample: -> google.navigation:ll=48.026096,16.023993&title=N%C3%B6stach+43%2C+2571+N%C3%B6stach&entry=w
                //            -> google.navigation:ll=48.014413,16.005579&title=Hainfelder+Stra%C3%9Fe+44%2C+2571%2C+Austria&entry=w
                // f: google.navigation:ll=48.25676,16.643&...
                // c: google.navigation:ll=48.25676,16.643
                // h: http://maps.google.com/?q=48.222210,16.387058&z=16
                // i: https://maps.google.com/?q=48.222210,16.387058&z=16
                // i:,h: https://maps.google.com/maps/place?ftid=0x476d07075e933fc5:0xccbeba7fe1e3dd36&q=48.222210,16.387058&ui=maps_mini
                //
                // ??!!new??!!: http://maps.google.com/?cid=10549738100504591748&hl=en&gl=gb

                String lat;
                String lon;
                String q;

                String temp1 = null;
                String temp2 = null;
                String temp3 = null;
                boolean parsable = false;
                boolean unparsable_info_box = true;
                try {
                    intent_data = java.net.URLDecoder.decode(intent_data, "UTF-8");
                } catch (Exception e1) {
                    e1.printStackTrace();
                }

                // DEBUG
                // DEBUG
                // DEBUG
                // intent_data = "google.navigation:q=Wien Burggasse 27";
                // intent_data = "google.navigation:q=48.25676,16.643";
                // intent_data = "google.navigation:ll=48.25676,16.643&q=blabla-strasse";
                // intent_data = "google.navigation:ll=48.25676,16.643";
                // DEBUG
                // DEBUG
                // DEBUG

                try {
                    Log.e("Navit", "found DEBUG 1: " + intent_data.substring(0, 20));
                    Log.e("Navit", "found DEBUG 2: " + intent_data.substring(20, 22));
                    Log.e("Navit", "found DEBUG 3: " + intent_data.substring(20, 21));
                    Log.e("Navit", "found DEBUG 4: " + intent_data.split("&").length);
                    Log.e("Navit", "found DEBUG 4.1: yy"
                            + intent_data.split("&")[1].substring(0, 1).toLowerCase() + "yy");
                    Log.e("Navit", "found DEBUG 5: xx" + intent_data.split("&")[1] + "xx");
                } catch (Exception e) {
                    e.printStackTrace();
                }

                if (!Navit.NavitStartupAlreadySearching) {
                    if (intent_data.length() > 19) {
                        // if h: then show target
                        if (substring_without_ioobe(intent_data, 0, 23).equals("http://maps.google.com/")) {
                            Uri uri = Uri.parse(intent_data);
                            Log.e("Navit", "target found (h): " + uri.getQueryParameter("q"));
                            parsable = true;
                            intent_data = "google.navigation:ll=" + uri.getQueryParameter("q") + "&q=Target";
                        }
                        // if i: then show target
                        else if (substring_without_ioobe(intent_data, 0, 24)
                                .equals("https://maps.google.com/")) {
                            Uri uri = Uri.parse(intent_data);
                            Log.e("Navit", "target found (i): " + uri.getQueryParameter("q"));
                            parsable = true;
                            intent_data = "google.navigation:ll=" + uri.getQueryParameter("q") + "&q=Target";
                        }
                        // if d: then start target search
                        else if ((substring_without_ioobe(intent_data, 0, 20).equals("google.navigation:q="))
                                && ((!substring_without_ioobe(intent_data, 20, 21).equals('+'))
                                        && (!substring_without_ioobe(intent_data, 20, 21).equals('-'))
                                        && (!substring_without_ioobe(intent_data, 20, 22)
                                                .matches("[0-9][0-9]")))) {
                            Log.e("Navit", "target found (d): " + intent_data.split("q=", -1)[1]);
                            Navit.NavitStartupAlreadySearching = true;
                            start_targetsearch_from_intent(intent_data.split("q=", -1)[1]);
                            // dont use this here, already starting search, so set to "false"
                            parsable = false;
                            unparsable_info_box = false;
                        }
                        // if b: then remodel the input string to look like a:
                        else if (substring_without_ioobe(intent_data, 0, 20).equals("google.navigation:q=")) {
                            intent_data = "ll=" + intent_data.split("q=", -1)[1] + "&q=Target";
                            Log.e("Navit", "target found (b): " + intent_data);
                            parsable = true;
                        }
                        // if g: [google.navigation:///?ll=49.4086,17.4855&...] then remodel the input string to look like a:
                        else if (substring_without_ioobe(intent_data, 0, 25)
                                .equals("google.navigation:///?ll=")) {
                            intent_data = "google.navigation:ll="
                                    + intent_data.split("ll=", -1)[1].split("&", -1)[0] + "&q=Target";
                            Log.e("Navit", "target found (g): " + intent_data);
                            parsable = true;
                        }
                        // if e: then remodel the input string to look like a:
                        else if ((substring_without_ioobe(intent_data, 0, 21).equals("google.navigation:ll="))
                                && (intent_data.split("&").length > 1)
                                && (substring_without_ioobe(intent_data.split("&")[1], 0, 1).toLowerCase()
                                        .equals("f"))) {
                            int idx = intent_data.indexOf("&");
                            intent_data = substring_without_ioobe(intent_data, 0, idx) + "&q=Target";
                            Log.e("Navit", "target found (e): " + intent_data);
                            parsable = true;
                        }
                        // if f: then remodel the input string to look like a:
                        else if ((substring_without_ioobe(intent_data, 0, 21).equals("google.navigation:ll="))
                                && (intent_data.split("&").length > 1)) {
                            int idx = intent_data.indexOf("&");
                            intent_data = intent_data.substring(0, idx) + "&q=Target";
                            Log.e("Navit", "target found (f): " + intent_data);
                            parsable = true;
                        }
                        // already looks like a: just set flag
                        else if ((substring_without_ioobe(intent_data, 0, 21).equals("google.navigation:ll="))
                                && (intent_data.split("&q=").length > 1)) {
                            // dummy, just set the flag
                            Log.e("Navit", "target found (a): " + intent_data);
                            Log.e("Navit", "target found (a): " + intent_data.split("&q=").length);
                            parsable = true;
                        }
                        // if c: then remodel the input string to look like a:
                        else if ((substring_without_ioobe(intent_data, 0, 21).equals("google.navigation:ll="))
                                && (intent_data.split("&q=").length < 2)) {

                            intent_data = intent_data + "&q=Target";
                            Log.e("Navit", "target found (c): " + intent_data);
                            parsable = true;
                        }
                    }
                } else {
                    Log.e("Navit", "already started search from startup intent");
                    parsable = false;
                    unparsable_info_box = false;
                }

                if (parsable) {
                    // now string should be in form --> a:
                    // now split the parts off
                    temp1 = intent_data.split("&q=", -1)[0];
                    try {
                        temp3 = temp1.split("ll=", -1)[1];
                        temp2 = intent_data.split("&q=", -1)[1];
                    } catch (Exception e) {
                        // java.lang.ArrayIndexOutOfBoundsException most likely
                        // so let's assume we dont have '&q=xxxx'
                        temp3 = temp1;
                    }

                    if (temp2 == null) {
                        // use some default name
                        temp2 = "Target";
                    }

                    lat = temp3.split(",", -1)[0];
                    lon = temp3.split(",", -1)[1];
                    q = temp2;
                    // is the "search name" url-encoded? i think so, lets url-decode it here
                    q = URLDecoder.decode(q);
                    // System.out.println();

                    Navit.remember_destination(q, lat, lon);
                    Navit.destination_set();

                    Message msg = new Message();
                    Bundle b = new Bundle();
                    b.putInt("Callback", 3);
                    b.putString("lat", lat);
                    b.putString("lon", lon);
                    b.putString("q", q);
                    msg.setData(b);
                    NavitGraphics.callback_handler.sendMessage(msg);

                    final Thread zoom_to_route_002 = new Thread() {
                        int wait = 1;
                        int count = 0;
                        int max_count = 60;

                        @Override
                        public void run() {
                            while (wait == 1) {
                                try {
                                    if ((NavitGraphics.navit_route_status == 17)
                                            || (NavitGraphics.navit_route_status == 33)) {
                                        zoom_to_route();
                                        wait = 0;
                                    } else {
                                        wait = 1;
                                    }

                                    count++;
                                    if (count > max_count) {
                                        wait = 0;
                                    } else {
                                        Thread.sleep(400);
                                    }
                                } catch (Exception e) {
                                }
                            }
                        }
                    };
                    zoom_to_route_002.start();

                    //                  try
                    //                  {
                    //                     Thread.sleep(400);
                    //                  }
                    //                  catch (InterruptedException e)
                    //                  {
                    //                  }
                    //
                    //                  //                  try
                    //                  //                  {
                    //                  //                     show_geo_on_screen(Float.parseFloat(lat), Float.parseFloat(lon));
                    //                  //                  }
                    //                  //                  catch (Exception e2)
                    //                  //                  {
                    //                  //                     e2.printStackTrace();
                    //                  //                  }

                    try {
                        Navit.follow_button_on();
                    } catch (Exception e2)

                    {
                        e2.printStackTrace();
                    }
                } else {
                    if (unparsable_info_box && !searchBoxShown) {
                        try {
                            searchBoxShown = true;
                            String searchString = intent_data.split("q=")[1];
                            searchString = searchString.split("&")[0];
                            searchString = URLDecoder.decode(searchString); // decode the URL: e.g. %20 -> space
                            Log.e("Navit", "Search String :" + searchString);
                            executeSearch(searchString);
                        } catch (Exception e) {
                            // safety net
                            try {
                                Log.e("Navit", "problem with startup search 7 str=" + intent_data);
                            } catch (Exception e2) {
                                e2.printStackTrace();
                            }
                        }
                    }
                }
            } else if ((intent_data != null)
                    && (substring_without_ioobe(intent_data, 0, 10).equals("geo:0,0?q="))) {
                // g: geo:0,0?q=wien%20burggasse

                System.out.println("SUI:001");

                boolean parsable = false;
                boolean unparsable_info_box = true;
                try {
                    intent_data = java.net.URLDecoder.decode(intent_data, "UTF-8");
                } catch (Exception e1) {
                    e1.printStackTrace();

                }

                System.out.println("SUI:002");

                if (!Navit.NavitStartupAlreadySearching) {
                    if (intent_data.length() > 10) {
                        // if g: then start target search
                        Log.e("Navit", "target found (g): " + intent_data.split("q=", -1)[1]);
                        Navit.NavitStartupAlreadySearching = true;
                        start_targetsearch_from_intent(intent_data.split("q=", -1)[1]);
                        // dont use this here, already starting search, so set to "false"
                        parsable = false;
                        unparsable_info_box = false;
                    }
                } else {
                    Log.e("Navit", "already started search from startup intent");
                    parsable = false;
                    unparsable_info_box = false;
                }

                if (unparsable_info_box && !searchBoxShown) {
                    try {
                        searchBoxShown = true;
                        String searchString = intent_data.split("q=")[1];
                        searchString = searchString.split("&")[0];
                        searchString = URLDecoder.decode(searchString); // decode the URL: e.g. %20 -> space
                        Log.e("Navit", "Search String :" + searchString);
                        executeSearch(searchString);
                    } catch (Exception e) {
                        // safety net
                        try {
                            Log.e("Navit", "problem with startup search 88 str=" + intent_data);
                        } catch (Exception e2) {
                            e2.printStackTrace();
                        }
                    }
                }

            } else if ((intent_data != null) && (substring_without_ioobe(intent_data, 0, 4).equals("geo:"))) {
                // g: geo:16.8,46.3?z=15

                System.out.println("SUI:002a");

                boolean parsable = false;
                boolean unparsable_info_box = true;

                String tmp1;
                String tmp2;
                String tmp3;
                float lat1 = 0;
                float lon1 = 0;
                int zoom1 = 15;

                try {
                    intent_data = java.net.URLDecoder.decode(intent_data, "UTF-8");
                } catch (Exception e1) {
                    e1.printStackTrace();
                }

                if (!Navit.NavitStartupAlreadySearching) {
                    try {
                        tmp1 = intent_data.split(":", 2)[1];
                        tmp2 = tmp1.split("\\?", 2)[0];
                        tmp3 = tmp1.split("\\?", 2)[1];
                        lat1 = Float.parseFloat(tmp2.split(",", 2)[0]);
                        lon1 = Float.parseFloat(tmp2.split(",", 2)[1]);
                        zoom1 = Integer.parseInt(tmp3.split("z=", 2)[1]);
                        parsable = true;
                    } catch (Exception e4) {
                        e4.printStackTrace();
                    }
                }

                if (parsable) {
                    // geo: intent -> only show destination on map!

                    // set nice zoomlevel before we show destination
                    //                  int zoom_want = zoom1;
                    //                  //
                    //                  Message msg = new Message();
                    //                  Bundle b = new Bundle();
                    //                  b.putInt("Callback", 33);
                    //                  b.putString("s", Integer.toString(zoom_want));
                    //                  msg.setData(b);
                    //                  try
                    //                  {
                    //                     N_NavitGraphics.callback_handler.sendMessage(msg);
                    //                     Navit.GlobalScaleLevel = Navit_SHOW_DEST_ON_MAP_ZOOMLEVEL;
                    //                     if ((zoom_want > 8) && (zoom_want < 17))
                    //                     {
                    //                        Navit.GlobalScaleLevel = (int) (Math.pow(2, (18 - zoom_want)));
                    //                        System.out.println("GlobalScaleLevel=" + Navit.GlobalScaleLevel);
                    //                     }
                    //                  }
                    //                  catch (Exception e)
                    //                  {
                    //                     e.printStackTrace();
                    //                  }
                    //                  if (PREF_save_zoomlevel)
                    //                  {
                    //                     setPrefs_zoomlevel();
                    //                  }
                    // set nice zoomlevel before we show destination

                    try {
                        Navit.follow_button_off();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }

                    show_geo_on_screen(lat1, lon1);
                    //                  final Thread zoom_to_route_003 = new Thread()
                    //                  {
                    //                     @Override
                    //                     public void run()
                    //                     {
                    //                        try
                    //                        {
                    //                           Thread.sleep(200);
                    //                           show_geo_on_screen(lat1, lon1);
                    //                        }
                    //                        catch (Exception e)
                    //                        {
                    //                        }
                    //                     }
                    //                  };
                    //                  zoom_to_route_003.start();

                }
            }
        }

        System.out.println("SUI:099 XX" + substring_without_ioobe(intent_data, 0, 10) + "XX");

        // clear intent
        startup_intent = null;
        // ------------------------  BIG LOOP  ------------------------
        // ------------------------  BIG LOOP  ------------------------
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("SUI:199");
    }

    // clear intent
    startup_intent = null;

    // hold all map drawing -----------
    Message msg = new Message();
    Bundle b = new Bundle();
    b.putInt("Callback", 69);
    msg.setData(b);
    try {
        NavitGraphics.callback_handler.sendMessage(msg);
    } catch (Exception e) {
    }
    // hold all map drawing -----------

    getPrefs();
    activatePrefs();
    sun_moon__mLastCalcSunMillis = -1L;

    push_pin_view = (ImageView) findViewById(R.id.bottom_slide_left_side);
    if (p.PREF_follow_gps) {
        push_pin_view.setImageResource(R.drawable.pin1_down);
    } else {
        push_pin_view.setImageResource(R.drawable.pin1_up);
    }

    // paint for bitmapdrawing on map
    if (p.PREF_use_anti_aliasing) {
        NavitGraphics.paint_for_map_display.setAntiAlias(true);
    } else {
        NavitGraphics.paint_for_map_display.setAntiAlias(false);
    }
    if (p.PREF_use_map_filtering) {
        NavitGraphics.paint_for_map_display.setFilterBitmap(true);
    } else {
        NavitGraphics.paint_for_map_display.setFilterBitmap(false);
    }

    // activate gps AFTER 3g-location
    NavitVehicle.turn_on_precise_provider();

    // allow all map drawing -----------
    msg = new Message();
    b = new Bundle();
    b.putInt("Callback", 70);
    msg.setData(b);
    try {
        NavitGraphics.callback_handler.sendMessage(msg);
    } catch (Exception e) {
    }
    // allow all map drawing -----------

    // --- disabled --- NavitVehicle.set_last_known_pos_fast_provider();

    try {
        //Simulate = new SimGPS(NavitVehicle.vehicle_handler_);
        //Simulate.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        watchmem = new WatchMem();
        watchmem.start();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // ----- check if we have some index files downloaded -----

    if (api_version_int < 11) {
        if (Navit.have_maps_installed()) {
            if (Navit_maps_too_old) {
                TextView no_maps_text = (TextView) this.findViewById(R.id.no_maps_text);
                no_maps_text.setText("\n\n\n" + Navit.get_text("Some Maps are too old!") + "\n"
                        + Navit.get_text("Please update your maps") + "\n\n");

                try {
                    NavitGraphics.no_maps_container.setVisibility(View.VISIBLE);
                    try {
                        NavitGraphics.no_maps_container.setActivated(true);
                    } catch (NoSuchMethodError e) {
                    }
                    NavitGraphics.no_maps_container.bringToFront();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                allow_use_index_search();
                if (Navit_index_on_but_no_idx_files) {
                    TextView no_maps_text = (TextView) this.findViewById(R.id.no_maps_text);
                    no_maps_text.setText("\n\n\n" + Navit.get_text("No Index for some Maps") + "\n"
                            + Navit.get_text("Please update your maps") + "\n\n");

                    try {
                        NavitGraphics.no_maps_container.setVisibility(View.VISIBLE);
                        try {
                            NavitGraphics.no_maps_container.setActivated(true);
                        } catch (NoSuchMethodError e) {
                        }
                        NavitGraphics.no_maps_container.bringToFront();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } else {
                    try {
                        NavitGraphics.no_maps_container.setVisibility(View.INVISIBLE);
                        try {
                            NavitGraphics.no_maps_container.setActivated(false);
                        } catch (NoSuchMethodError e) {
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    } else {
        try {
            NavitGraphics.no_maps_container.setVisibility(View.INVISIBLE);
            try {
                NavitGraphics.no_maps_container.setActivated(false);
            } catch (NoSuchMethodError e) {
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // ----- check if we have some index files downloaded -----

    // ---- DEBUG ----
    // ---- DEBUG ----
    // ---- DEBUG ----
    try {
        if (!NavitVehicle.is_pos_recording) {
            if (p.PREF_enable_debug_write_gpx) {
                NavitVehicle.pos_recording_start();
                NavitVehicle.pos_recording_add(0, 0, 0, 0, 0, 0);
            }
        }
    } catch (Exception e) {
    }
    // ---- DEBUG ----
    // ---- DEBUG ----
    // ---- DEBUG ----

    // glSurfaceView.onResume();

    // if (Navit.METHOD_DEBUG) Navit.my_func_name(1);

    if (Navit.CIDEBUG == 1) {
        new Thread() {
            public void run() {
                try {
                    System.out.println("DR_run_all_yaml_tests --> want");

                    if (CIRUN == false) {
                        System.out.println("DR_run_all_yaml_tests --> do");
                        CIRUN = true;
                        Thread.sleep(20000); // 20 secs.
                        ZANaviDebugReceiver.DR_run_all_yaml_tests();
                    }
                } catch (Exception e) {
                }
            }
        }.start();
    }
}

From source file:com.zoffcc.applications.zanavi.Navit.java

/** Called when the activity is first created. */
// ----------- remove later -------------
// ----------- remove later -------------
@SuppressLint("NewApi")
// ----------- remove later -------------
// ----------- remove later -------------
@TargetApi(Build.VERSION_CODES.FROYO)/*ww  w.  j  av a 2s .c o m*/
@Override
public void onCreate(Bundle savedInstanceState) {
    // if (Navit.METHOD_DEBUG) Navit.my_func_name(0);

    // ------- only after API level 9 -------
    // ------- only after API level 9 -------
    //      try
    //      {
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectAll().penaltyDeath().penaltyLog().build());
    //         StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll().penaltyLog().build());
    //
    //         StrictMode.ThreadPolicy old = StrictMode.getThreadPolicy();
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old).permitDiskWrites().build());
    //         old = StrictMode.getThreadPolicy();
    //         StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old).permitDiskReads().build());
    //
    //      }
    //      catch (NoClassDefFoundError e)
    //      {
    //      }
    // ------- only after API level 9 -------
    // ------- only after API level 9 -------

    // Log.e("Navit", "OnCreate");

    //      if (checkPlayServices())
    //      {
    //      }

    ZANaviMainApplication.restore_error_msg(this.getApplicationContext());

    // app_status_lastalive = PreferenceManager.getDefaultSharedPreferences(this).getLong(PREF_KEY_LASTALIVE, -1L);
    app_status_string = PreferenceManager.getDefaultSharedPreferences(this).getString(PREF_KEY_CRASH, "down");

    if (FDBL) {
        p.PREF_enable_debug_crashdetect = PreferenceManager.getDefaultSharedPreferences(this)
                .getBoolean("enable_debug_crashdetect", true);
    } else {
        p.PREF_enable_debug_crashdetect = PreferenceManager.getDefaultSharedPreferences(this)
                .getBoolean("enable_debug_crashdetect", PLAYSTORE_VERSION_CRASHDETECT);
    }

    System.out.println("app_status_string get:[onCreate]" + app_status_string);
    System.out.println("app_status_string=" + app_status_string);
    // System.out.println("app_status_string:app_status_lastalive=" + app_status_lastalive);

    if (app_status_string.compareToIgnoreCase("down") != 0) {
        if (Navit.CI_ALLOWCRASHREPORTS) {
            intro_flag_crash = true;
            System.out.println("app_status_string:1:" + "intro_flag_crash=" + intro_flag_crash);
        } else {
            intro_flag_crash = false;
        }
    } else {
        intro_flag_crash = false;
    }

    //      if (System.currentTimeMillis() > app_status_lastalive + allowed_seconds_alive_for_crash)
    //      {
    //         // reset crash flag after X seconds
    //         intro_flag_crash = false;
    //      }

    if (checkForUpdate()) {
        // reset crash flag if we just updated
        intro_flag_crash = false;
    }

    if (!p.PREF_enable_debug_crashdetect) {
        // reset crash flag if we preference set to "false"
        intro_flag_crash = false;
    }

    // --- if we have no stacktrace -> don't show crash screen ----------
    if (intro_flag_crash) {
        try {
            if (ZANaviMainApplication.last_stack_trace_as_string == null) {
                intro_flag_crash = false;
            } else if (ZANaviMainApplication.last_stack_trace_as_string.length() < 2) {
                intro_flag_crash = false;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // --- if we have no stacktrace -> don't show crash screen ----------

    System.out.println("app_status_string:2:" + "intro_flag_crash=" + intro_flag_crash);

    try {
        app_status_string = "running";
        PreferenceManager.getDefaultSharedPreferences(this).edit().putString(PREF_KEY_CRASH, "running")
                .commit();
        System.out.println("app_status_string set:[onCreate]" + app_status_string);
    } catch (Exception e) {
        e.printStackTrace();
    }

    api_version_int = Integer.valueOf(android.os.Build.VERSION.SDK);
    System.out.println("XXX:API=" + api_version_int);
    if (api_version_int > 10) {
        Navit.PAINT_OLD_API = false;
    } else {
        Navit.PAINT_OLD_API = true;
    }

    getPrefs_theme();
    getPrefs_theme_main();
    Navit.applySharedTheme(this, p.PREF_current_theme_M);

    super.onCreate(savedInstanceState);

    Global_Navit_Object = this;
    asset_mgr = getAssets();

    PackageInfo pInfo;
    try {
        pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        ZANAVI_VERSION = pInfo.versionName;
    } catch (NameNotFoundException e4) {
    }

    // Intent intent = new Intent(this, ZANaviAboutPage.class);
    // startActivity(intent);

    // --------- check permissions -----------
    // --------- check permissions -----------
    // --------- check permissions -----------

    /*
     * 
     * <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     * <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     * <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
     * <uses-permission android:name="android.permission.WAKE_LOCK" />
     * <uses-permission android:name="android.permission.INTERNET" />
     * <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     */

    //if (EasyPermissions.hasPermissions(this, perms))
    //{
    //   // have permissions!
    //}
    //else
    //{
    //   // ask for permissions
    //   EasyPermissions.requestPermissions(this, Navit.get_text("ZANavi needs some permissions..."), RC_PERM_001, perms);
    //}
    // --------- check permissions -----------
    // --------- check permissions -----------
    // --------- check permissions -----------

    OSD_blueish_bg_color = getResources().getColor(R.color.blueish_bg_color);

    // getBaseContext_ = getBaseContext().getApplicationContext();
    getBaseContext_ = getBaseContext();

    last_orientation = getResources().getConfiguration().orientation;

    content_resolver = getContentResolver();
    // get_reglevel();

    Display display_ = getWindowManager().getDefaultDisplay();
    metrics = new DisplayMetrics();
    display_.getMetrics(Navit.metrics);

    road_book_items = new ArrayList<ListViewItem>();
    fragmentManager = getSupportFragmentManager();

    setContentView(R.layout.main_layout);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    if (toolbar != null) {
        try {
            setSupportActionBar(toolbar);
            // System.out.println("TTT01:" + toolbar);
        } catch (NoClassDefFoundError e) {
        }
    }

    try {
        getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE);
        getSupportActionBar().setDisplayUseLogoEnabled(false);
        getSupportActionBar().setIcon(R.drawable.icon);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
    } catch (NoClassDefFoundError e) {
    } catch (Exception e) {
        e.printStackTrace();
    }

    progressbar_main_activity = (ProgressBar) findViewById(R.id.progressbar_main_activity);
    progressbar_main_activity.setVisibility(View.GONE);
    progressbar_main_activity.setProgress(0);

    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------

    if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        smaller_top_bar(true);
    } else {
        smaller_top_bar(false);
    }

    bottom_bar_px = (int) getResources().getDimension(R.dimen.gui_top_container_height);
    // System.out.println("VVV:bottom_bar_height:" + bottom_bar_px);
    bottom_bar_slider_shadow_px = (int) getResources()
            .getDimension(R.dimen.bottom_slide_view_shadow_compat_height);
    // System.out.println("VVV:bottom_bar_slider_shadow_px:" + bottom_bar_slider_shadow_px);

    // final RelativeLayout a = (RelativeLayout) findViewById(R.id.bottom_bar_container);
    final FrameLayout a = (FrameLayout) findViewById(R.id.bottom_bar_slide);
    final RelativeLayout.LayoutParams pp22 = (RelativeLayout.LayoutParams) a.getLayoutParams();

    // Calculate ToolBar height
    try {
        TypedValue tv = new TypedValue();
        if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
            actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,
                    getResources().getDisplayMetrics());
            System.out.println("VVV:abh:" + actionBarHeight);
        } else {
            actionBarHeight = NavitGraphics.dp_to_px(144);
        }
    } catch (Exception e) {
        actionBarHeight = NavitGraphics.dp_to_px(144);
    }

    final android.support.v7.widget.Toolbar view_toolbar_top = (android.support.v7.widget.Toolbar) findViewById(
            R.id.toolbar);
    ViewTreeObserver vto = view_toolbar_top.getViewTreeObserver();
    vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
        @Override
        public void onGlobalLayout() {
            view_toolbar_top.getViewTreeObserver().removeGlobalOnLayoutListener(this);
            // int width = view_toolbar_top.getMeasuredWidth();
            int height = view_toolbar_top.getMeasuredHeight();
            Navit.actionBarHeight = height;
            // System.out.println("hhh:88=" + Navit.actionBarHeight);
            Navit.cur_y_margin_bottom_bar_touch = Navit.map_view_height + Navit.actionBarHeight + bottom_bar_px
                    - Navit.bottom_bar_slider_shadow_px; // try to put view at bottom

            pp22.setMargins(0, (int) Navit.cur_y_margin_bottom_bar_touch, 0, 0); // left, top, right, bottom
            a.setLayoutParams(pp22);
            a.requestLayout();
        }
    });

    // actionBarHeight = 168;

    //      final int SWIPE_MIN_DISTANCE = NavitGraphics.dp_to_px(25);
    //      final float SWIPE_THRESHOLD_VELOCITY = 5.5f;
    //      final float FLING_PIXELS_PER_SECOND = 100;
    //      final float maxFlingVelocity = ViewConfiguration.get(this).getScaledMaximumFlingVelocity();
    final ViewConfiguration vc = ViewConfiguration.get(this);
    final int swipeMinDistance = vc.getScaledPagingTouchSlop();
    final int swipeThresholdVelocity = vc.getScaledMinimumFlingVelocity();
    swipeMaxOffPath = vc.getScaledTouchSlop();
    // (there is also vc.getScaledMaximumFlingVelocity() one could check against)

    // setup some values --------
    NavitGraphics.long_press_on_screen_max_distance = swipeMaxOffPath;
    // setup some values --------

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            try {
                //               float velocityPercentY = velocityY / maxFlingVelocity; // the percent is a value in the range of (0, 1]
                //               float normalizedVelocityY = velocityPercentY * FLING_PIXELS_PER_SECOND; // where PIXELS_PER_SECOND is a device-independent measurement

                //               System.out.println("VVV:" + (e1.getY() - e2.getY()) + " " + NavitGraphics.dp_to_px((int) (e1.getY() - e2.getY())) + " " + maxFlingVelocity + " " + velocityY + " " + velocityPercentY + " " + normalizedVelocityY + " " + SWIPE_THRESHOLD_VELOCITY);

                // System.out.println("VVV:2:" + swipeMinDistance + " " + swipeThresholdVelocity + " " + swipeMaxOffPath);

                // bottom to top
                if (e1.getY() - e2.getY() > swipeMinDistance && Math.abs(velocityY) > swipeThresholdVelocity) {
                    //int featureWidth = getMeasuredWidth();
                    //mActiveFeature = (mActiveFeature < (mItems.size() - 1)) ? mActiveFeature + 1 : mItems.size() - 1;
                    //smoothScrollTo(mActiveFeature * featureWidth, 0);
                    //System.out.println("GS:002:up:" + velocityY + " " + e2.getY() + " " + e1.getY());

                    animate_bottom_bar_up();

                    return true;
                }
                // top to bottom
                else if (e2.getY() - e1.getY() > swipeMinDistance
                        && Math.abs(velocityY) > swipeThresholdVelocity) {
                    //int featureWidth = getMeasuredWidth();
                    //mActiveFeature = (mActiveFeature > 0) ? mActiveFeature - 1 : 0;
                    //smoothScrollTo(mActiveFeature * featureWidth, 0);
                    //System.out.println("GS:003:down:" + velocityY + " " + e1.getY() + " " + e2.getY());

                    animate_bottom_bar_down();

                    return true;
                }
            } catch (Exception e) {
                //System.out.println("GS:009:EE:" + e.getMessage());
            }
            return false;
        }
    }
    mGestureDetector = new GestureDetector(new MyGestureDetector());

    push_pin_view = (ImageView) findViewById(R.id.bottom_slide_left_side);
    push_pin_view.setOnClickListener(new ImageView.OnClickListener() {
        public void onClick(View v) {
            try {
                toggle_follow_button();
            } catch (Exception e) {
            }
        }
    });

    cur_y_margin_bottom_bar_touch = 0; // try to put view at bottom

    a.setOnTouchListener(new View.OnTouchListener() {
        @Override
        synchronized public boolean onTouch(View v, MotionEvent m) {

            int action = m.getAction();

            if (mGestureDetector.onTouchEvent(m)) {
                //System.out.println("GS:001:fling!!");
                // System.out.println("FRAG:fling:011");
                return true;
            } else if (action == MotionEvent.ACTION_DOWN) {
                last_y_bottom_bar_touch = m.getY();

                // put roadbook into layout -----------
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

                try {
                    if (road_book == null) {
                        road_book = new ZANaviRoadbookFragment();
                        // System.out.println("FRAG:attach:001");
                        fragmentTransaction.replace(R.id.roadbook_fragment_container, road_book, "");
                        fragmentTransaction.commitAllowingStateLoss();
                        // fragmentTransaction.show(road_book);
                    } else {
                        // System.out.println("FRAG:attached:003");
                    }
                } catch (Exception ef) {
                }
                // put roadbook into layout -----------

                return true;
            } else if ((action == MotionEvent.ACTION_UP) || (action == MotionEvent.ACTION_CANCEL)) {
                // System.out.println("FRAG:up/cancel:012");

                // release
                if (cur_y_margin_bottom_bar_touch > (bottom_y_margin_bottom_bar_touch / 2)) {
                    // snap back to bottom
                    animate_bottom_bar_down();
                } else {
                    // snap top top
                    animate_bottom_bar_up();
                }
            } else
            // if (action == MotionEvent.ACTION_MOVE)
            {
                // System.out.println("FRAG:*else*:012");

                if (Math.abs(last_y_bottom_bar_touch - m.getY()) > 2) {
                    float last_margin = cur_y_margin_bottom_bar_touch;
                    cur_y_margin_bottom_bar_touch = cur_y_margin_bottom_bar_touch
                            - (last_y_bottom_bar_touch - m.getY());

                    if ((cur_y_margin_bottom_bar_touch >= 0)
                            && (cur_y_margin_bottom_bar_touch <= bottom_y_margin_bottom_bar_touch)) {
                        // System.out.println("VVV:move:" + cur_y_margin_bottom_bar_touch + " " + bottom_y_margin_bottom_bar_touch);

                        last_y_bottom_bar_touch = m.getY() + (last_y_bottom_bar_touch - m.getY());
                        RelativeLayout.LayoutParams relativeParams = (RelativeLayout.LayoutParams) a
                                .getLayoutParams();
                        relativeParams.setMargins(0, (int) cur_y_margin_bottom_bar_touch, 0, 0); // left, top, right, bottom
                        a.setLayoutParams(relativeParams);
                        a.requestLayout();
                    } else {
                        // System.out.println("VVV:revert");

                        // revert position
                        cur_y_margin_bottom_bar_touch = last_margin;
                    }
                }

            }
            return true;
        }
    });
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------
    // ------------ bottom bar slider ----------------

    // init cancel dialog!! ----------
    // init cancel dialog!! ----------
    Message msg2 = new Message();
    Bundle b2 = new Bundle();
    b2.putString("text", "");
    msg2.what = 0;
    msg2.setData(b2);
    ZANaviDownloadMapCancelActivity.canceldialog_handler.sendMessage(msg2);
    // init cancel dialog!! ----------
    // init cancel dialog!! ----------

    app_window = getWindow();

    // ---------------- set some directories -----------------
    // ---------------- set some directories -----------------
    NAVIT_DATA_DIR = this.getFilesDir().getPath();
    this.getFilesDir().mkdirs();
    // ---
    // System.out.println("data dir=" + NAVIT_DATA_DIR);
    NAVIT_DATA_SHARE_DIR = NAVIT_DATA_DIR + "/share/";
    File tmp3 = new File(NAVIT_DATA_SHARE_DIR);
    tmp3.mkdirs();
    // ---
    FIRST_STARTUP_FILE = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";
    VERSION_FILE = NAVIT_DATA_SHARE_DIR + "/version.txt";
    // ---------------- set some directories -----------------
    // ---------------- set some directories -----------------

    try {
        toneG = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
    } catch (Exception e) {
    }

    try {
        Class.forName("android.app.backup.BackupManager");
        backupManager = new BackupManager(this);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    int width_ = display_.getWidth();
    int height_ = display_.getHeight();
    Log.e("Navit", "Navit -> pixels x=" + width_ + " pixels y=" + height_);
    Log.e("Navit", "Navit -> dpi=" + Navit.metrics.densityDpi);
    Log.e("Navit", "Navit -> density=" + Navit.metrics.density);
    Log.e("Navit", "Navit -> scaledDensity=" + Navit.metrics.scaledDensity);

    try {
        // send overspill factor to C-code
        Message msg33 = new Message();
        Bundle b33 = new Bundle();
        b33.putInt("Callback", 104);
        msg33.setData(b33);
        NavitGraphics.callback_handler.sendMessage(msg33);
    } catch (Exception eee) {
    }

    // ----- service -----
    // ----- service -----
    ZANaviMapDownloaderServiceIntent = new Intent(Navit.getBaseContext_, ZANaviMapDownloaderService.class);
    // ----- service -----
    // ----- service -----

    System.out.println("Navit:onCreate:JTHREAD ID=" + Thread.currentThread().getId());
    System.out.println("Navit:onCreate:THREAD ID=" + NavitGraphics.GetThreadId());

    // bitmaps for lanes
    lane_left = BitmapFactory.decodeResource(getResources(), R.drawable.lane_left);
    lane_right = BitmapFactory.decodeResource(getResources(), R.drawable.lane_right);
    lane_merge_to_left = BitmapFactory.decodeResource(getResources(), R.drawable.lane_merge_to_left);
    lane_merge_to_right = BitmapFactory.decodeResource(getResources(), R.drawable.lane_merge_to_right);
    lane_none = BitmapFactory.decodeResource(getResources(), R.drawable.lane_none);
    // bitmaps for lanes

    // paint for bitmapdrawing on map
    NavitGraphics.paint_for_map_display.setAntiAlias(true);
    NavitGraphics.paint_for_map_display.setFilterBitmap(true);

    // sky
    NavitGraphics.paint_sky_day.setAntiAlias(true);
    NavitGraphics.paint_sky_day.setColor(Color.parseColor("#79BAEC"));
    NavitGraphics.paint_sky_night.setAntiAlias(true);
    NavitGraphics.paint_sky_night.setColor(Color.parseColor("#090909"));
    // stars
    NavitGraphics.paint_sky_night_stars.setColor(Color.parseColor("#DEDDEF"));
    // twilight
    NavitGraphics.paint_sky_twilight1.setColor(Color.parseColor("#090909"));
    NavitGraphics.paint_sky_twilight2.setColor(Color.parseColor("#113268"));
    NavitGraphics.paint_sky_twilight3.setColor(Color.parseColor("#79BAEC"));

    Random m = new Random();
    int i6 = 0;
    for (i6 = 0; i6 < (NavitGraphics.max_stars + 1); i6++) {
        NavitGraphics.stars_x[i6] = m.nextFloat();
        NavitGraphics.stars_y[i6] = m.nextFloat();
        NavitGraphics.stars_size[i6] = m.nextInt(3) + 1;
    }

    res_ = getResources();
    int ii = 0;
    NavitGraphics.dl_thread_cur = 0;
    for (ii = 0; ii < NavitGraphics.dl_thread_max; ii++) {
        NavitGraphics.dl_thread[ii] = null;
    }

    String font_file_name = "Roboto-Regular.ttf"; // "LiberationSans-Regular.ttf";
    NavitStreetnameFont = Typeface.createFromAsset(getBaseContext().getAssets(), font_file_name);
    // System.out.println("NavitStreetnameFont" + NavitStreetnameFont);

    Navit_maps_loaded = false;

    // only take arguments here, onResume gets called all the time (e.g. when screenblanks, etc.)
    Navit.startup_intent = this.getIntent();
    // hack! remeber timstamp, and only allow 4 secs. later in onResume to set target!
    Navit.startup_intent_timestamp = System.currentTimeMillis();
    Log.e("Navit", "**1**A " + startup_intent.getAction());
    Log.e("Navit", "**1**D " + startup_intent.getDataString());
    Log.e("Navit", "**1**I " + startup_intent.toString());
    try {
        Log.e("Navit", "**1**DH E " + startup_intent.getExtras().describeContents());
    } catch (Exception ee) {
    }

    startup_status = Navit_Status_NORMAL_STARTUP;

    //      glSurfaceView = (GLSurfaceView) findViewById(R.id.glSurfaceView_001);
    //      glSurfaceView.setEGLContextClientVersion(2); // enable OpenGL 2.0
    //      glSurfaceView.setRenderer(new GlRenderer());
    //      glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); // only render on demand
    //
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      ZANaviGlLine vertLine = new ZANaviGlLine();
    //      vertLine.SetVerts(1000f, 1000f, 0f, -1000f, -1000f, 0f);
    //      vertLine.SetColor(.8f, .8f, 0f, 1.0f);
    //
    //      float[] mMVPMatrix = new float[16];
    //
    //      // Position the eye behind the origin.
    //      final float eyeX = 0.0f;
    //      final float eyeY = 0.0f;
    //      final float eyeZ = 1.5f;
    //
    //      // We are looking toward the distance
    //      final float lookX = 0.0f;
    //      final float lookY = 0.0f;
    //      final float lookZ = -5.0f;
    //
    //      // Set our up vector. This is where our head would be pointing were we holding the camera.
    //      final float upX = 0.0f;
    //      final float upY = 1.0f;
    //      final float upZ = 0.0f;
    //
    //      // Set the view matrix. This matrix can be said to represent the camera position.
    //      // NOTE: In OpenGL 1, a ModelView matrix is used, which is a combination of a model and
    //      // view matrix. In OpenGL 2, we can keep track of these matrices separately if we choose.
    //      Matrix.setLookAtM(mMVPMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);
    //
    //      vertLine.draw(mMVPMatrix);
    //
    //      glSurfaceView.postInvalidate();
    //      glSurfaceView.requestRender();
    //      glSurfaceView.postInvalidate();
    //      // draw some sample lines ----
    //      // draw some sample lines ----
    //      // draw some sample lines ----

    // setup graphics objects
    // setup graphics objects
    // setup graphics objects
    NG__vehicle = new NavitGraphics(this, 1, 0, 0, 50, 50, 65535, 0, 0);
    NG__map_main = new NavitGraphics(this, 0, 0, 0, 100, 100, 0, 0, 0);
    Navit.N_NavitGraphics = NG__map_main;
    // setup graphics objects
    // setup graphics objects
    // setup graphics objects

    NV = new NavitVehicle(this);
    NSp = new NavitSpeech2(this);

    // init translated text ------------------------------------
    // NavitTextTranslations.init();
    final Runnable r = new Runnable() {
        public void run() {
            NavitTextTranslations.init();
        }
    };
    ThreadGroup group = new ThreadGroup("Group1");
    new Thread(group, r, "ZTransInit1", 100000).start(); // use 0.1MByte stack
    // init translated text ------------------------------------

    // set the new locale here -----------------------------------
    getPrefs_loc();
    activatePrefs_loc();
    // set the new locale here -----------------------------------

    // get the local language -------------
    Locale locale = java.util.Locale.getDefault();
    String lang = locale.getLanguage();
    String langu = lang;
    String langc = lang;
    Log.e("Navit", "lang=" + lang);
    int pos = langu.indexOf('_');
    if (pos != -1) {
        langc = langu.substring(0, pos);
        langu = langc + langu.substring(pos).toUpperCase(locale);
        Log.e("Navit", "substring lang " + langu.substring(pos).toUpperCase(locale));
        // set lang. for translation
        NavitTextTranslations.main_language = langc;
        NavitTextTranslations.sub_language = langu.substring(pos).toUpperCase(locale);
    } else {
        String country = locale.getCountry();
        Log.e("Navit", "Country1 " + country);
        Log.e("Navit", "Country2 " + country.toUpperCase(locale));
        langu = langc + "_" + country.toUpperCase(locale);
        // set lang. for translation
        NavitTextTranslations.main_language = langc;
        NavitTextTranslations.sub_language = country.toUpperCase(locale);
    }
    Log.e("Navit", "Language " + lang);
    // get the local language -------------

    TextView no_maps_text = (TextView) this.findViewById(R.id.no_maps_text);
    no_maps_text.setText("\n\n\n" + Navit.get_text("No Maps installed") + "\n"
            + Navit.get_text("Please download a map") + "\n\n");

    //      if (api_version_int < 11)
    //      {
    try {
        try {
            no_maps_text.setVisibility(View.INVISIBLE);
        } catch (NoSuchMethodError e) {
        }

        try {
            no_maps_text.setActivated(false);
        } catch (NoSuchMethodError e) {
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    //      }

    // no_maps_text.postInvalidate();

    // set map cache size here -----------------------------------
    getPrefs_mapcache();
    activatePrefs_mapcache();
    // set map cache size here -----------------------------------

    // get map data dir and set it -----------------------------
    getPrefs_mapdir();
    activatePrefs_mapdir(true);
    // get map data dir and set it -----------------------------

    // get special prefs here ------------------------------------
    get_prefs_highdpi();
    // get special prefs here ------------------------------------

    // make sure the new path for the navitmap.bin file(s) exist!!
    File navit_maps_dir = new File(MAP_FILENAME_PATH);
    navit_maps_dir.mkdirs();
    // create nomedia files
    File nomedia_file = new File(MAP_FILENAME_PATH + ".nomedia");
    try {
        nomedia_file.createNewFile();
    } catch (Exception e1) {
        e1.printStackTrace();
    }
    // create nomedia files

    // check if we already have a borders.bin file (if not, then extract the included simplified one)
    File b_ = new File(MAP_FILENAME_PATH + "/borders.bin");
    try {
        if (!b_.exists()) {
            try {
                File c_ = new File(MAPMD5_FILENAME_PATH + "/borders.bin.md5");
                c_.delete();
            } catch (Exception e2) {

            }
            Log.e("Navit",
                    "trying to extract borders simple resource to:" + MAP_FILENAME_PATH + "/borders.bin");
            if (!extractRes("borders_simple", MAP_FILENAME_PATH + "/borders.bin")) {
                Log.e("Navit",
                        "Failed to extract borders simple resource to:" + MAP_FILENAME_PATH + "/borders.bin");
            }
        }
    } catch (Exception e) {

    }
    // check if we already have a borders.bin file

    // make sure the new path for config files exist
    File navit_cfg_dir = new File(CFG_FILENAME_PATH);
    navit_cfg_dir.mkdirs();

    // make sure the new path for the navitmap.bin file(s) exist!!
    File navit_mapsmd5_dir = new File(MAPMD5_FILENAME_PATH);
    navit_mapsmd5_dir.mkdirs();

    // make sure the share dir exists, otherwise the infobox will not show
    File navit_data_share_dir = new File(NAVIT_DATA_SHARE_DIR);
    navit_data_share_dir.mkdirs();

    File dd = new File(NAVIT_DATA_DEBUG_DIR);
    dd.mkdirs();

    // try to create cat. file if it does not exist
    File navit_maps_catalogue = new File(CFG_FILENAME_PATH + NavitMapDownloader.CAT_FILE);
    if (!navit_maps_catalogue.exists()) {
        FileOutputStream fos_temp;
        try {
            fos_temp = new FileOutputStream(navit_maps_catalogue);
            fos_temp.write((NavitMapDownloader.MAP_CAT_HEADER + "\n").getBytes()); // just write header to the file
            fos_temp.flush();
            fos_temp.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // ---------- downloader threads ----------------
    PackageInfo pkgInfo;
    Navit_DonateVersion_Installed = false;
    try {
        // is the donate version installed?
        pkgInfo = getPackageManager().getPackageInfo("com.zoffcc.applications.zanavi_donate", 0);
        String sharedUserId = pkgInfo.sharedUserId;
        System.out.println("str nd=" + sharedUserId);
        if (sharedUserId.equals("com.zoffcc.applications.zanavi")) {
            System.out.println("##bonus 001##");
            Navit_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        if (get_reglevel() == 1) {
            System.out.println("##U:bonus 001##");
            Navit_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // is the "large map" donate version installed?
        pkgInfo = getPackageManager().getPackageInfo("com.zoffcc.applications.zanavi_largemap_donate", 0);
        String sharedUserId = pkgInfo.sharedUserId;
        System.out.println("str lm=" + sharedUserId);

        if (sharedUserId.equals("com.zoffcc.applications.zanavi")) {
            System.out.println("##bonus 002##");
            Navit_DonateVersion_Installed = true;
            Navit_Largemap_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        if (get_reglevel() == 1) {
            System.out.println("##U:bonus 002##");
            Navit_DonateVersion_Installed = true;
            Navit_Largemap_DonateVersion_Installed = true;
            NavitMapDownloader.MULTI_NUM_THREADS = NavitMapDownloader.MULTI_NUM_THREADS_MAX;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    // update map list
    NavitMapDownloader.init_maps_without_donate_largemaps();
    // ---------- downloader threads ----------------

    // ---- detect menu button ----
    detect_menu_button();

    if (Navit.metrics.densityDpi >= 320) //&& (PREF_shrink_on_high_dpi))
    {
        Navit.menu_button = BitmapFactory.decodeResource(getResources(), R.drawable.menu_001);
    } else {
        Navit.menu_button = BitmapFactory.decodeResource(getResources(), R.drawable.menu_001_small);
    }

    Navit.long_green_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.long_green_arrow);

    Navit.follow_on = BitmapFactory.decodeResource(getResources(), R.drawable.follow);
    Navit.follow_off = BitmapFactory.decodeResource(getResources(), R.drawable.follow_off);
    Navit.follow_current = Navit.follow_on;

    if ((Navit.metrics.densityDpi >= 320) && (p.PREF_shrink_on_high_dpi)) {
        float factor;
        factor = (float) NavitGraphics.Global_Scaled_DPI_normal / (float) Navit.metrics.densityDpi;
        factor = factor * 1.7f;
        //
        BitmapFactory.Options o = new BitmapFactory.Options();
        o.inDither = true;
        //o.inScaled = true;
        //o.inTargetDensity = NavitGraphics.Global_Scaled_DPI_normal;
        Navit.nav_arrow_stopped = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_stopped, o);
        Navit.nav_arrow_moving = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving, o);
        Navit.nav_arrow_moving_grey = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_grey, o);
        Navit.nav_arrow_moving_shadow = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_shadow, o);

        Navit.nav_arrow_stopped_small = Bitmap.createScaledBitmap(Navit.nav_arrow_stopped,
                (int) (Navit.nav_arrow_stopped.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_stopped.getHeight() / NavitGraphics.strech_factor_3d_map * factor),
                true);
        Navit.nav_arrow_moving_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving,
                (int) (Navit.nav_arrow_moving.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_moving.getHeight() / NavitGraphics.strech_factor_3d_map * factor), true);
        Navit.nav_arrow_moving_shadow_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving_shadow,
                (int) (Navit.nav_arrow_moving_shadow.getWidth() / NavitGraphics.strech_factor_3d_map * factor),
                (int) (Navit.nav_arrow_moving_shadow.getHeight() / NavitGraphics.strech_factor_3d_map * factor),
                true);
    } else {
        Navit.nav_arrow_stopped = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_stopped);
        Navit.nav_arrow_moving = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving);
        Navit.nav_arrow_moving_grey = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_grey);
        Navit.nav_arrow_moving_shadow = BitmapFactory.decodeResource(getResources(),
                R.drawable.navigation_arrow_moving_shadow);

        Navit.nav_arrow_stopped_small = Bitmap.createScaledBitmap(Navit.nav_arrow_stopped,
                (int) (Navit.nav_arrow_stopped.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (Navit.nav_arrow_stopped.getHeight() / NavitGraphics.strech_factor_3d_map), true);
        Navit.nav_arrow_moving_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving,
                (int) (Navit.nav_arrow_moving.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (1.5 * Navit.nav_arrow_moving.getHeight() / NavitGraphics.strech_factor_3d_map), true);
        Navit.nav_arrow_moving_shadow_small = Bitmap.createScaledBitmap(Navit.nav_arrow_moving_shadow,
                (int) (Navit.nav_arrow_moving_shadow.getWidth() / NavitGraphics.strech_factor_3d_map),
                (int) (1.5 * Navit.nav_arrow_moving_shadow.getHeight() / NavitGraphics.strech_factor_3d_map),
                true);
    }

    Navit.zoomin = BitmapFactory.decodeResource(getResources(), R.drawable.zoom_in_32_32);
    Navit.zoomout = BitmapFactory.decodeResource(getResources(), R.drawable.zoom_out_32_32);

    //Navit.oneway_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway);
    Navit.oneway_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway_large);
    Navit.oneway_bicycle_arrow = BitmapFactory.decodeResource(getResources(), R.drawable.oneway_bicycle_large);

    // *******************
    // *******************
    // *******************
    // *******************
    // check/init the catalogue file for downloaded maps
    NavitMapDownloader.init_cat_file();
    // *******************
    // *******************
    // *******************
    // *******************

    xmlconfig_unpack_file = false;
    write_new_version_file = false;
    try {
        NavitAppVersion = "" + this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
        NavitAppVersion_string = ""
                + this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
        NavitAppVersion = "1";
        NavitAppVersion_string = "1";
    } catch (Exception e) {
        e.printStackTrace();
        NavitAppVersion = "2";
        NavitAppVersion_string = "2";
    }

    try {
        File navit_version = new File(VERSION_FILE);
        if (!navit_version.exists()) {
            System.out.println("version file does not exist");
            NavitAppVersion_prev = "-1";
            write_new_version_file = true;
        } else {
            // files exists, read in the prev. verison number
            System.out.println("version file is here");
            FileInputStream fos_temp;
            byte[] buffer = new byte[101];
            fos_temp = new FileInputStream(navit_version);
            int len = fos_temp.read(buffer, 0, 100);
            if (len != -1) {
                // use only len bytes to make the string (the rest is garbage!!)
                NavitAppVersion_prev = new String(buffer).substring(0, len);
            } else {
                NavitAppVersion_prev = "-1";
                write_new_version_file = true;
            }
            fos_temp.close();
        }

    } catch (Exception e) {
        NavitAppVersion_prev = "-1";
        write_new_version_file = true;
        e.printStackTrace();
    }

    System.out.println("vprev:" + NavitAppVersion_prev + " vcur:" + NavitAppVersion);

    intro_flag_update = false;
    if (NavitAppVersion_prev.compareTo(NavitAppVersion) != 0) {
        // different version
        System.out.println("different version!!");
        write_new_version_file = true;
        xmlconfig_unpack_file = true;

        //if ((NavitAppVersion_prev.compareTo("-1") != 0) && (NavitAppVersion.compareTo("-1") != 0))
        //{
        // user has upgraded to a new version of ZANavi
        startup_status = Navit_Status_UPGRADED_TO_NEW_VERSION;
        intro_flag_update = true;
        //}
    } else {
        // same version
        System.out.println("same version");
        xmlconfig_unpack_file = false;
    }

    // write new version file
    if (write_new_version_file) {
        try {
            System.out.println("write version file");
            FileOutputStream fos_temp;
            File navit_version = new File(VERSION_FILE);
            navit_version.delete();
            fos_temp = new FileOutputStream(navit_version);
            fos_temp.write(NavitAppVersion.getBytes());
            fos_temp.flush();
            fos_temp.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Sample useragent strings:
    //
    //      Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0a1) Gecko/20110616 Firefox/7.0a1 SeaMonkey/2.4a1
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; GT-I9100 Build/GINGERBREAD)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-S5830 Build/FROYO)
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; HTC Desire S Build/GRI40)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.2; MB525 Build/3.4.2-179)
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; HTC Wildfire S A510e Build/GRI40)
    //      Wget/1.10.2
    //      Dalvik/1.4.0 (Linux; U; Android 2.3.3; sdk Build/GRI34)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.2; MB525 Build/3.4.2-164)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2; GT-I9000 Build/FROYO)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-S5570L Build/FROYO)
    //      Dalvik/1.2.0 (Linux; U; Android 2.2.1; GT-I9000 Build/FROYO)
    //      Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; InfoPath.1)
    String ANDROID = android.os.Build.VERSION.SDK; //The current development codename, or the string "REL" if this is a release build.
    //String BOARD = android.os.Build.BOARD; //The name of the underlying board, like "goldfish".    
    //String BOOTLOADER = android.os.Build.BOOTLOADER; //  The system bootloader version number.
    String BRAND = android.os.Build.BRAND; //The brand (e.g., carrier) the software is customized for, if any.
    //String CPU_ABI = android.os.Build.CPU_ABI; //The name of the instruction set (CPU type + ABI convention) of native code.
    //String CPU_ABI2 = android.os.Build.CPU_ABI2; //  The name of the second instruction set (CPU type + ABI convention) of native code.
    String DEVICE = android.os.Build.DEVICE; //  The name of the industrial design.
    String DISPLAY = android.os.Build.DISPLAY; //A build ID string meant for displaying to the user
    //String FINGERPRINT = android.os.Build.FINGERPRINT; //A string that uniquely identifies this build.
    //String HARDWARE = android.os.Build.HARDWARE; //The name of the hardware (from the kernel command line or /proc).
    //String HOST = android.os.Build.HOST;
    //String ID = android.os.Build.ID; //Either a changelist number, or a label like "M4-rc20".
    String MANUFACTURER = android.os.Build.MANUFACTURER; //The manufacturer of the product/hardware.
    //String MODEL = android.os.Build.MODEL; //The end-user-visible name for the end product.
    //String PRODUCT = android.os.Build.PRODUCT; //The name of the overall product.
    //String RADIO = android.os.Build.RADIO; //The radio firmware version number.
    //String TAGS = android.os.Build.TAGS; //Comma-separated tags describing the build, like "unsigned,debug".
    //String TYPE = android.os.Build.TYPE; //The type of build, like "user" or "eng".
    //String USER = android.os.Build.USER;

    String android_version = "Android " + ANDROID;
    String android_device = MANUFACTURER + " " + BRAND + " " + DEVICE;

    if (MANUFACTURER.equalsIgnoreCase("amazon")) {
        // we are on amazon device
        ZANaviNormalDonateActivity.on_amazon_device = true;
    }

    // debug
    // debug
    // android_device = "telechips telechips m801";
    // debug
    // debug

    String android_rom_name = DISPLAY;

    if (FDBL) {
        android_rom_name = android_rom_name + "; FD";
    }

    if (Navit_DonateVersion_Installed == false) {
        UserAgentString = "Mozilla/5.0 (Linux; U; " + "Z" + NavitAppVersion + "; " + android_version + "; "
                + android_device + " " + android_rom_name + ")";
        UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "Z" + NavitAppVersion + "; "
                + android_version + "; " + android_device + " " + android_rom_name + ")";
    } else {
        if (Navit_Largemap_DonateVersion_Installed == false) {
            UserAgentString = "Mozilla/5.0 (Linux; U; " + "donateZ" + NavitAppVersion + "; " + android_version
                    + "; " + android_device + " " + android_rom_name + ")";
            UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "donateZ" + NavitAppVersion + "; "
                    + android_version + "; " + android_device + " " + android_rom_name + ")";
        } else

        {
            UserAgentString = "Mozilla/5.0 (Linux; U; " + "LMdonateLMZ" + NavitAppVersion + "; "
                    + android_version + "; " + android_device + " " + android_rom_name + ")";
            UserAgentString_bind = "Mozilla/5.0 @__THREAD__@ (Linux; U; " + "LMdonateLMZ" + NavitAppVersion
                    + "; " + android_version + "; " + android_device + " " + android_rom_name + ")";
        }
    }
    // System.out.println("UA=" + UserAgentString);

    // --------- enable GPS ? --------------
    // --------- enable GPS ? --------------
    //      try
    //      {
    //         final LocationManager llmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    //         if (!llmanager.isProviderEnabled(LocationManager.GPS_PROVIDER))
    //         {
    //            buildAlertMessageNoGps();
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }
    // --------- enable GPS ? --------------
    // --------- enable GPS ? --------------

    unsupported = false;
    try {
        if (android_device.toLowerCase().contains("telechips")) {
            if (android_device.toLowerCase().contains("m801")) {
                // if the donate version is already installed, dont disable the app
                if (Navit_DonateVersion_Installed == false) {
                    if (Navit_Largemap_DonateVersion_Installed == false) {
                        // activate [Weltbild] Cat Nova again (19.12.2011)
                        // ** // unsupported = true;
                    }
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // this hangs the emulator, if emulator < 2.3 (only works in emulator >= 2.3)!!
        if (!NAVIT_IS_EMULATOR) {
            sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        }
    } catch (Exception e3) {
        e3.printStackTrace();
    }

    //      try
    //      {
    //         vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }
    //sensorManager_ = sensorManager;

    // light sensor -------------------
    try {
        lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        lightsensor_max_value = lightSensor.getMaximumRange();
        lightSensorEventListener = new SensorEventListener() {
            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {
            }

            @Override
            public void onSensorChanged(SensorEvent event) {
                try {
                    if (p.PREF_auto_night_mode) {
                        if (event.sensor.getType() == Sensor.TYPE_LIGHT) {

                            if (Navit.DEBUG_LUX_VALUE) {
                                debug_cur_lux_value = event.values[0];
                                NavitGraphics.NavitAOverlay_s.postInvalidate();
                            }

                            // System.out.println("Current Reading(Lux): cur=" + event.values[0] + " max=" + lightsensor_max_value);

                            if (night_mode == false) {
                                if (event.values[0] < p.PREF_night_mode_lux) {
                                    night_mode = true;
                                    set_night_mode(1);
                                    draw_map();
                                }
                            } else if (night_mode == true) {
                                if (event.values[0] > (p.PREF_night_mode_lux + p.PREF_night_mode_buffer)) {
                                    night_mode = false;
                                    set_night_mode(0);
                                    draw_map();
                                }
                            }
                        }
                    } else {
                        try {
                            sensorManager.unregisterListener(lightSensorEventListener);
                            System.out.println("stop lightsensor");
                        } catch (Exception e) {
                        }

                        try {
                            night_mode = false;
                            set_night_mode(0);
                            draw_map();
                        } catch (Exception e) {
                        }
                    }
                } catch (Exception e) {
                    // e.printStackTrace();
                }
            }

        };
    } catch (Exception e) {
    }
    // light sensor -------------------

    generic_alert_box = new AlertDialog.Builder(this);
    /*
     * show info box for first time users
     */
    AlertDialog.Builder infobox = new AlertDialog.Builder(this);
    //. english text: Welcome to ZANavi
    infobox.setTitle(Navit.get_text("__INFO_BOX_TITLE__")); //TRANS
    infobox.setCancelable(false);
    final TextView message = new TextView(this);
    message.setFadingEdgeLength(20);
    message.setVerticalFadingEdgeEnabled(true);
    message.setPadding(10, 5, 10, 5);
    message.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
    message.setGravity(Gravity.LEFT);
    // message.setScrollBarStyle(TextView.SCROLLBARS_INSIDE_OVERLAY);
    // message.setVerticalScrollBarEnabled(true);
    RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,
            RelativeLayout.LayoutParams.FILL_PARENT);
    rlp.leftMargin = 7;
    rlp.rightMargin = 7;

    Navit.Navit_Geocoder = null;
    try {
        // for online search
        Navit.Navit_Geocoder = new Geocoder(this);
    } catch (Exception e) {
        e.printStackTrace();
    }

    //      if (api_version_int < 11)
    //      {
    //         //TRANS
    //         infobox.setPositiveButton(Navit.get_text("Ok"), new DialogInterface.OnClickListener()
    //         {
    //            public void onClick(DialogInterface arg0, int arg1)
    //            {
    //               Log.e("Navit", "Ok, user saw the infobox");
    //            }
    //         });
    //
    //         //TRANS
    //         infobox.setNeutralButton(Navit.get_text("More info"), new DialogInterface.OnClickListener()
    //         {
    //            public void onClick(DialogInterface arg0, int arg1)
    //            {
    //               Log.e("Navit", "user wants more info, show the website");
    //               // URL to ZANavi Manual (in english language)
    //               String url = "http://zanavi.cc/index.php/Manual";
    //               if (FDBL)
    //               {
    //                  url = "http://fd.zanavi.cc/manual";
    //               }
    //               Intent i = new Intent(Intent.ACTION_VIEW);
    //               i.setData(Uri.parse(url));
    //               startActivity(i);
    //            }
    //         });
    //      }

    info_popup_seen_count_end = false;
    File navit_first_startup = new File(FIRST_STARTUP_FILE);
    // if file does NOT exist, show the info box
    if (!navit_first_startup.exists()) {
        // set first-ever-startup flag
        first_ever_startup = true;
        info_popup_seen_count_end = true; // don't show on first ever start of the app
        startup_status = Navit_Status_COMPLETE_NEW_INSTALL;
        FileOutputStream fos_temp;
        try {
            info_popup_seen_count++;
            fos_temp = new FileOutputStream(navit_first_startup);
            fos_temp.write((int) info_popup_seen_count); // use to store info popup seen count
            fos_temp.flush();
            fos_temp.close();

            //            if (api_version_int < 11)
            //            {
            //               message.setLayoutParams(rlp);
            //               //. TRANSLATORS: multiline info text for first startup of application (see en_US for english text)
            //               final SpannableString s = new SpannableString(" " + Navit.get_text("__INFO_BOX_TEXT__")); //TRANS
            //               Linkify.addLinks(s, Linkify.WEB_URLS);
            //               message.setText(s);
            //               message.setMovementMethod(LinkMovementMethod.getInstance());
            //               infobox.setView(message);
            //               infobox.show();
            //            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        FileOutputStream fos_temp;
        FileInputStream fis_temp;
        try {
            fis_temp = new FileInputStream(navit_first_startup);
            info_popup_seen_count = fis_temp.read();
            fis_temp.close();

            if (info_popup_seen_count < 0) {
                info_popup_seen_count = 0;
            }

            // we wrote "A" -> (int)65 previously, so account for that
            if (info_popup_seen_count == 65) {
                info_popup_seen_count = 0;
            }

            if (info_popup_seen_count > info_popup_seen_count_max) {
                info_popup_seen_count_end = true;
            } else {
                info_popup_seen_count++;
                fos_temp = new FileOutputStream(navit_first_startup);
                fos_temp.write((int) info_popup_seen_count); // use to store info popup seen count
                fos_temp.flush();
                fos_temp.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /*
     * show info box for first time users
     */

    //
    // ----------- info popup
    // ----------- info popup
    // ----------- info popup
    // ----------- info popup
    //

    intro_flag_info = false;
    if ((!info_popup_seen_count_end) && (startup_status == Navit_Status_NORMAL_STARTUP)) {
        intro_flag_info = true;
    }

    System.out.println("info_popup_seen_count=" + info_popup_seen_count);
    System.out.println("info_popup_seen_count_end=" + info_popup_seen_count_end + " intro_flag_info="
            + intro_flag_info + " startup_status=" + startup_status);

    // make handler statically available for use in "msg_to_msg_handler"
    Navit_progress_h = this.progress_handler;

    //      try
    //      {
    //         Navit.bigmap_bitmap = BitmapFactory.decodeResource(getResources(), R.raw.bigmap_colors_zanavi2);
    //      }
    //      catch (Exception e)
    //      {
    //         // when not enough memory is available, then disable large world overview map!
    //         System.gc();
    //         Navit.bigmap_bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
    //      }
    //      // ------no----- // Navit.bigmap_bitmap.setDensity(120); // set our dpi!!

    try {
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        ActivityResults = new NavitActivityResult[16];
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        NavitAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    } catch (Exception e) {
        e.printStackTrace();
    }

    PowerManager pm = null;
    try {
        pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
    } catch (Exception e) {
        e.printStackTrace();
    }

    try {
        // -- // pm.wakeUp(SystemClock.uptimeMillis()); // -- //
        // **screen always full on** // wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");
        // **screen can go off, cpu will stay on** // wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");

        // this works so far, lets the screen dim, but it cpu and screen stays on
        wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.ON_AFTER_RELEASE, "NavitDoNotDimScreen");
    } catch (Exception e) {
        e.printStackTrace();
        wl = null;
    }

    try {
        wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ZANaviNeedCpu");
    } catch (Exception e) {
        e.printStackTrace();
        wl_cpu = null;
    }

    try {
        wl_navigating = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "ZANaviNavigationOn");
    } catch (Exception e) {
        Log.e("Navit", "WakeLock NAV: create failed!!");
        e.printStackTrace();
        wl_navigating = null;
    }

    //      try
    //      {
    //         if (wl_navigating != null)
    //         {
    //            wl_navigating.acquire();
    //            Log.e("Navit", "WakeLock NAV: acquire 00");
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         Log.e("Navit", "WakeLock NAV: something wrong 00");
    //         e.printStackTrace();
    //      }

    //      try
    //      {
    //         if (wl != null)
    //         {
    //            try
    //            {
    //               wl.release();
    //            }
    //            catch (Exception e2)
    //            {
    //            }
    //            wl.acquire();
    //            Log.e("Navit", "WakeLock: acquire 1");
    //         }
    //      }
    //      catch (Exception e)
    //      {
    //         e.printStackTrace();
    //      }

    // -- extract overview maps --
    // -- extract overview maps --

    // File navit_worldmap2_file = new File(NAVIT_DATA_DIR + "/share/worldmap2.txt");
    File navit_worldmap2_file = new File(MAP_FILENAME_PATH + "/worldmap2.txt");
    if (!navit_worldmap2_file.exists()) {
        if (!extractRes("worldmap2", MAP_FILENAME_PATH + "/worldmap2.txt")) {
            Log.e("Navit", "Failed to extract worldmap2.txt");
        }
    }

    File navit_worldmap5_file = new File(MAP_FILENAME_PATH + "/worldmap5.txt");
    if (!navit_worldmap5_file.exists()) {
        if (!extractRes("worldmap5", MAP_FILENAME_PATH + "/worldmap5.txt")) {
            Log.e("Navit", "Failed to extract worldmap5.txt");
        }
    }
    // -- extract overview maps --
    // -- extract overview maps --

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language + "_"
            + NavitTextTranslations.sub_language);
    if (!extractRes(NavitTextTranslations.main_language + "_" + NavitTextTranslations.sub_language,
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "_"
                    + NavitTextTranslations.sub_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language + "_"
                + NavitTextTranslations.sub_language);
    }

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language + "_"
            + NavitTextTranslations.sub_language.toLowerCase());
    if (!extractRes(
            NavitTextTranslations.main_language + "_" + NavitTextTranslations.sub_language.toLowerCase(),
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "_"
                    + NavitTextTranslations.sub_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language + "_"
                + NavitTextTranslations.sub_language.toLowerCase());
    }

    Log.e("Navit", "trying to extract language resource " + NavitTextTranslations.main_language);
    if (!extractRes(NavitTextTranslations.main_language,
            NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "/LC_MESSAGES/navit.mo")) {
        Log.e("Navit", "Failed to extract language resource " + NavitTextTranslations.main_language);
    }

    // DEBUG - check if language file is on SDCARD -
    try {
        File debug_mo_src = new File("/sdcard/zanavi/debug/navit.mo");
        File debug_mo_dest = new File(
                NAVIT_DATA_DIR + "/locale/" + NavitTextTranslations.main_language + "/LC_MESSAGES/navit.mo");
        //* File navit_debug_dir = new File("/sdcard/zanavi/debug/");
        //* navit_debug_dir.mkdirs();
        copyFile(debug_mo_src, debug_mo_dest);
    } catch (Exception e) {
        e.printStackTrace();
    }
    // DEBUG - check if language file is on SDCARD -

    File navit_config_xml_file = new File(NAVIT_DATA_SHARE_DIR + "/navit.xml");
    if ((!navit_config_xml_file.exists()) || (NAVIT_ALWAYS_UNPACK_XMLFILE)) {
        xmlconfig_unpack_file = true;
        Log.e("Navit", "navit.xml does not exist, unpacking in any case");
    }

    my_display_density = "mdpi";
    // ldpi display (120 dpi)

    NavitGraphics.Global_want_dpi = Navit.metrics.densityDpi;
    NavitGraphics.Global_want_dpi_other = Navit.metrics.densityDpi;

    if (Navit.metrics.densityDpi <= 120) {
        my_display_density = "ldpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitldpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for ldpi device(s)");
            }
        }
    }
    // mdpi display (160 dpi)
    else if ((Navit.metrics.densityDpi > 120) && (Navit.metrics.densityDpi <= 160)) {
        my_display_density = "mdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitmdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for mdpi device(s)");
            }
        }
    }
    // hdpi display (240 dpi)
    else if ((Navit.metrics.densityDpi > 160) && (Navit.metrics.densityDpi < 320))
    //else if (Navit.metrics.densityDpi == 240)
    {
        my_display_density = "hdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navithdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for hdpi device(s)");
            }
        }
    }
    // xhdpi display (320 dpi)
    else if (Navit.metrics.densityDpi >= 320) {
        // set the map display DPI down. otherwise everything will be very small and unreadable
        // and performance will be very low
        if (p.PREF_shrink_on_high_dpi) {
            NavitGraphics.Global_want_dpi = NavitGraphics.Global_Scaled_DPI_normal;
        }
        NavitGraphics.Global_want_dpi_other = NavitGraphics.Global_Scaled_DPI_normal;

        Log.e("Navit", "found xhdpi device, this is not fully supported yet");
        Log.e("Navit", "using hdpi values for compatibility");
        my_display_density = "hdpi";
        if (xmlconfig_unpack_file) {
            if (!extractRes("navithdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml for xhdpi device(s)");
            }
        }
    } else {
        /* default, meaning we just dont know what display this is */
        if (xmlconfig_unpack_file) {
            if (!extractRes("navitmdpi", NAVIT_DATA_SHARE_DIR + "/navit.xml")) {
                Log.e("Navit", "Failed to extract navit.xml (default version)");
            }
        }
    }
    // Debug.startMethodTracing("calc");

    int have_dpi = Navit.metrics.densityDpi;

    System.out.println("Global_want_dpi[001]=" + NavitGraphics.Global_want_dpi + ":" + Navit.metrics.densityDpi
            + ":" + NavitGraphics.Global_dpi_factor + ":" + NavitGraphics.Global_dpi_factor_better);

    if (NavitGraphics.Global_want_dpi == have_dpi) {
        NavitGraphics.Global_dpi_factor = 1;
        NavitGraphics.preview_coord_factor = 1;
    } else
    // this was missing??????!!!!!!!!!??????!!!!!!
    {
        NavitGraphics.Global_dpi_factor = ((float) NavitGraphics.Global_want_dpi / (float) have_dpi);
        NavitGraphics.preview_coord_factor = ((float) have_dpi / (float) NavitGraphics.Global_want_dpi);
    }

    System.out.println("Global_want_dpi[002]=" + NavitGraphics.Global_dpi_factor + ":"
            + NavitGraphics.preview_coord_factor);

    // gggggggggggggggggggggggggg new !!!!!!!!!!!!!!!!!!!!

    // --> dont use!! NavitMain(this, langu, android.os.Build.VERSION.SDK_INT);
    Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));

    // -- report share dir back to C-code --
    //Message msg2 = new Message();
    //Bundle b2 = new Bundle();
    //b2.putInt("Callback", 82);
    //b2.putString("s", NAVIT_DATA_DIR + "/share/");
    //msg2.setData(b2);
    //N_NavitGraphics.callback_handler.sendMessage(msg2);
    // -- report share dir back to C-code --

    // -- report data dir back to C-code --
    //msg2 = new Message();
    //b2 = new Bundle();
    //b2.putInt("Callback", 84);
    //b2.putString("s", NAVIT_DATA_DIR + "/");
    //msg2.setData(b2);
    //N_NavitGraphics.callback_handler.sendMessage(msg2);
    // -- report share dir back to C-code --

    draw_osd_thread = new drawOSDThread();
    draw_osd_thread.start();

    cwthr = new CWorkerThread();
    cwthr.start();

    // --new--
    cwthr.StartMain(this, langu, Integer.valueOf(android.os.Build.VERSION.SDK), "" + Navit.metrics.densityDpi,
            NAVIT_DATA_DIR, NAVIT_DATA_SHARE_DIR);

    // --old--
    // NavitMain(this, langu, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density);
    // --old--
    // NavitActivity(3);

    // CAUTION: don't use android.os.Build.VERSION.SDK_INT if <uses-sdk android:minSdkVersion="3" />
    // You will get exception on all devices with Android 1.5 and lower
    // because Build.VERSION.SDK_INT is since SDK 4 (Donut 1.6)

    //      (see: http://developer.android.com/guide/appendix/api-levels.html)
    //      Platform Version               API Level
    //      =============================================
    //      Android 4.0.3               15
    //      Android 4.0, 4.0.1, 4.0.2      14
    //      Android 3.2                  13
    //      Android 3.1                  12
    //      Android 3.0                  11
    //      Android 2.3.3                10
    //      Android 2.3.1                 9
    //      Android 2.2                   8
    //      Android 2.1                   7
    //      Android 2.0.1                 6
    //      Android 2.0                   5
    //      Android 1.6                   4
    //      Android 1.5                   3
    //      Android 1.1                   2
    //      Android 1.0                   1

    Navit.mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

    //try
    //{
    //   Thread.sleep(2000);
    //}
    //catch (InterruptedException e)
    //{
    //}

    //getPrefs();
    //activatePrefs();

    // unpack some localized Strings
    // a test now, later we will unpack all needed strings for java, here at this point!!
    //String x = NavitGraphics.getLocalizedString("Austria");
    //Log.e("Navit", "x=" + x);
    Navit.show_mem_used();

    /*
     * GpsStatus.Listener listener = new GpsStatus.Listener()
     * {
     * public void onGpsStatusChanged(int event)
     * {
     * //System.out.println("xxxxx");
     * if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS)
     * {
     * }
     * }
     * };
     */

    try {
        Intent sintent = new Intent();
        sintent.setPackage("com.zoffcc.applications.zanavi_msg");
        sintent.setAction("com.zoffcc.applications.zanavi_msg.ZanaviCloudService");
        // ComponentName cname = startService(sintent);
        // Log.i("NavitPlugin", "start Service res=" + cname);
        // System.out.println("NavitPlugin:bind to Service");
        boolean res_bind = bindService(sintent, serviceConnection, Context.BIND_AUTO_CREATE);
        // Log.i("NavitPlugin", "bind to Service res=" + res_bind);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    try {
        intro_flag_indexmissing = false;
        allow_use_index_search();
        if (Navit_index_on_but_no_idx_files) {
            if (!NavitMapDownloader.download_active_start) {
                intro_flag_indexmissing = true;
            }
        }

    } catch (Exception e) {
    }

    try {
        intro_flag_nomaps = false;
        if (!have_maps_installed()) {
            if ((!NavitMapDownloader.download_active) && (!NavitMapDownloader.download_active_start)) {
                intro_flag_nomaps = true;
            }
        }
    } catch (Exception e) {
    }

    intro_flag_firststart = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(PREF_KEY_FIRST_START,
            true);
    if (intro_flag_firststart) {
        intro_flag_update = false;
    }

    if (EasyPermissions.hasPermissions(this, perms)) {
        // have permissions!
        intro_flag_permissions = false;
    } else {
        // ask for permissions
        intro_flag_permissions = true;
    }
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------
    // ------------- get all the flags for intro pages -------------

    // -------------- INTRO --------------
    // -------------- INTRO --------------
    // -------------- INTRO --------------

    intro_show_count = 0;

    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------
    //      // -------------- INTRO --------------

    // if (Navit.METHOD_DEBUG) Navit.my_func_name(1);
}

From source file:com.zoffcc.applications.zanavi.Navit.java

public static void route_online_OSRM(final String addr, float lat_start, float lon_start,
        boolean start_coords_valid, final double lat_end, final double lon_end, final boolean remember_dest) {
    // http://router.project-osrm.org/viaroute?loc=46.3456438,17.450&loc=47.34122,17.5332&instructions=false&alt=false

    if (!start_coords_valid) {
        location_coords cur_target = new location_coords();
        try {// w w  w .ja  v a 2 s.  c om
            geo_coord tmp = get_current_vehicle_position();
            cur_target.lat = tmp.Latitude;
            cur_target.lon = tmp.Longitude;
        } catch (Exception e) {
        }

        try {
            lat_start = (float) cur_target.lat;
            lon_start = (float) cur_target.lon;
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("Navit", "problem with location!");
        }
    }

    final String request_url = String.format(Locale.US,
            "http://router.project-osrm.org/viaroute?loc=%4.6f,%4.6f&loc=%4.6f,%4.6f&instructions=true&alt=false",
            lat_start, lon_start, lat_end, lon_end);

    // StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    // StrictMode.setThreadPolicy(policy);

    try {
        // System.out.println("XML:S:001 url=" + request_url);
        final URL url = new URL(request_url);
        // System.out.println("XML:S:002");
        //         SAXParserFactory factory = SAXParserFactory.newInstance();
        //         System.out.println("XML:S:003");
        //         SAXParser parser = factory.newSAXParser();
        //         System.out.println("XML:S:004");
        //         XMLReader xmlreader = parser.getXMLReader();
        //         System.out.println("XML:S:005");
        //         xmlreader.setContentHandler(new ZANaviXMLHandler());
        //         System.out.println("XML:S:006");

        final Thread add_to_route = new Thread() {
            @Override
            public void run() {
                try {

                    // --------------
                    // --------------
                    // --------------
                    // ------- allow this HTTPS cert ---
                    // --------------
                    // --------------
                    // --------------
                    //                  X509HostnameVerifier hnv = new X509HostnameVerifier()
                    //                  {
                    //
                    //                     @Override
                    //                     public void verify(String hostname, SSLSocket arg1) throws IOException
                    //                     {
                    //                        Log.d("SSL", "DANGER !!! trusted hostname=" + hostname + " DANGER !!!");
                    //                     }
                    //
                    //                     @Override
                    //                     public void verify(String hostname, X509Certificate cert) throws SSLException
                    //                     {
                    //                        Log.d("SSL", "DANGER !!! trusted hostname=" + hostname + " DANGER !!!");
                    //                     }
                    //
                    //                     @Override
                    //                     public void verify(String hostname, String[] cns, String[] subjectAlts) throws SSLException
                    //                     {
                    //                        Log.d("SSL", "DANGER !!! trusted hostname=" + hostname + " DANGER !!!");
                    //                     }
                    //
                    //                     @Override
                    //                     public boolean verify(String hostname, SSLSession session)
                    //                     {
                    //                        Log.d("SSL", "DANGER !!! trusted hostname=" + hostname + " DANGER !!!");
                    //                        return true;
                    //                     }
                    //                  };
                    //
                    //                  SSLContext context = SSLContext.getInstance("TLS");
                    //                  context.init(null, new X509TrustManager[] { new X509TrustManager()
                    //                  {
                    //                     public java.security.cert.X509Certificate[] getAcceptedIssuers()
                    //                     {
                    //                        return new java.security.cert.X509Certificate[0];
                    //                     }
                    //
                    //                     @Override
                    //                     public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException
                    //                     {
                    //                     }
                    //
                    //                     @Override
                    //                     public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException
                    //                     {
                    //                     }
                    //                  } }, new SecureRandom());
                    //                  javax.net.ssl.SSLSocketFactory sslf = context.getSocketFactory();
                    //
                    //                  HostnameVerifier hnv_default = HttpsURLConnection.getDefaultHostnameVerifier();
                    //                  javax.net.ssl.SSLSocketFactory sslf_default = HttpsURLConnection.getDefaultSSLSocketFactory();
                    //                  HttpsURLConnection.setDefaultHostnameVerifier(hnv);
                    //                  HttpsURLConnection.setDefaultSSLSocketFactory(sslf);
                    //
                    //                  DefaultHttpClient client = new DefaultHttpClient();
                    //
                    //                  SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
                    //                  SchemeRegistry registry = new SchemeRegistry();
                    //                  registry.register(new Scheme("https", socketFactory, 443));
                    //                  ThreadSafeClientConnManager mgr = new ThreadSafeClientConnManager(client.getParams(), registry);
                    //                  DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
                    //
                    //                  socketFactory.setHostnameVerifier(hnv);
                    //
                    //                  HttpGet get_request = new HttpGet(request_url);
                    //                  HttpResponse http_response = httpClient.execute(get_request);
                    //                  HttpEntity responseEntity = http_response.getEntity();
                    //
                    //                  HttpsURLConnection.setDefaultHostnameVerifier(hnv_default);
                    //                  HttpsURLConnection.setDefaultSSLSocketFactory(sslf_default);
                    // --------------
                    // --------------
                    // --------------
                    // ------- allow this HTTPS cert ---
                    // --------------
                    // --------------
                    // --------------

                    InputSource is = new InputSource();
                    is.setEncoding("utf-8");
                    // is.setByteStream(responseEntity.getContent());
                    is.setByteStream(url.openStream());
                    // System.out.println("XML:S:007");

                    String response = slurp(is.getByteStream(), 16384);
                    // response = response.replaceAll("&", "&amp;");

                    // System.out.println("XML:S:007.a res=" + response);

                    final JSONObject obj = new JSONObject(response);

                    //   System.out.println(person.getInt("id"));

                    final String route_geometry = obj.getString("route_geometry");
                    final JSONArray route_instructions_array = obj.getJSONArray("route_instructions");

                    int loop_i = 0;
                    JSONArray instruction;
                    int[] instruction_pos = new int[route_instructions_array.length()];
                    for (loop_i = 0; loop_i < route_instructions_array.length(); loop_i++) {
                        instruction = (JSONArray) route_instructions_array.get(loop_i);
                        instruction_pos[loop_i] = Integer.parseInt(instruction.get(3).toString());
                        // System.out.println("XML:instr. pos=" + instruction_pos[loop_i]);
                    }

                    // System.out.println("XML:S:009 o=" + route_geometry);

                    List<geo_coord> gc_list = decode_function(route_geometry, 6);

                    if (gc_list.size() < 2) {
                        // no real route found!! (only 1 point)
                    } else {

                        Message msg = new Message();
                        Bundle b = new Bundle();

                        int loop = 0;

                        geo_coord cur = new geo_coord();
                        geo_coord old = new geo_coord();
                        geo_coord corr = new geo_coord();

                        cur.Latitude = gc_list.get(loop).Latitude;
                        cur.Longitude = gc_list.get(loop).Longitude;

                        int first_found = 1;

                        if (gc_list.size() > 2) {
                            int instr_count = 1;

                            for (loop = 1; loop < gc_list.size(); loop++) {

                                old.Latitude = cur.Latitude;
                                old.Longitude = cur.Longitude;
                                cur.Latitude = gc_list.get(loop).Latitude;
                                cur.Longitude = gc_list.get(loop).Longitude;

                                if ((instruction_pos[instr_count] == loop) || (loop == (gc_list.size() - 1))) {

                                    if (loop == (gc_list.size() - 1)) {
                                        corr = cur;
                                    } else {
                                        corr = get_point_on_line(old, cur, 70);
                                    }

                                    // -- add waypoint --
                                    //                           b.putInt("Callback", 55548);
                                    //                           b.putString("lat", "" + corr.Latitude);
                                    //                           b.putString("lon", "" + corr.Longitude);
                                    //                           b.putString("q", " ");
                                    //                           msg.setData(b);
                                    try {
                                        // NavitGraphics.callback_handler.sendMessage(msg);
                                        if (first_found == 1) {
                                            first_found = 0;
                                            NavitGraphics.CallbackMessageChannel(55503,
                                                    corr.Latitude + "#" + corr.Longitude + "#" + "");
                                            // System.out.println("XML:rR:" + loop + " " + corr.Latitude + " " + corr.Longitude);
                                        } else {
                                            NavitGraphics.CallbackMessageChannel(55548,
                                                    corr.Latitude + "#" + corr.Longitude + "#" + "");
                                            // System.out.println("XML:rw:" + loop + " " + corr.Latitude + " " + corr.Longitude);
                                        }
                                        // Thread.sleep(25);
                                    } catch (Exception e) {
                                        e.printStackTrace();
                                    }
                                    // -- add waypoint --

                                    instr_count++;

                                }

                            }
                        }

                        if (remember_dest) {
                            try {
                                Navit.remember_destination(addr, "" + lat_end, "" + lon_end);
                                // save points
                                write_map_points();
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }

                        b.putInt("Callback", 55599);
                        msg.setData(b);
                        try {
                            // System.out.println("XML:calc:");
                            Thread.sleep(10);
                            NavitGraphics.callback_handler.sendMessage(msg);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                    }

                } catch (Exception e2) {
                    e2.printStackTrace();
                }
            }
        };
        add_to_route.start();

        // convert to coords -------------
        // convert to coords -------------

    } catch (Exception e) {
        // System.out.println("XML:S:EEE");
        e.printStackTrace();
    }
}