Difference between revisions of "Android"

From Navit's Wiki
Jump to: navigation, search
(Compatible Android devices)
(Compatible Android devices)
Line 45: Line 45:
 
| Huawei M860 || class="cell_yes"| running fine  || 4281
 
| Huawei M860 || class="cell_yes"| running fine  || 4281
 
|-
 
|-
| HTC Desire || class="cell_yes"| osd gps-status doesn't work - otherwise running fine, unless stated below || all svn versions
+
| HTC Desire || class="cell_yes"| osd gps-status doesn't work - otherwise running fine, unless stated below || all svn versions since 4200
 
|-
 
|-
 
| HTC Desire || class="cell_maybe"| modifications for osd navigation_next_turn in config file necessary || 5078
 
| HTC Desire || class="cell_maybe"| modifications for osd navigation_next_turn in config file necessary || 5078

Revision as of 05:34, 13 July 2012

First run of Navit

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!

Installation

QR code: scan this to get Navit from Google Play

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

In-app map downloading

Maps

There are two ways to get a map into Navit.

  1. 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.
  2. 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.

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 Android 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

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