Ticket #1290: Androidpath.diff

File Androidpath.diff, 11.3 KB (added by jandegr, 6 years ago)
  • navit-svn/navit/android/src/org/navitproject/navit/Navit.java

     
    2323import java.io.FileOutputStream;
    2424import java.io.InputStream;
    2525import java.io.FileInputStream;
    26 import java.io.FileOutputStream;
    2726import java.io.IOException;
    2827import java.util.HashMap;
    2928import java.util.Locale;
     
    6564import android.widget.TextView;
    6665import android.widget.Toast;
    6766
    68 
    6967public class Navit extends Activity
    7068{
    7169
     
    8482        public static final int          NavitDownloaderSelectMap_id    = 967;
    8583        public static final int          MAP_NUM_PRIMARY                = 11;
    8684        public static final int          NavitAddressSearch_id          = 70;
     85        public static final int          NavitSelectStorage_id          = 43;
    8786        public static String             NavitLanguage;
    8887        public static Resources          NavitResources                 = null;
    8988
     
    9089        public static final int          MAP_NUM_SECONDARY              = 12;
    9190        static final String              NAVIT_PACKAGE_NAME             = "org.navitproject.navit";
    9291        static final String              TAG                            = "Navit";
    93         static final String              MAP_FILENAME_PATH              = Environment.getExternalStorageDirectory().getPath() + "/navit/";
     92        static  String                    map_filename_path             =null;
    9493        static final String              NAVIT_DATA_DIR                 = "/data/data/" + NAVIT_PACKAGE_NAME;
    9594        static final String              NAVIT_DATA_SHARE_DIR           = NAVIT_DATA_DIR + "/share";
    9695        static final String              FIRST_STARTUP_FILE             = NAVIT_DATA_SHARE_DIR + "/has_run_once.txt";
     
    181180                                while ((i = resourcestream.read(buf)) != -1) {
    182181                                        resultfilestream.write(buf, 0, i);
    183182                                }
     183                                resultfilestream.close();
    184184                        } catch (Exception e) {
    185185                                Log.e(TAG, "Exception " + e.getMessage());
    186186                                return false;
     
    293295                        NavitTextTranslations.sub_language = country.toUpperCase(locale);
    294296                }
    295297                Log.e("Navit", "Language " + lang);
     298               
     299                SharedPreferences prefs = getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
     300               
     301                map_filename_path  = prefs.getString("filenamePath", Environment.getExternalStorageDirectory().getPath() + "/navit/");
    296302
    297303                // make sure the new path for the navitmap.bin file(s) exist!!
    298                 File navit_maps_dir = new File(MAP_FILENAME_PATH);
     304                File navit_maps_dir = new File(map_filename_path);
    299305                navit_maps_dir.mkdirs();
    300306
    301307                // make sure the share dir exists
    (this hunk was shorter than expected) 
    359365                        Log.e("Navit", "Failed to extract navit.xml for " + my_display_density);
    360366                }
    361367
    362                 // --> dont use android.os.Build.VERSION.SDK_INT, needs API >= 4
    363                 Log.e("Navit", "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));
    364                 NavitMain(this, NavitLanguage, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density, NAVIT_DATA_DIR+"/bin/navit");
     368               
     369               
     370                Log.d("Navit", "android.os.Build.VERSION.SDK_INT=" + android.os.Build.VERSION.SDK_INT);
     371                NavitMain(this, NavitLanguage, android.os.Build.VERSION.SDK_INT, my_display_density, NAVIT_DATA_DIR+"/bin/navit",map_filename_path);
    365372
    366373                showInfos();
     
    472490                menu.add(1, 5, 400, getString(R.string.optionsmenu_toggle_poi)); //TRANS
    473491
    474492                menu.add(1, 6, 500, getString(R.string.optionsmenu_address_search)); //TRANS
    475 
     493                menu.add(1, 10, 500, "set map location");
    476494                menu.add(1, 99, 900, getString(R.string.optionsmenu_exit_navit)); //TRANS
    477495               
     496                /* nog aan te passen */
    478497                /* Only show the Backup to SD-Card Option if we really have one */
    479498                if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
    480499                    menu.add(1, 7, 700, getString(R.string.optionsmenu_backup_restore)); //TRANS
     
    529548                // Handle item selection
    530549                switch (id)
    531550                {
     551               
    532552                        case 1 :
    533553                                // zoom in
    534554                                Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_ZOOM_IN.ordinal()).sendToTarget();
     
    546566                                Intent map_download_list_activity = new Intent(this, NavitDownloadSelectMapActivity.class);
    547567                                startActivityForResult(map_download_list_activity, Navit.NavitDownloaderSelectMap_id);
    548568                                break;
     569                       
     570                       
     571                               
     572                               
    549573                        case 5 :
    550574                                // toggle the normal POI layers (to avoid double POIs)
    551575                                Message msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
     
    571595                            /* Backup / Restore */
    572596                            showDialog(NavitDialogs.DIALOG_BACKUP_RESTORE);
    573597                            break;
     598                           
     599                           
     600                           
     601                        case 10:
     602                                setMapLocation();                       
     603                                break;
     604                               
     605                               
    574606                        case 99 :
    575607                                // exit
    576608                                this.onStop();
     
    613645                                msg.sendToTarget();
    614646                        }
    615647                        break;
     648                case NavitSelectStorage_id :
     649                       
     650                        if(resultCode == RESULT_OK)
     651                        {                       
     652                        String newDir = data.getStringExtra(FileBrowserActivity.returnDirectoryParameter);
     653                        Log.d(TAG, "selected path= "+newDir);
     654                        SharedPreferences prefs = this.getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
     655                        SharedPreferences.Editor  prefs_editor = prefs.edit();
     656                        prefs_editor.putString("filenamePath", newDir+"/navit/");
     657                        prefs_editor.commit();
     658                        map_filename_path = newDir+"/navit/";
     659                        Toast.makeText(this, "New location set to "+map_filename_path+"\n Restart Navit to apply the changes",Toast.LENGTH_LONG).show();               
     660                }
     661                        else Log.w(TAG, "select path failed");
     662                        break;
    616663                default :
    617664                        //Log.e("Navit", "onActivityResult " + requestCode + " " + resultCode);
    618665                        ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
     
    640687                return true;
    641688        }
    642689
     690       
     691        public boolean setMapLocation()
     692        {
     693                Intent fileExploreIntent = new Intent(this,FileBrowserActivity.class);
     694                fileExploreIntent.putExtra(FileBrowserActivity.startDirectoryParameter, "/mnt");
     695                startActivityForResult(fileExploreIntent,NavitSelectStorage_id);
     696               
     697                return true;
     698        }
     699       
     700       
     701       
     702       
    643703        @Override
    644704        public void onDestroy()
    645705        {
     
    676736                finish();
    677737        }
    678738
    679         public native void NavitMain(Navit x, String lang, int version, String display_density_string, String path);
     739        public native void NavitMain(Navit x, String lang, int version, String display_density_string, String path, String path2);
    680740        public native void NavitDestroy();
    681741
    682742        /*
     
    686746         */
    687747        static
    688748        {
     749               
    689750                System.loadLibrary("navit");
    690751        }
    691752}
     753
  • navit-svn/navit/android/src/org/navitproject/navit/NavitMapDownloader.java

     
    298298                new osm_map_values(Navit._("Venezuela"), "-73.6", "0.4", "-59.7", "12.8", 124001905L, 1)
    299299        };
    300300
    301         public  static final String         MAP_FILENAME_PATH                       = Navit.MAP_FILENAME_PATH;
     301        public  static final String         MAP_FILENAME_PATH                       = Navit.map_filename_path;
    302302       
    303303        public static NavitMap[] getAvailableMaps() {
    304304                class filterMaps implements FilenameFilter {
  • navit-svn/navit/android.c

     
    7474}
    7575
    7676JNIEXPORT void JNICALL
    77 Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity, jobject lang, int version, jobject display_density_string, jobject path)
     77Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity, jobject lang, int version, jobject display_density_string, jobject path, jobject map_path)
    7878{
    7979        const char *langstr;
    8080        const char *displaydensitystr;
     81        const char *map_filename_path;
    8182        android_version=version;
    8283        __android_log_print(ANDROID_LOG_ERROR,"test","called");
    8384        jnienv=env;
     
    9192        dbg(lvl_debug,"*****displaydensity=%s\n",displaydensitystr);
    9293        setenv("ANDROID_DENSITY",displaydensitystr,1);
    9394        (*env)->ReleaseStringUTFChars(env, display_density_string, displaydensitystr);
     95
     96        map_filename_path=(*env)->GetStringUTFChars(env, map_path, NULL);
     97        setenv("MAP_FILENAME_PATH",map_filename_path,1);
     98        (*env)->ReleaseStringUTFChars(env, display_density_string, map_filename_path);
     99
    94100        const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
    95101        main_real(1, &strings);
    96102        (*env)->ReleaseStringUTFChars(env, path, strings);
    97103}
    98104
     105
    99106JNIEXPORT void JNICALL
    100107Java_org_navitproject_navit_Navit_NavitDestroy( JNIEnv* env)
    101108{
  • navit-svn/navit/maps.c

     Index: navit-svn/navit/maps.c
     
    4343        attrs_dup=attr_list_dup(attrs);
    4444        data=attr_search(attrs_dup, NULL, attr_data);
    4545        if (data) {
     46
     47
     48                if ((strlen(data->u.str)>0) && (data->u.str[0]!= '/'))
     49                {
     50                        char *modified_path = g_strdup_printf("%s%s",getenv("MAP_FILENAME_PATH"),data->u.str);
     51                        g_free(data->u.str);
     52                        data->u.str = modified_path;
     53                }
     54
     55
     56
     57
    4658                struct file_wordexp *wexp=file_wordexp_new(data->u.str);
    4759                int i,count=file_wordexp_get_count(wexp);
    4860                char **array=file_wordexp_get_array(wexp);
  • navit-svn/navit/start_real.c

     
    170170                list = g_list_append(list,g_strdup("navit.xml.local"));
    171171                list = g_list_append(list,g_strdup("navit.xml"));
    172172#ifdef HAVE_API_ANDROID
    173                 // new preferred location (the new one should have priority over the legacy!)
    174                 list = g_list_append(list,g_strdup("/sdcard/navit/navit.xml"));
    175                 // legacy location, still supported
    176                 list = g_list_append(list,g_strdup("/sdcard/navit.xml"));
     173                list = g_list_append(list,g_strjoin(NULL,getenv("MAP_FILENAME_PATH"), "navit.xml" , NULL));
     174                /* new preferred location (the new one should have priority over the legacy!) */
     175                /* list = g_list_append(list,g_strdup("/sdcard/navit/navit.xml")); */
     176                /* legacy location, still supported */
     177                /*list = g_list_append(list,g_strdup("/sdcard/navit.xml")); */
    177178#endif
    178179                list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL));
    179180                list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL));
  • navit-svn/navit/xslt/map_sdcard_navitmap_bin.xslt

     
    11<?xml version="1.0"?>
    22<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xi="http://www.w3.org/2001/XInclude">
    33        <xsl:template match="/config/navit/mapset/xi:include">
    4                 <maps type="binfile" data="/sdcard/navit/*.bin" />
     4                <maps type="binfile" data="*.bin" />
     5                <maps type="textfile" data="*.txt" />
    56        </xsl:template>
    67</xsl:transform>