Android
Navit is available on Android! Using the Internal GUI, Navit enables complete offline routing anywhere in the world using map data from OpenStreetMaps. Note that this is not an Android app in the traditional sense - it is a direct port of Navit (with a couple of extra features for Android), so isn't as integrated with Android as you may expect from other apps - bear this in mind when using it for the first time!
Contents
Installation
Most users use one of two routes to get Navit onto their Android devices: install from Google Play, or manually install from apk's built nightly from the latest source code.
Installing from the Google Play is perhaps the most simple, and allows for automatic updating. Manually installing from an apk means that you have the very latest features built into Navit, but requires you to install and update it yourself.
The following table links through to the nightly apk's. Choose the one which best matches your device. The nightly builds are compatible with devices running Froyo (2.2.X) or later.
Compatible devices | |
---|---|
ARM v5 | ARMv5TE processors, covers most Android devices including: HTC Desire Z, Motorola Defy/Droid/Milestone, Samsung I7500 Galaxy, Samsung Galaxy S2, Samsung Galaxy Spica i5700, Samsung Galaxy S, SE Xperia X10, Xperia X8, LG Optimus Speed (P990) |
ARM v4 | ARMv4 processors. Devices which require this version include Neo Freerunner (running Android). |
Compatible Android devices
The following tables list Android devices on which Navit has been tested. Please consider editing the table for your own device.
Device | Status | Tested on SVN revision |
---|---|---|
Archos 5 IT | running fine | 4383, 4395, 4411 |
Acer ICONIA TAB A500 | running fine; after suspend GPS must be disabled and enabled again | (market) |
Geeksphone One with RCMod 4.0.0 (Gingerbread) | Exits on startup (following crash of PicoTTS) unless speech output is disabled, runs fine otherwise | 4319 |
Geeksphone Zero with RCMod 7.0.2 (Gingerbread) | running fine | (market) |
Google/Samsung Galaxy Nexus I9250 | running fine | 4785 (market), 4909-5010 |
Google/Samsung Nexus S | running fine after brief test | (market) |
Huawei Ideos X3 (U8510) | speech synthesis often incomplete | 4696 |
Huawei M860 | running fine | 4281 |
HTC Desire | osd gps-status doesn't work - otherwise running fine, unless stated below | all svn versions since 4200 |
HTC Desire | modifications for osd navigation_next_turn in config file necessary | 5078 |
HTC Desire | display remains black | 5175-5179 |
HTC Desire | application crashes as soon as gps link is established | 5149-5174 |
HTC Desire | starts, icon appears in the upper left corner, application stops | 4879-4992 |
HTC Desire HD (Ace) | running fine | (market) |
HTC Desire S | running fine | 4281 (market) |
HTC Desire Z | running fine | 4281 (market), 4785 (market), 4808 |
HTC Explorer A310e (Android 2.3.5) | running fine - but GPS status & texte: label="${vehicle.position_sats_used}/${vehicle.position_qual}" do not work - Route\Height Profile does not work too (black screen) | 5126 |
HTC Hero (Android 2.2, cronos) | running fine (saving bookmaks made it unusable) | 4118 |
HTC Incredible S | running fine | 4281 (market) |
HTC Sensation (Android 4.0.3) | running fine | 4785 (market) |
HTC Wildfire (Android 2.2) | running fine (theme changes are not saved) | 4997 |
LG Optimus GT540 | running fine | 4118, 4281 (Google market) |
LG Optimus P500 One | running fine | current market build, 4383, 4446 |
Motorola Defy | running fine | 4281 (market), 4352, 4383 |
Motorola Milestone 2 | running fine | (market) |
Motorola Xoom (Android 3.2) | running fine | (market) → 0.5.0 |
Neo Freerunner (AoF Cupcake 0.2.0) | cannot install, adb install returns [INSTALL_FAILED_OLDER_SDK]. Is Cupcake no longer supported? |
4376 |
Neo Freerunner (AoF-SD Froyo) | runs fine; GPS must be started manually | 4548 |
Neo Freerunner (AoF-SD Froyo) | starts, icon in left upper corner, application stops | 4833 |
Samsung GT-I5500 (Android 2.1 update1) | running fine | 0.5.0-3828 |
Samsung Galaxy Gio GT-S5660 (Android 2.2.1 Froyo) | running fine | svn 4663 |
Samsung Galaxy Gio GT-S5660 (Android 2.2.3) | running fine | svn 4785 |
Samsung Galaxy Gio GT-S5660 (Android 2.3.6) | running fine | svn 4997 |
Samsung Galaxy S I9000 | running fine | svn 4183, 4229, 4510 - market 0.5.0-4281 |
Samsung Galaxy S2 I9100 | running fine | 4940 |
Samsung Galaxy Spica I5700 with Samdroid mod | running fine | 4083 |
Samsung Galaxy Tab P1000 | running fine | 4183 |
Xiaomi One Plus MIUI 2.3.5k | running fine; GPS to start manually | 0.5.0 4929 |
Xperia X8 | running fine | 0.5.0.4281 |
Xperia X10 | running fine | ?? |
ZTE Blade / Orange San Francisco | running fine | 4155 |
Useful information
Maps
There are two ways to get a map into Navit.
- Press your device's Menu button, and choose Download first map. Maps will be greater than 50MB, so it's best to turn on your wifi.
- Download a map from the Navit Map Extractor, connect your device to your pc, choose Select to copy files to/from your computer on the device and save the downloaded map as navitmap.bin into the navit folder on your device.
Advanced configuration
When Navit starts, a copy of /data/data/org.navitproject.navit/share/navit.xml matching your display resolution is extracted from the apk. If you have root permissions on your device, you can use this file as a starting point for a customized configuration. Otherwise unzip the apk file and use the xml file from the subdirectory res/raw/ which matches the display resolution (ldpi, mdpi or hdpi). You can save your configuration as /sdcard/navit/navit.xml which is then used instead of the one from the data directory.
- If you'd like to configure the initial view of the map (it should automatically center on your position if the on-board GPS has a fix) change the <navit center=... attribute to your home coordinates.
- See Configuring Navit for additional settings.
Keyboard
By default Navit uses the Internal keyboard for menu items which require text input from the user, such as POI search. To use your default Android keyboard instead, just press and hold your device's Menu button until the keyboard pops up. This is actually default Android behaviour (nothing to do with Navit), and can be deployed anywhere, within any app!
Launch via Google
When you click on a place in Google Maps, you can choose to navigate to it with Navit (assuming that there isn't already a default navigation app set).
Bookmarks file
The bookmark.txt file is stored on the device at the location
/data/data/org.navitproject.navit/home/bookmark.txt
and each line in the file looks like
mg:0x112233 0x445566 type=bookmark label="Home" path="Home"
You will need root access on your device to be able to see this file. An other way without the need of root access is using the Android Debug Bridge. If you installed the Android SDK on your computer, the following command transfers the bookmark.txt file from your device to the current working directory:
adb pull /data/data/org.navitproject.navit/home/bookmark.txt
It is also possible to transfer the changed file back to your device by using adb push. See [1] for a more detailed description of the adb client.
Developing for Android
Pre-requisites
For Navit
- Ensure that your system has the correct dependencies installed to build Navit.
- Checkout the latest copy of Navit from svn. The instructions on this page assume you have checked-out a copy to ~/src/navit-svn/
cd ~/src svn co https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit navit-svn
For Android
- Download the Android NDK and SDK.
- Unzip the SDK and NDK to a directory of your choice. The following instructions assume that the SDK and NDK have been unzipped to ~/src.
- Ensure that the following paths are on your PATH environment variable:
path-to-sdk/tools path-to-sdk/platform-tools path-to-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin
- On Ubuntu you can accomplish this using the following command (assuming the SDK and NDK have been unzipped to ~/src):
export ANDROID_NDK=~/src/android-ndk-r6b export ANDROID_SDK=~/src/android-sdk-linux export PATH=$PATH:$ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
- Prepare Android SDK:
- run android in command line - this will show a GUI for preparing Android SDK
- select Android 2.2 (API 8) and click 'Install N packages...' button - this will download SDK packages that support API 8
Compiling
Assuming you've followed the previous steps, you're probably setup to start compiling. Using CMake is the recommended way of compiling Navit for Android. Ensure that:
- You have a java-jdk installed on your system. On Ubuntu:
sudo apt-get install openjdk-6-jdk
- On Ubuntu, ensure that ant1.8 is installed:
sudo apt-get install ant1.8
With cmake
- Ensure that you have CMake 2.8 installed.
- Create a build directory - this will be the directory into which the Android version of Navit will be built. Assume we've made one in ~/src as follows:
cd ~/src mkdir android-build
- Optional: Add a SOURCE_PATH environment variable to your system, pointing to the directory in which you checked out a copy of Navit. You can leave out this step, but make sure you change $SOURCE_PATH in the next steps to the actual path of the directory.
export SOURCE_PATH=~/src/navit-svn
- Step into the build directory:
cd ~/src/android-build
- Run CMake (ensure that you're in the build directory when you do this!):
cmake -DCMAKE_TOOLCHAIN_FILE=$SOURCE_PATH/Toolchain/arm-eabi.cmake -DCACHE_SIZE="(20*1024*1024)" -DAVOID_FLOAT=1 -DANDROID_PERMISSIONS="CAMERA" -DANDROID_API_VERSION=8 $SOURCE_PATH
- Build the apk package:
make make apkg
- The previous commands have now created a package called Navit-debug.apk in the following directory:
~/src/android-build/navit/android/bin
- Copy the package to your device (i.e. sd-card) and run it from there (through a file-manager, for example), or
- If debug bridge (adb) is enabled run:
adb install navit/android/bin/Navit-debug.apk
- Later, to reinstall already installed Navit app run:
adb install -r navit/android/bin/Navit-debug.apk
With autotools
- Run ./autogen.sh from the navit dir.
cd ~/src/navit-svn/ ./autogen.sh
- Make sure you have
- $ANDROID_NDK pointing to your ndk installation
- $ANDROID_API_LVL set to 4
- $ANDROID_NDK/toolchains/arm-eabi-*/prebuilt/linux-x86/bin in your $PATH
- $ANDROID_PLATFORM set to $ANDROID_NDK/platforms/android-$ANDROID_API_LVL/arch-arm
- Run something like
./configure \ PKG_CONFIG=arm-eabi-pkgconfig \ RANLIB=arm-eabi-ranlib \ AR=arm-eabi-ar \ CC="arm-eabi-gcc -L$ANDROID_PLATFORM/usr/lib -L. -I$ANDROID_PLATFORM/usr/include" \ CXX=arm-eabi-g++ \ --host=arm-eabi-linux_android \ --enable-avoid-float \ --enable-avoid-unaligned \ --enable-cache-size=20971520 \ --enable-svg2png-scaling=8,16,32,48,64,96 \ --enable-svg2png-scaling-nav=59 \ --enable-svg2png-scaling-flag=32 \ --with-xslts=android,plugin_menu,pedestrian_button,pedestrian \ --with-saxon=saxonb-xslt \ --enable-transformation-roll \ --enable-plugin-pedestrian \ --with-android-permissions=CAMERA \ --with-android-project="android-$ANDROID_API_LVL"
- Run make
- cd navit
- Run make apkg
The result is in android/bin as Navit-debug.apk
Even easier is it to use this hopefully foolproof build script. Since r4507, it is part of navit. From the navit-main-directory, call it with ./contrib/android_build.sh. Good luck!
With cmake on Windows
- install CMake 2.8 if you haven't already, add folder with exe to PATH
- install MinGW or use MinGW included in the git windows folder (e.g. C:\msysgit\mingw\), add folder with exe to PATH
- install saxon .NET version from http://sourceforge.net/projects/saxon/files/Saxon-HE/9.3/SaxonHE9-3-0-4N-setup.exe/download,
- rename transform.exe to saxon.exe, add folder with exe to PATH
- create a build dir (i.e. "mkdir android-build")
- run from build dir ( replace $SOURCE_PATH):
cmake -DCMAKE_TOOLCHAIN_FILE=$SOURCE_PATH/Toolchain/arm-eabi.cmake -DCACHE_SIZE="(20*1024*1024)" -DAVOID_FLOAT=1 -DANDROID_PERMISSIONS="CAMERA" $SOURCE_PATH -G "MinGW Makefiles"
- run MinGW32-make
- run MinGW32-make apkg
- install Navit-debug.apk (in <build path>/navit/android/bin) to your device
- copy navit/android/bin/Navit-debug.apk to your device (i.e. sd-card) and run it from there or
- if debug bridge (adb) is enabled run adb install navit/android/bin/Navit-debug.apk