summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Herlant <aerostitch@users.noreply.github.com>2019-10-29 10:06:21 -0700
committerGitHub <noreply@github.com>2019-10-29 10:06:21 -0700
commit556baf3c00a9c6e078fba611a5b6d71038e8e515 (patch)
tree4eb621780ba07b057bcef97e7ccdf394da0d0bec
parent8a9c2cb0bb89b030e4d63119e604697d7246f242 (diff)
parent91c085e7f9e0e31eaedd9926b3682d980587333c (diff)
downloadnavit-556baf3c00a9c6e078fba611a5b6d71038e8e515.tar.gz
Merge branch 'trunk' into alloca_fix
-rw-r--r--.circleci/config.yml3
-rw-r--r--CHANGELOG.md12
-rw-r--r--docs/development/android_development.rst14
-rw-r--r--docs/development/wince_development.rst4
-rw-r--r--docs/development/windows_development.rst178
-rw-r--r--navit/android.c39
-rw-r--r--navit/android/AndroidManifest.xml11
-rw-r--r--navit/android/build.gradle9
-rw-r--r--navit/android/res/xml/navit_backup_rules.xml4
-rw-r--r--navit/android/src/org/navitproject/navit/Navit.java230
-rw-r--r--navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java8
-rw-r--r--navit/android/src/org/navitproject/navit/NavitBackupTask.java10
-rw-r--r--navit/android/src/org/navitproject/navit/NavitCallbackHandler.java84
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDialogs.java8
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java11
-rw-r--r--navit/android/src/org/navitproject/navit/NavitGraphics.java105
-rw-r--r--navit/android/src/org/navitproject/navit/NavitMapDownloader.java899
-rw-r--r--navit/android/src/org/navitproject/navit/NavitRestoreTask.java12
-rw-r--r--navit/android/src/org/navitproject/navit/NavitUtils.java6
-rw-r--r--navit/android/src/org/navitproject/navit/NavitVehicle.java1
20 files changed, 802 insertions, 846 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
index de3a79e1e..d1a085d23 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -83,9 +83,6 @@ jobs:
sudo apt-get update
sudo apt-get install -y ant cmake gettext libsaxonb-java librsvg2-bin pkg-config rename
- run:
- name: Install Android SDK components
- command: sdkmanager "cmake;3.6.4111459"
- - run:
name: Install ndk
command: |
echo y | sdkmanager --licenses
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5d53978fc..fa94da6ab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -791,20 +791,20 @@ Release 0.5.2 had issues with the version not properly updated in the `CMakeList
## [v0.5.0] - 2015-12-31
-This release was done before the adoption of this changelog format. Click
-[here](https://github.com/navit-gps/navit/compare/v0.5.0-rc.2...v0.5.0)
+This release was done before the adoption of this changelog format. Use
+[this v0.5.0-rc.2 to v0.5.0 comparison link](https://github.com/navit-gps/navit/compare/v0.5.0-rc.2...v0.5.0)
to view the corresponding changes.
## [v0.5.0-rc2] - 2015-09-02
-This release was done before the adoption of this changelog format. Click
-[here](https://github.com/navit-gps/navit/compare/v0.5.0-rc.1...v0.5.0-rc.2)
+This release was done before the adoption of this changelog format. Use
+[this v0.5.0-rc.1 to v0.5.0-rc.2 comparison link](https://github.com/navit-gps/navit/compare/v0.5.0-rc.1...v0.5.0-rc.2)
to view the corresponding changes.
## [v0.5.0-rc1] - 2015-08-08
-This release was done before the adoption of this changelog format. Click
-[here](https://github.com/navit-gps/navit/compare/v0.5.0-beta.1...v0.5.0-rc.1)
+This release was done before the adoption of this changelog format. Use
+[this v0.5.0-beta.1 to v0.5.0-rc.1 comparison link](https://github.com/navit-gps/navit/compare/v0.5.0-beta.1...v0.5.0-rc.1)
to view the corresponding changes.
[Unreleased]: https://github.com/navit-gps/navit/compare/v0.5.3...HEAD
diff --git a/docs/development/android_development.rst b/docs/development/android_development.rst
index 783a29e91..323a0d877 100644
--- a/docs/development/android_development.rst
+++ b/docs/development/android_development.rst
@@ -22,7 +22,7 @@ For Navit
For Android
~~~~~~~~~~~
- * Download the Android `SDK <http://dl.google.com/android/android-sdk_r18-linux.tgz>` and `NDK <http://dl.google.com/android/ndk/android-ndk-r8-linux-x86.tar.bz2>`
+ * Download the Android `SDK <http://dl.google.com/android/android-sdk_r18-linux.tgz>`_ and `NDK <http://dl.google.com/android/ndk/android-ndk-r8-linux-x86.tar.bz2>`_
* 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`
@@ -88,7 +88,7 @@ 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>,
+ * 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`):
@@ -135,19 +135,19 @@ Change to the Navit source dir and run `./gradlew build`.
So far, two issues have been observed with the build:
+ * Bitmap resources are missing from the APK. A workaround is described `here <https://github.com/navit-gps/navit/pull/553#issuecomment-406881461>`_ integration of these steps into gradle is being worked on.
* Building `vehicle/gpsd` and `map/garmin` fails on Android. As a workaround, edit `CMakeLists.txt` `, inserting the following two lines in the `if(ANDROID)` block (around line 710):
-.. code-block::
+.. code-block:: cmake
set_with_reason(vehicle/gpsd "Android detected" FALSE)
set_with_reason(map/garmin "Android detected" FALSE)
- * Bitmap resources are missing from the APK. A workaround is described `here <https://github.com/navit-gps/navit/pull/553#issuecomment-406881461>` — integration of these steps into gradle is being worked on.
Testing an alternative build
============================
If you want to try an alternative build (e.g. Jan's builds with alternative routing) you can do it by :
- * enable unsigned apk installation ( `example build <http://www.tomsguide.com/faq/id-2326514/download-install-android-apps-unidentified-developer.html>` )
- * installing an alternative apk (e.g. `an APK from CircleCI <https://circle-artifacts.com/gh/jandegr/navit/292/artifacts/0/tmp/circle-artifacts.MZk9Slb/navit-96b3160a2e51dffb54e3aa74c17ce3683c52828e-debug.apk>`)
- * you will probably need an alternative map to match the application requirements (such as `this one <https://circle-artifacts.com/gh/jandegr/navit/265/artifacts/0/tmp/circle-artifacts.WJkkT78/BNLFR.bin>`)
+ * enable unsigned apk installation ( `example build <http://www.tomsguide.com/faq/id-2326514/download-install-android-apps-unidentified-developer.html>`_ )
+ * installing an alternative apk (e.g. `an APK from CircleCI <https://circle-artifacts.com/gh/jandegr/navit/292/artifacts/0/tmp/circle-artifacts.MZk9Slb/navit-96b3160a2e51dffb54e3aa74c17ce3683c52828e-debug.apk>`_)
+ * you will probably need an alternative map to match the application requirements (such as `this one <https://circle-artifacts.com/gh/jandegr/navit/265/artifacts/0/tmp/circle-artifacts.WJkkT78/BNLFR.bin>`_)
diff --git a/docs/development/wince_development.rst b/docs/development/wince_development.rst
index 423139460..7f15672ed 100644
--- a/docs/development/wince_development.rst
+++ b/docs/development/wince_development.rst
@@ -204,7 +204,7 @@ libpng
libtiff
^^^^^^^
-.. code-block::
+::
libtool: link: CURRENT `' must be a nonnegative integer
@@ -222,7 +222,7 @@ libtiff
glib
^^^^
-.. code-block::
+::
gatomic.c:570: Error: no such instruction: `swp %eax,%eax,[%esi]'
diff --git a/docs/development/windows_development.rst b/docs/development/windows_development.rst
index 1c5248605..6aa695f82 100644
--- a/docs/development/windows_development.rst
+++ b/docs/development/windows_development.rst
@@ -5,7 +5,7 @@ Windows Development
Compiling using CMake
=====================
-At the moment, compiling with [[CMake]] seems to be the only way to create a runnable binary in Windows.
+At the moment, compiling with CMake seems to be the only way to create a runnable binary in Windows.
Compiling / debugging using CodeBlocks & mingw compiler
@@ -32,14 +32,14 @@ Install the packages mentioned above. After everything has been installed you ca
.. warning::
- Not up to date! Directory projs\CodeBlocks was deleted in 2009
+ Not up to date! Directory projs\CodeBlocks was deleted in 2009
Compiling
---------
.. warning::
- Not up to date! Directory projs\CodeBlocks was deleted in 2009
+ Not up to date! Directory projs\CodeBlocks was deleted in 2009
To compile:
@@ -73,8 +73,9 @@ Download cygwin
Download the cygwin setup.exe from http://cygwin.com/setup.exe
.. note::
- I have been unable to build with cygwin according to these instructions. I suggest you only try it if you are knowledgable
- and can improve the instructions. --[[User:Nop|Nop]] 13:01, 7 November 2010 (UTC)
+
+ I have been unable to build with cygwin according to these instructions. I suggest you only try it if you are knowledgable
+ and can improve the instructions. --[[User:Nop|Nop]] 13:01, 7 November 2010 (UTC)
Dependencies
------------
@@ -110,13 +111,13 @@ Edit configure.in and add the following to CFLAGS at line 10:
.. code-block:: bash
- -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
+ -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
It should look like this :
.. code-block:: bash
- CFLAGS="$CFLAGS -Wall -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wreturn-type -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
+ CFLAGS="$CFLAGS -Wall -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith -Wreturn-type -D_GNU_SOURCE -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include"
Now run `autogen.sh && ./configure`
@@ -153,7 +154,7 @@ Configuration GPS
.. note::
- If this works at all, it's only when running under cygwin. See above for the proper Win32 configuration. --[[User:Nop|Nop]] 13:04, 7 November 2010 (UTC)
+ If this works at all, it's only when running under cygwin. See above for the proper Win32 configuration. --[[User:Nop|Nop]] 13:04, 7 November 2010 (UTC)
If you have a gps cable device which spits out NMEA data, you can configure it like under unix. Beware of the following enumeration:
* ComPort1==ttyS0
@@ -164,7 +165,7 @@ Example:
.. code-block:: xml
- <vehicle name="GPSOnCom3" profilename="car" enabled="yes" active="1" source="file:/dev/ttyS2" baudrate="38400" color="#0000ff"/>
+ <vehicle name="GPSOnCom3" profilename="car" enabled="yes" active="1" source="file:/dev/ttyS2" baudrate="38400" color="#0000ff"/>
Running under Cygwin
--------------------
@@ -189,42 +190,38 @@ Downloads
---------
In order to compile the win32 version of Navit, you need the following software development tools
- * GTK+ toolkit for win32 from `SourceForgeDownload: Glade/GTK+ <http://sourceforge.net/project/showfiles.php?group_id=98754>` (select gtk+-win32-devel)
- * MinGW from `SourceForgeDownload: MinGW <http://sourceforge.net/project/showfiles.php?group_id=2435>`_ (select Automated MinGW installer)
- * MSYS from `SourceForgeDownload: MSYS Base System <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=2496>`
- * msysCORE from `SourceForgeDownload: MSYS Base System <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963>`
- * diffutils from `SourceForgeDownload: MSYS Base System <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963>`
- * autoconf from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`
- * autogen from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`
- * automake from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`
- * gettext from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`
- * libtool from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`
- * libiconv from `SourceForgeDownload: MSYS Supplementary Tools <http://sourceforge.net/downloads/mingw/MinGW/libiconv>`
-
-Probably the easiest way to obtain and install all the MSYS packages is to follow the instructions `here <http://www.mingw.org/wiki/msys>`
+ * GTK+ toolkit for win32 from `Glade/GTK+ <http://sourceforge.net/project/showfiles.php?group_id=98754>`_ (select gtk+-win32-devel)
+ * MinGW from `MinGW <http://sourceforge.net/project/showfiles.php?group_id=2435>`_ (select Automated MinGW installer)
+ * MSYS from `MSYS Base System <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=2496>`_
+ * msysCORE from `MSYSCore Base System <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963>`_
+ * diffutils from `diffutils <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=24963>`_
+ * autoconf, autogen, automake, gettext and libtool from `MSYS Supplementary Tools <http://sourceforge.net/project/showfiles.php?group_id=2435&package_id=67879>`_
+ * libiconv from `MinGW's libiconv <http://sourceforge.net/downloads/mingw/MinGW/libiconv>`_
+
+Probably the easiest way to obtain and install all the MSYS packages is to follow the instructions `here <http://www.mingw.org/wiki/msys>`_
For speech support, one option is to use the "cmdline" speech type (refer to [[Configuration]]) and a utility such as a Windows port of `Say <http://krolik.net/wsvn/wsvn/public/Say%2B%2B/>`_
TroubleShooting
===============
-.. code-block::
+::
- /bin/m4: unrecognized option '--gnu'
+ /bin/m4: unrecognized option '--gnu'
Wrong version of m4, use 1.4.13
-.. code-block::
+::
- Can't locate object method "path" via package "Request (perhaps you forgot to load "Request"?)
+ Can't locate object method "path" via package "Request (perhaps you forgot to load "Request"?)
Wrong version of Autoconf, make sure the latest version is installed, plus the wrapper (version 1.7). Also delete autom4te.cache.
-.. code-block::
+::
- command PKG_MODULE_EXISTS not recognized
+ command PKG_MODULE_EXISTS not recognized
For some reason the necessary file "pkg.m4" containing various macros is missing. Find it and put it in ./m4
@@ -236,33 +233,39 @@ This is a quick walk-thru on compiling a win32 exe using Ubuntu as development m
Set up Ubuntu to build Linux version
------------------------------------
-First, setup compiling in linux ubuntu explained in https://navit.readthedocs.io/en/trunk/development/linux_development.html
+First, setup compiling in linux ubuntu explained in :doc:`/development/linux_development`
Here is a quick walk-thru:
Get all the dependencies for Ubuntu in one command:
.. code-block:: bash
- sudo apt-get install cmake zlib1g-dev libpng12-dev libgtk2.0-dev librsvg2-bin \
+ sudo apt-get install cmake zlib1g-dev libpng12-dev libgtk2.0-dev librsvg2-bin \
g++ gpsd gpsd-clients libgps-dev libdbus-glib-1-dev freeglut3-dev libxft-dev \
libglib2.0-dev libfreeimage-dev gettext
-get the latest SVN-source.
-First, cd into root: `cd ~`
+get the latest source from git. First, cd into root: `cd ~`
Now, let's grab the code from SVN. This assumes that you have subversion installed.
This will download the latest SVN source and put in in folder "navit-source".
You can use any location you want for the source, just to keep it simple we place it right in the root.
-`svn co svn://svn.code.sf.net/p/navit/code/trunk/navit/ navit-source`
+
+.. code-block:: bash
+
+ git clone git@github.com:navit-gps/navit.git navit-source
Create a directory to put the build in and cd into it:
.. code-block:: bash
- mkdir navit-build
- cd navit-build
+ mkdir navit-build
+ cd navit-build
-Start compiling and build navit: `cmake ~/navit-source && make`
+Start compiling and build navit:
+
+.. code-block:: bash
+
+ cmake ~/navit-source && make
At the end of the process navit is built into navit-build/.
You can start navit to see if all worked well:
@@ -277,38 +280,42 @@ Building the win32 exe
Now that we have set up the basic building environment we can build a win32 exe using the next walk-thru.
-Install ming32 and the dependencies: `sudo apt-get install mingw32 libsaxonb-java librsvg2-bin mingw32-binutils mingw32-runtime default-jdk`
+Install ming32 and the dependencies:
+
+.. code-block:: bash
+
+ sudo apt-get install mingw32 libsaxonb-java librsvg2-bin mingw32-binutils mingw32-runtime default-jdk
now cd into the source:
.. code-block:: bash
- cd ~
- cd navit-source
+ cd ~
+ cd navit-source
We are going to place the build directory within the source directory.
First, make the build directory and cd into it:
.. code-block:: bash
- mkdir build
- cd build
+ mkdir build
+ cd build
From within the build directory start compiling and building:
.. code-block:: bash
- cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw32.cmake ../
+ cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain/mingw32.cmake ../
And then make the actual build:
.. code-block:: bash
- make -j4
+ make -j4
The -j4 part is used to define the amount of processors the process can use.
-So if you have a dual-core pc use -j2
-If -j4 fails, try -j2 and if that fails try "make" alone.
+So if you have a dual-core pc use `-j2`
+If `-j4` fails, try `-j2` and if that fails try `make` alone.
Known "bugs"
------------
@@ -319,7 +326,11 @@ Cut and paste (or move) the "locale" folder to the navit folder.
This should be investigated anf fixed so the folder is in the correct place after a build.
So move `navit-source/build/locale/` to `navit-source/build/navit/locale`
-You can run `mv navit-source/build/locale/ navit-source/build/navit/`
+You can run
+
+.. code-block:: bash
+
+ mv navit-source/build/locale/ navit-source/build/navit/
The country-flags images in the "town" search are not displayed.
This could be due to a conversion error during build, has to be investigated and solved but doesn't inflict with the use of navit.
@@ -331,10 +342,9 @@ You can delete those without any problem.
Windows Mobile/Windows CE
=========================
-[[WinCE_development]] may have details that are relevant for compilation on WindowsCE / Windows Mobile.
+:doc:`/development/wince_development` may have details that are relevant for compilation on WindowsCE / Windows Mobile.
-You can download now
-[http://download.navit-project.org/navit/wince/svn/ cab or zip file for Windows Mobile and WindowsCE]!
+You can download now `cab or zip file for Windows Mobile and WindowsCE <http://download.navit-project.org/navit/wince/svn/>`_ !
Highest number is the newest version of NavIt.
Download it and save on your Storage Card. Install it.
@@ -347,13 +357,13 @@ This is a manual for self compiling (navit.exe)
You need to have a Linux (like Ubuntu).
If you didn´t have Linux, start your Linux on Live-CD.
-Compiling navit for wince using http://cegcc.sourceforge.net/.
+Compiling navit for wince using `<http://cegcc.sourceforge.net/>`_.
Download latest cegcc release and install it.
In November 2009 versions compiled using arm-cegcc-gcc (both revision 1214 and release 0.59.1) had problems (threw exception_datatype_misalignment and caused access violations).<br />
-Using the variant arm-mingw32ce of CeGCC 0.59.1 it was possible to build a working executable which can be debugged (see [[WinCE development]]).
+Using the variant arm-mingw32ce of CeGCC 0.59.1 it was possible to build a working executable which can be debugged (see :doc:`/development/wince_development`).
-Source [http://www.archlinux.de/?page=PackageDetails;package=4837 cegcc-arm and mingw] (TODO dead link)
+Source `cegcc-arm and mingw <http://www.archlinux.de/?page=PackageDetails;package=4837>`_ (TODO dead link)
Current installs in /opt/cegcc.
Setup a cross-compile environment:
@@ -362,16 +372,16 @@ Example setcegccenv.sh:
.. code-block:: bash
- #! /bin/bash
- export PATH=$PATH:/opt/cegcc/bin/
- export CEGCC_PATH=/opt/cegcc
- export WINCE_PATH=/opt/wince
- export PATH=$CEGCC_PATH/bin:$PATH
- export CPPFLAGS="-I$WINCE_PATH/include"
- export LDFLAGS="-L$WINCE_PATH/lib -L$CEGCC_PATH/lib"
- export LD_LIBRARY_PATH="$WINCE_PATH/bin"
- export PKG_CONFIG_PATH="$WINCE_PATH/lib/pkgconfig"
- export PKG_CONFIG_LIBDIR="$WINCE_PATH/lib/pkgconfig"
+ #! /bin/bash
+ export PATH=$PATH:/opt/cegcc/bin/
+ export CEGCC_PATH=/opt/cegcc
+ export WINCE_PATH=/opt/wince
+ export PATH=$CEGCC_PATH/bin:$PATH
+ export CPPFLAGS="-I$WINCE_PATH/include"
+ export LDFLAGS="-L$WINCE_PATH/lib -L$CEGCC_PATH/lib"
+ export LD_LIBRARY_PATH="$WINCE_PATH/bin"
+ export PKG_CONFIG_PATH="$WINCE_PATH/lib/pkgconfig"
+ export PKG_CONFIG_LIBDIR="$WINCE_PATH/lib/pkgconfig"
For installation, compiling and configuring please see manual for NavIt on Linux.
@@ -380,7 +390,7 @@ Then autogen.sh and configure navit. Example configure for wince:
.. code-block:: bash
- ./configure \
+ ./configure \
RANLIB=arm-cegcc-ranlib \
CXX=arm-cegcc-g++ \
CC=arm-cegcc-gcc \
@@ -416,7 +426,7 @@ If example did not run, do this:
.. code-block:: bash
- ./configure \
+ ./configure \
RANLIB=arm-mingw32ce-ranlib \
CXX=arm-mingw32ce-g++ \
CC=arm-mingw32ce-gcc \
@@ -462,26 +472,26 @@ For installation you need packages librapi, liprapi2, pyrapi2, libsync.
Package synce-0.9.0-1 contains librapi and libsync.
You do not need to install it again!
-Sources: [http://sourceforge.net/project/showfiles.php?group_id=30550 Sync] If link is crashed, use this: [http://rpmfind.net/linux/rpm2html/search.php?query=librapi.so.2 Sync Link2]
-libsync: [http://sourceforge.net/project/mirror_picker.php?height=350&width=300&group_id=30550&use_mirror=puzzle&filesize=&filename=libsynce-0.12.tar.gz&abmode= libsync]
-pyrapi2: [http://rpmfind.net/linux/rpm2html/search.php?query=pyrapi2.so pyrapi2]
-librapi2 [http://repository.slacky.eu/slackware-12.0/libraries/synce-librapi/0.11.0/src/ librapi2]
+Sources: `Sync <http://sourceforge.net/project/showfiles.php?group_id=30550>`_ If link is crashed, use this: `Sync Link2 <http://rpmfind.net/linux/rpm2html/search.php?query=librapi.so.2>`_
+libsync: `libsync <http://sourceforge.net/project/mirror_picker.php?height=350&width=300&group_id=30550&use_mirror=puzzle&filesize=&filename=libsynce-0.12.tar.gz&abmode=>`_
+pyrapi2: `pyrapi2 <http://rpmfind.net/linux/rpm2html/search.php?query=pyrapi2.so>`_
+librapi2 `librapi2 <http://repository.slacky.eu/slackware-12.0/libraries/synce-librapi/0.11.0/src/>`_
Once you have navit.exe ready, copy `/opt/cegcc/arm-cegcc/lib/device/*.dll` on your device.
For Debian use:
-.. code-block::
+.. code-block:: bash
- synce-pcp /opt/cegcc/arm-cegcc/lib/device/cegcc.dll ":/windows/cegcc.dll"
- synce-pcp /opt/cegcc/arm-cegcc/lib/device/cegccthrd.dll ":/windows/cegccthrd.dll"
+ synce-pcp /opt/cegcc/arm-cegcc/lib/device/cegcc.dll ":/windows/cegcc.dll"
+ synce-pcp /opt/cegcc/arm-cegcc/lib/device/cegccthrd.dll ":/windows/cegccthrd.dll"
All other Linux/Unix systems use:
-.. code-block::
+.. code-block:: bash
- pcp /opt/cegcc/arm-cegcc/lib/device/cegcc.dll ":/windows/cegcc.dll"
- pcp /opt/cegcc/arm-cegcc/lib/device/cegccthrd.dll ":/windows/cegccthrd.dll"
+ pcp /opt/cegcc/arm-cegcc/lib/device/cegcc.dll ":/windows/cegcc.dll"
+ pcp /opt/cegcc/arm-cegcc/lib/device/cegccthrd.dll ":/windows/cegccthrd.dll"
Synchronisation with a grahic surface, if connection to device failed:
@@ -502,15 +512,15 @@ Install navit.exe.
Debian:
-.. code-block::
+.. code-block:: bash
- synce-pcp navit.exe ":/Storage Card/navit.exe"
+ synce-pcp navit.exe ":/Storage Card/navit.exe"
All other:
-.. code-block::
+.. code-block:: bash
- pcp navit.exe ":/Storage Card/navit.exe"
+ pcp navit.exe ":/Storage Card/navit.exe"
Prepare a navit.xml.wince
@@ -521,17 +531,17 @@ Fix the paths to your maps "/Storage Card/binfilemap.bin"
Debian:
-.. code-block::
+.. code-block:: bash
- synce-pcp binfilemap.bin ":/Storage Card/binfilemap.bin"
- synce-pcp navit.xml.wince ":/Storage Card/navit.xml"
+ synce-pcp binfilemap.bin ":/Storage Card/binfilemap.bin"
+ synce-pcp navit.xml.wince ":/Storage Card/navit.xml"
All other:
-.. code-block::
+.. code-block:: bash
- pcp binfilemap.bin ":/Storage Card/binfilemap.bin"
- pcp navit.xml.wince ":/Storage Card/navit.xml"
+ pcp binfilemap.bin ":/Storage Card/binfilemap.bin"
+ pcp navit.xml.wince ":/Storage Card/navit.xml"
For a start best use the samplemap.
diff --git a/navit/android.c b/navit/android.c
index 4b73b3f5e..214e3171c 100644
--- a/navit/android.c
+++ b/navit/android.c
@@ -356,15 +356,16 @@ JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_getCoordForP
return return_string;
}
-JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_callbackMessageChannel( JNIEnv* env, jclass thiz,
- jint channel, jstring str) {
+
+JNIEXPORT jobject JNICALL Java_org_navitproject_navit_NavitCallbackHandler_callbackCmdChannel( JNIEnv* env,
+ jclass thiz, jint command) {
+
struct attr attr;
const char *s;
- jint ret = 0;
- dbg(lvl_debug,"enter %d %p",channel,str);
+ dbg(lvl_debug,"enter %d\n",command);
config_get_attr(config_get(), attr_navit, &attr, NULL);
- switch(channel) {
+ switch(command) {
case 1:
// zoom in
navit_zoom_in_cursor(attr.u.navit, 2);
@@ -375,6 +376,34 @@ JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_callbackMessage
navit_zoom_out_cursor(attr.u.navit, 2);
navit_draw(attr.u.navit);
break;
+ case 3:
+ // block
+ navit_block(attr.u.navit, 1);
+ break;
+ case 4:
+ // unblock
+ navit_block(attr.u.navit, 0);
+ break;
+ case 5:
+ // cancel route
+ navit_set_destination(attr.u.navit, NULL, NULL, 0);
+ navit_draw(attr.u.navit);
+ break;
+ default:
+ dbg(lvl_error, "Unknown command: %d", command);
+ break;
+ }
+}
+
+JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitCallbackHandler_callbackMessageChannel( JNIEnv* env,
+ jclass thiz, jint channel, jstring str) {
+ struct attr attr;
+ const char *s;
+ jint ret = 0;
+ dbg(lvl_debug,"enter %d %p",channel,str);
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ switch(channel) {
case 6: {// add a map to the current mapset, return 1 on success
struct mapset *ms = navit_get_mapset(attr.u.navit);
struct attr type, name, data, *attrs[4];
diff --git a/navit/android/AndroidManifest.xml b/navit/android/AndroidManifest.xml
index 2bcdb4e19..5978512ed 100644
--- a/navit/android/AndroidManifest.xml
+++ b/navit/android/AndroidManifest.xml
@@ -10,14 +10,17 @@
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <application android:usesCleartextTraffic="true" android:label="@string/app_name"
+ <application
+ android:label="@string/app_name"
+ android:usesCleartextTraffic="true"
+ android:allowBackup="true"
+ android:fullBackupContent="@xml/navit_backup_rules"
android:icon="@drawable/icon"
- android:name=".NavitAppConfig"
- android:theme="@style/NavitTheme">
+ android:name=".NavitAppConfig">
<activity android:name="Navit"
android:label="@string/app_name"
+ android:theme="@style/NavitTheme"
android:launchMode="singleTask"
- android:taskAffinity=""
android:configChanges="screenLayout|smallestScreenSize|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
diff --git a/navit/android/build.gradle b/navit/android/build.gradle
index 87eeb63cc..55455958a 100644
--- a/navit/android/build.gradle
+++ b/navit/android/build.gradle
@@ -3,12 +3,12 @@ apply from: "$project.rootDir/gradle/scripts/git-scm-version.gradle"
apply plugin: 'checkstyle'
android {
- compileSdkVersion 28
+ compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "org.navitproject.navit"
minSdkVersion 10
- targetSdkVersion 28
+ targetSdkVersion 29
versionCode gitVersionCode
versionName gitVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -17,7 +17,7 @@ android {
}
externalNativeBuild {
cmake {
- arguments '-DUSE_PLUGINS=n', '-DBUILD_MAPTOOL=n', '-DXSL_PROCESSING=y', '-DXSLTS=android', '-DANDROID=y', '-DSAMPLE_MAP=n'
+ arguments '-DUSE_PLUGINS=n', '-DBUILD_MAPTOOL=n', '-DXSL_PROCESSING=n', '-DSAMPLE_MAP=n'
}
}
}
@@ -74,9 +74,10 @@ android {
applicationVariants.all { variant ->
// create tasks to generate Javadocs
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
- classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+ source = android.sourceSets.main.java.srcDirs
destinationDir = file("build/outputs/docs/javadoc/")
title = rootProject.name
+ options.memberLevel = JavadocMemberLevel.PACKAGE
verbose = true
failOnError false
}
diff --git a/navit/android/res/xml/navit_backup_rules.xml b/navit/android/res/xml/navit_backup_rules.xml
new file mode 100644
index 000000000..1343fe2bc
--- /dev/null
+++ b/navit/android/res/xml/navit_backup_rules.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<full-backup-content>
+ <include domain="external" path="bookmark.txt"/>
+</full-backup-content>
diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java
index 2fa2f312d..bacc15213 100644
--- a/navit/android/src/org/navitproject/navit/Navit.java
+++ b/navit/android/src/org/navitproject/navit/Navit.java
@@ -73,84 +73,8 @@ import java.util.regex.Pattern;
public class Navit extends Activity {
- /**
- * Nested class storing the intent that was sent to the main navit activity at startup.
- **/
- private class StartupIntent {
- /**
- * Constructor.
- *
- * @param intent The intent to store in this object
- **/
- public StartupIntent(Intent intent) {
- mStartupIntent = intent;
- mStartupIntentTimestamp = System.currentTimeMillis();
- }
-
- /**
- * Check if the encapsulated intent still valid or too old.
- *
- * @return true if the encapsulated intent is recent enough
- **/
- public boolean isRecentEnough() {
- if (mStartupIntent == null) {
- return false;
- }
- /* We consider the intent is valid for 4s */
- return (System.currentTimeMillis() <= getExpirationTimeMillis());
- }
-
- /**
- * Compute the system time when the stored intent will become invalid.
- *
- * @return The system time for invalidation (in ms)
- **/
- private long getExpirationTimeMillis() {
- if (mStartupIntent == null) {
- return 0;
- }
- /* We give 4s to navit to process the intent */
- return mStartupIntentTimestamp + 4000L;
- }
- /**
- * Getter for the encapsulated intent.
- *
- * @return The encapsulated intent
- **/
- public Intent getIntent() {
- return mStartupIntent;
- }
-
- /**
- * Represent this object as a string.
- *
- * @return A string containing the summary of the data we store here
- **/
- public String toString() {
- if (mStartupIntent == null) {
- return "{null}";
- } else {
- String validForStr;
- long remainingValidity = getExpirationTimeMillis() - System.currentTimeMillis();
- if (remainingValidity < 0) {
- validForStr = "(expired since " + -remainingValidity + "ms)";
- } else {
- validForStr = "(valid for " + remainingValidity + "ms)";
- }
- return "{ act=" + mStartupIntent.getAction() + " data=" + mStartupIntent.getDataString()
- + " " + validForStr + " }";
- }
- }
-
- private Intent mStartupIntent; /*!< The intent we store */
- private long mStartupIntentTimestamp; /*!< A timestamp (in ms) for when mStartupIntent was recorded */
- }
-
-
- public static DisplayMetrics sMetrics;
public static boolean sShowSoftKeyboardShowing;
- private static StartupIntent sStartupIntent;
private static final int MY_PERMISSIONS_REQ_FINE_LOC = 103;
private static final int NavitDownloaderSelectMap_id = 967;
private static final int NavitAddressSearch_id = 70;
@@ -158,7 +82,6 @@ public class Navit extends Activity {
private static final String NAVIT_PACKAGE_NAME = "org.navitproject.navit";
private static final String TAG = "Navit";
static String sMapFilenamePath;
- static String sNavitDataDir;
boolean mIsFullscreen;
private NavitDialogs mDialogs;
private PowerManager.WakeLock mWakeLock;
@@ -287,7 +210,7 @@ public class Navit extends Activity {
}
/**
- * Show the first start infoxbox (presentation of navit and link website for more info).
+ * Show the first start infobox (presentation of navit and link website for more info).
**/
private void showInfos() {
SharedPreferences settings = getSharedPreferences(NavitAppConfig.NAVIT_PREFS, MODE_PRIVATE);
@@ -335,17 +258,12 @@ public class Navit extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
- Log.d(TAG, "OnCreate");
+ Log.d(TAG, "onCreate");
super.onCreate(savedInstanceState);
windowSetup();
mDialogs = new NavitDialogs(this);
- /* Only store the startup intent, onResume() gets called all the time (e.g. when screenblanks, etc.) and
- will process this intent later on if needed */
- sStartupIntent = new StartupIntent(this.getIntent());
- Log.d(TAG, "Recording intent " + sStartupIntent.toString());
-
createNotificationChannel();
buildNotification();
verifyPermissions();
@@ -369,34 +287,34 @@ public class Navit extends Activity {
Log.d(TAG, "Language " + lang);
SharedPreferences prefs = getSharedPreferences(NavitAppConfig.NAVIT_PREFS,MODE_PRIVATE);
- sNavitDataDir = getApplicationContext().getFilesDir().getPath();
+ String navitDataDir = getApplicationContext().getFilesDir().getPath();
String candidateFileNamePath = getApplicationContext().getExternalFilesDir(null).toString();
sMapFilenamePath = prefs.getString("filenamePath", candidateFileNamePath + '/');
- Log.i(TAG,"NavitDataDir = " + sNavitDataDir);
+ Log.i(TAG,"NavitDataDir = " + navitDataDir);
Log.i(TAG,"mapFilenamePath = " + sMapFilenamePath);
// make sure the new path for the navitmap.bin file(s) exist!!
File navitMapsDir = new File(sMapFilenamePath);
navitMapsDir.mkdirs();
// make sure the share dir exists
- File navitDataShareDir = new File(sNavitDataDir + "/share");
+ File navitDataShareDir = new File(navitDataDir + "/share");
navitDataShareDir.mkdirs();
Display display = getWindowManager().getDefaultDisplay();
- sMetrics = new DisplayMetrics();
- display.getMetrics(sMetrics);
- int densityDpi = (int)((sMetrics.density * 160) - .5f);
+ DisplayMetrics metrics = new DisplayMetrics();
+ display.getMetrics(metrics);
+ int densityDpi = (int)((metrics.density * 160) - .5f);
Log.d(TAG, "-> pixels x=" + display.getWidth() + " pixels y=" + display.getHeight());
Log.d(TAG, "-> dpi=" + densityDpi);
- Log.d(TAG, "-> density=" + sMetrics.density);
- Log.d(TAG, "-> scaledDensity=" + sMetrics.scaledDensity);
+ Log.d(TAG, "-> density=" + metrics.density);
+ Log.d(TAG, "-> scaledDensity=" + metrics.scaledDensity);
mActivityResults = new NavitActivityResult[16];
setVolumeControlStream(AudioManager.STREAM_MUSIC);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"navit:DoNotDimScreen");
- if (!extractRes(langc, sNavitDataDir + "/locale/" + langc + "/LC_MESSAGES/navit.mo")) {
+ if (!extractRes(langc, navitDataDir + "/locale/" + langc + "/LC_MESSAGES/navit.mo")) {
Log.e(TAG, "Failed to extract language resource " + langc);
}
@@ -425,7 +343,7 @@ public class Navit extends Activity {
String[] children = assetMgr.list("config/" + myDisplayDensity);
for (String child : children) {
Log.d(TAG, "Processing config file '" + child + "' from assets");
- if (!extractAsset("config/" + myDisplayDensity + "/" + child, sNavitDataDir + "/share/" + child)) {
+ if (!extractAsset("config/" + myDisplayDensity + "/" + child, navitDataDir + "/share/" + child)) {
Log.e(TAG, "Failed to extract asset config/" + myDisplayDensity + "/" + child);
}
}
@@ -433,8 +351,26 @@ public class Navit extends Activity {
Log.e(TAG, "Failed to access assets using AssetManager");
}
Log.d(TAG, "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(Build.VERSION.SDK));
- navitMain(navitLanguage, sNavitDataDir + "/bin/navit", sMapFilenamePath);
+ navitMain(navitLanguage, navitDataDir + "/bin/navit", sMapFilenamePath);
showInfos();
+
+ Intent startupIntent = new Intent(this.getIntent());
+ Log.d(TAG, "onCreate intent " + startupIntent.toString());
+ handleIntent(startupIntent);
+ }
+
+ private void handleIntent(Intent intent) {
+ String naviScheme = intent.getScheme();
+ if (naviScheme != null) {
+ Log.d(TAG, "Using intent " + intent.toString());
+ if (naviScheme.equals("google.navigation")) {
+ parseNavigationURI(intent.getData().getSchemeSpecificPart());
+ } else if (naviScheme.equals("geo")
+ && intent.getAction().equals("android.intent.action.VIEW")) {
+ invokeCallbackOnGeo(intent.getData().getSchemeSpecificPart(),
+ NavitCallbackHandler.MsgType.CLB_SET_DESTINATION, "");
+ }
+ }
}
private void windowSetup() {
@@ -491,58 +427,32 @@ public class Navit extends Activity {
public void onRestart() {
super.onRestart();
- Log.d(TAG, "OnRestart");
+ Log.d(TAG, "onRestart");
}
public void onStart() {
super.onStart();
- Log.d(TAG, "OnStart");
+ Log.d(TAG, "onStart");
}
@Override
public void onNewIntent(Intent intent) {
- Log.d(TAG, "OnNewIntent");
- sStartupIntent = new StartupIntent(intent);
- Log.d(TAG, "Recording intent " + sStartupIntent.toString());
+ Log.d(TAG, "onNewIntent");
+ handleIntent(intent);
}
@Override
public void onResume() {
super.onResume();
- Log.d(TAG, "OnResume");
- //InputMethodManager sInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
- // 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";
- // intent_data = "geo:48.25676,16.643";
- if (sStartupIntent != null) {
- Log.d(TAG, "Using stored startup intent " + sStartupIntent.toString());
- if (sStartupIntent.isRecentEnough()) {
- Intent startupIntent = sStartupIntent.getIntent();
- String naviScheme = startupIntent.getScheme();
- if (naviScheme != null) {
- if (naviScheme.equals("google.navigation")) {
- parseNavigationURI(startupIntent.getData().getSchemeSpecificPart());
- } else if (naviScheme.equals("geo")
- && startupIntent.getAction().equals("android.intent.action.VIEW")) {
- invokeCallbackOnGeo(startupIntent.getData().getSchemeSpecificPart(),
- NavitGraphics.MsgType.CLB_SET_DESTINATION,
- "");
- }
- }
- } else {
- Log.e(TAG, "timestamp for startup intent expired! not using data");
- }
- sStartupIntent = null;
- }
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_UNBLOCK);
+ Log.d(TAG, "onResume");
}
@Override
public void onPause() {
super.onPause();
- Log.d(TAG, "OnPause");
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_BLOCK);
+ Log.d(TAG, "onPause");
}
@Override
@@ -567,30 +477,30 @@ public class Navit extends Activity {
}
/**
- * Invoke NavitGraphics.sCallbackHandler on a geographical position
+ * Invoke CallbackHandler on a geographical position.
*
* @param geoString A string containing the target geographical position with a format like "48.25676,16.643"
- * @param msgType The type of message to send to the callback (see NavitGraphics.MsgType for possible values)
+ * @param msgType The type of message to send
* @param name The name/label to associate to the geographical position
**/
- private void invokeCallbackOnGeo(String geoString, NavitGraphics.MsgType msgType, String name) {
+ private void invokeCallbackOnGeo(String geoString, NavitCallbackHandler.MsgType msgType, String name) {
String[] geo = geoString.split(",");
if (geo.length == 2) {
try {
Bundle b = new Bundle();
- Float lat = Float.valueOf(geo[0]);
- Float lon = Float.valueOf(geo[1]);
+ float lat = Float.parseFloat(geo[0]);
+ float lon = Float.parseFloat(geo[1]);
b.putFloat("lat", lat);
b.putFloat("lon", lon);
b.putString("q", name);
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
msgType.ordinal());
msg.setData(b);
msg.sendToTarget();
Log.d(TAG, "target found (b): " + geoString);
} catch (NumberFormatException e) {
- e.printStackTrace();
+ Log.e(TAG,"numberFormatException");
}
} else {
Log.w(TAG, "Ignoring invalid geo string: " + geoString);
@@ -598,7 +508,7 @@ public class Navit extends Activity {
}
/**
- * Parse google navigation URIs (usually starting with "google.navigation:") and take the appropriate actions
+ * Parse google navigation URIs (usually starting with "google.navigation:") and take the appropriate actions.
*
* @param schemeSpecificPart A string containing the URI scheme, for example "ll=48.25676,16.643&q=blabla-strasse"
**/
@@ -628,7 +538,7 @@ public class Navit extends Activity {
if (geoString != null) {
if (geoString.matches("^[+-]{0,1}\\d+(|\\.\\d*),[+-]{0,1}\\d+(|\\.\\d*)$")) {
- invokeCallbackOnGeo(geoString, NavitGraphics.MsgType.CLB_SET_DESTINATION, address);
+ invokeCallbackOnGeo(geoString, NavitCallbackHandler.MsgType.CLB_SET_DESTINATION, address);
} else {
start_targetsearch_from_intent(geoString);
}
@@ -683,15 +593,13 @@ public class Navit extends Activity {
switch (id) {
case 1 :
// zoom in
- Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_ZOOM_IN.ordinal()).sendToTarget();
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_ZOOM_IN);
// if we zoom, hide the bubble
Log.d(TAG, "onOptionsItemSelected -> zoom in");
break;
case 2 :
// zoom out
- Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_ZOOM_OUT.ordinal()).sendToTarget();
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_ZOOM_OUT);
// if we zoom, hide the bubble
Log.d(TAG, "onOptionsItemSelected -> zoom out");
break;
@@ -702,21 +610,22 @@ public class Navit extends Activity {
break;
case 5 :
// toggle the normal POI layers and labels (to avoid double POIs)
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_CALL_CMD.ordinal());
Bundle b = new Bundle();
b.putString("cmd", "toggle_layer(\"POI Symbols\");");
msg.setData(b);
msg.sendToTarget();
-
- msg = Message.obtain(NavitGraphics.sCallbackHandler, NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
+ msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_CALL_CMD.ordinal());
b = new Bundle();
b.putString("cmd", "toggle_layer(\"POI Labels\");");
msg.setData(b);
msg.sendToTarget();
// toggle full POI icons on/off
- msg = Message.obtain(NavitGraphics.sCallbackHandler, NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
+ msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_CALL_CMD.ordinal());
b = new Bundle();
b.putString("cmd", "toggle_layer(\"Android-POI-Icons-full\");");
msg.setData(b);
@@ -768,7 +677,8 @@ public class Navit extends Activity {
Log.d(TAG, "showNativeKeyboard");
Configuration config = getResources().getConfiguration();
if ((config.keyboard == Configuration.KEYBOARD_QWERTY)
- && (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)) {
+ && (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)
+ && (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P)) {
/* physical keyboard present */
return 0;
}
@@ -777,7 +687,6 @@ public class Navit extends Activity {
((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
.showSoftInput(getCurrentFocus(), InputMethodManager.SHOW_FORCED);
sShowSoftKeyboardShowing = true;
-
return 1;
}
@@ -793,20 +702,6 @@ public class Navit extends Activity {
}
- void setDestination(float latitude, float longitude, String address) {
- Toast.makeText(getApplicationContext(), getTstring(R.string.address_search_set_destination) + "\n"
- + address, Toast.LENGTH_LONG).show(); //TRANS
-
- Bundle b = new Bundle();
- b.putFloat("lat", latitude);
- b.putFloat("lon", longitude);
- b.putString("q", address);
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_SET_DESTINATION.ordinal());
- msg.setData(b);
- msg.sendToTarget();
- }
-
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case Navit.NavitDownloaderSelectMap_id :
@@ -823,8 +718,8 @@ public class Navit extends Activity {
getTstring(R.string.address_search_set_destination) + "\n" + destination.getString(("q")),
Toast.LENGTH_LONG).show(); //TRANS
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_SET_DESTINATION.ordinal());
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_SET_DESTINATION.ordinal());
msg.setData(destination);
msg.sendToTarget();
}
@@ -887,7 +782,7 @@ public class Navit extends Activity {
@Override
public void onDestroy() {
super.onDestroy();
- Log.d(TAG, "OnDestroy");
+ Log.d(TAG, "onDestroy");
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.cancelAll();
NavitVehicle.removeListeners(this);
@@ -897,7 +792,7 @@ public class Navit extends Activity {
public void onStop() {
super.onStop();
- Log.d(TAG, "OnStop");
+ Log.d(TAG, "onStop");
}
@@ -916,6 +811,7 @@ public class Navit extends Activity {
}
+ @SuppressWarnings("unused")
void disableSuspend() {
mWakeLock.acquire();
mWakeLock.release();
diff --git a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java b/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
index 3c0c489d1..9e851f2b1 100644
--- a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
+++ b/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
@@ -85,8 +85,6 @@ public class NavitAddressSearchActivity extends Activity {
private int mSearchResultsStreets = 0;
private int mSearchResultsStreetsHn = 0;
private long mSearchHandle = 0;
-
- // TODO remember settings
private static String sLastAddressSearchString = "";
private static Boolean sLastAddressPartialMatch = false;
private static String sLastCountry = "";
@@ -107,10 +105,9 @@ public class NavitAddressSearchActivity extends Activity {
// We have all images stored as drawable_nodpi resources which allows native code to manipulate them
// without interference with android builtin choosing and scaling system. But that makes us to
// reinvent the wheel here to show an image in android native interface.
- int[] flagIconSizes = {24,32,48,64,96};
- int exactSize;
+ int[] flagIconSizes = {24, 32, 64, 96};
int nearestSize;
- exactSize = (int)(Navit.sMetrics.density * 24.0 - .5);
+ int exactSize = (int)(getResources().getDisplayMetrics().density * 24 - 0.5);
nearestSize = flagIconSizes[0];
for (int size: flagIconSizes) {
nearestSize = size;
@@ -158,7 +155,6 @@ public class NavitAddressSearchActivity extends Activity {
}
mCountryButton = new ImageButton(this);
-
setCountryButtonImage();
mCountryButton.setOnClickListener(new OnClickListener() {
diff --git a/navit/android/src/org/navitproject/navit/NavitBackupTask.java b/navit/android/src/org/navitproject/navit/NavitBackupTask.java
index 567acb137..cc81072d9 100644
--- a/navit/android/src/org/navitproject/navit/NavitBackupTask.java
+++ b/navit/android/src/org/navitproject/navit/NavitBackupTask.java
@@ -16,11 +16,11 @@ import java.io.ObjectOutputStream;
public class NavitBackupTask extends AsyncTask<Void, Void, String> {
- private Navit mActivity;
+ private final Navit mActivity;
private ProgressDialog mDialog;
- public NavitBackupTask(Navit context) {
+ NavitBackupTask(Navit context) {
mActivity = context;
}
@@ -80,11 +80,11 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
ObjectOutputStream preferencesOOs = null;
try {
/* Backup Files in home */
- NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/bookmark.txt",
+ NavitUtils.copyFileIfExists(Navit.sMapFilenamePath + "/home/bookmark.txt",
backupDir.getPath() + "/bookmark.txt");
- NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/destination.txt",
+ NavitUtils.copyFileIfExists(Navit.sMapFilenamePath + "/home/destination.txt",
backupDir.getPath() + "/destination.txt");
- NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/gui_internal.txt",
+ NavitUtils.copyFileIfExists(Navit.sMapFilenamePath + "/home/gui_internal.txt",
backupDir.getPath() + "/gui_internal.txt");
/* Backup Shared Preferences */
diff --git a/navit/android/src/org/navitproject/navit/NavitCallbackHandler.java b/navit/android/src/org/navitproject/navit/NavitCallbackHandler.java
new file mode 100644
index 000000000..c3a3b3230
--- /dev/null
+++ b/navit/android/src/org/navitproject/navit/NavitCallbackHandler.java
@@ -0,0 +1,84 @@
+package org.navitproject.navit;
+
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+
+class NavitCallbackHandler {
+
+
+ private static final String TAG = "CallbackHandler";
+ private static final MsgType[] msg_values = MsgType.values();
+
+ static final Handler sCallbackHandler = new CallBackHandler();
+
+ private static native int callbackMessageChannel(int channel, String s);
+
+ private static native int callbackCmdChannel(int commandd);
+
+ enum CmdType { CMD_ZOOM_IN, CMD_ZOOM_OUT, CMD_BLOCK, CMD_UNBLOCK, CMD_CANCEL_ROUTE }
+
+ static void sendCommand(CmdType command) {
+ switch (command) {
+ case CMD_ZOOM_IN:
+ callbackCmdChannel(1);
+ break;
+ case CMD_ZOOM_OUT:
+ callbackCmdChannel(2);
+ break;
+ case CMD_BLOCK:
+ callbackCmdChannel(3);
+ break;
+ case CMD_UNBLOCK:
+ callbackCmdChannel(4);
+ break;
+ case CMD_CANCEL_ROUTE:
+ callbackCmdChannel(5);
+ break;
+ default:
+ Log.e(TAG, "Unhandled command : " + command);
+ }
+ }
+
+
+ enum MsgType {
+ CLB_SET_DESTINATION, CLB_SET_DISPLAY_DESTINATION, CLB_CALL_CMD, CLB_LOAD_MAP, CLB_UNLOAD_MAP,
+ CLB_DELETE_MAP
+ }
+
+
+ static class CallBackHandler extends Handler {
+ public void handleMessage(Message msg) {
+ switch (msg_values[msg.what]) {
+ case CLB_SET_DESTINATION:
+ String lat = Float.toString(msg.getData().getFloat("lat"));
+ String lon = Float.toString(msg.getData().getFloat("lon"));
+ String q = msg.getData().getString(("q"));
+ callbackMessageChannel(3, lat + "#" + lon + "#" + q);
+ break;
+ case CLB_SET_DISPLAY_DESTINATION:
+ int x = msg.arg1;
+ int y = msg.arg2;
+ callbackMessageChannel(4, "" + x + "#" + y);
+ break;
+ case CLB_CALL_CMD:
+ String cmd = msg.getData().getString(("cmd"));
+ callbackMessageChannel(5, cmd);
+ break;
+ case CLB_LOAD_MAP:
+ callbackMessageChannel(6, msg.getData().getString(("title")));
+ break;
+ case CLB_DELETE_MAP:
+ //unload map before deleting it !!!
+ callbackMessageChannel(7, msg.getData().getString(("title")));
+ NavitUtils.removeFileIfExists(msg.getData().getString(("title")));
+ break;
+ case CLB_UNLOAD_MAP:
+ callbackMessageChannel(7, msg.getData().getString(("title")));
+ break;
+ default:
+ Log.d(TAG, "Unhandled callback : " + msg_values[msg.what]);
+ }
+ }
+ }
+}
diff --git a/navit/android/src/org/navitproject/navit/NavitDialogs.java b/navit/android/src/org/navitproject/navit/NavitDialogs.java
index 8a9d6de65..4c506d70c 100644
--- a/navit/android/src/org/navitproject/navit/NavitDialogs.java
+++ b/navit/android/src/org/navitproject/navit/NavitDialogs.java
@@ -64,14 +64,14 @@ public class NavitDialogs extends Handler {
mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
if (msg.getData().getInt("value1") == 1) {
- Message msgOut = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_LOAD_MAP.ordinal());
+ Message msgOut = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_LOAD_MAP.ordinal());
msgOut.setData(msg.getData());
msgOut.sendToTarget();
msgOut = Message
- .obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
+ .obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_CALL_CMD.ordinal());
Bundle b = new Bundle();
int mi = msg.getData().getInt("value2");
double lon = (Double.parseDouble(NavitMapDownloader.osm_maps[mi].mLon1) + Double
diff --git a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java b/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
index 8f816df60..4ee521c8c 100644
--- a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
+++ b/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
@@ -29,7 +29,6 @@ import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Message;
-import android.os.StatFs;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.view.View;
@@ -60,7 +59,7 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
updateMapsForLocation();
setListAdapter(sAdapter);
try {
- setTitle(getFreeSpace() / 1024 / 1024 + "MB available");
+ setTitle(NavitUtils.getFreeSpace(Navit.sMapFilenamePath) / 1024 / 1024 + "MB available");
} catch (Exception e) {
Log.e(TAG, "Exception " + e.getClass().getName()
+ " during getFreeSpace, reporting 'no sdcard present'");
@@ -73,10 +72,6 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
}
}
- private long getFreeSpace() {
- StatFs fsInfo = new StatFs(Navit.sMapFilenamePath);
- return (long) fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
- }
private void updateDownloadedMaps() {
sDownloadedMapsChilds.clear();
@@ -234,8 +229,8 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Log.d(TAG, "Delete Map");
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_DELETE_MAP.ordinal());
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_DELETE_MAP.ordinal());
Bundle b = new Bundle();
b.putString("title", mapLocation);
msg.setData(b);
diff --git a/navit/android/src/org/navitproject/navit/NavitGraphics.java b/navit/android/src/org/navitproject/navit/NavitGraphics.java
index cd6ce6944..37ac92ace 100644
--- a/navit/android/src/org/navitproject/navit/NavitGraphics.java
+++ b/navit/android/src/org/navitproject/navit/NavitGraphics.java
@@ -19,14 +19,11 @@
package org.navitproject.navit;
-import static org.navitproject.navit.NavitAppConfig.getTstring;
-
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -39,9 +36,7 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
-import android.os.Handler;
import android.os.Message;
-import android.os.Parcelable;
import android.support.annotation.RequiresApi;
import android.support.v4.view.ViewConfigurationCompat;
import android.util.Log;
@@ -66,6 +61,7 @@ import java.util.List;
class NavitGraphics {
private static final String TAG = "NavitGraphics";
private static final long TIME_FOR_LONG_PRESS = 300L;
+ private static boolean sInMap;
private final NavitGraphics mParentGraphics;
private final ArrayList<NavitGraphics> mOverlays;
private int mBitmapWidth;
@@ -81,7 +77,6 @@ class NavitGraphics {
private int mPaddingTop;
private int mPaddingBottom;
private NavitView mView;
- static final Handler sCallbackHandler = new CallBackHandler();
private SystemBarTintView mLeftTintView;
private SystemBarTintView mRightTintView;
private SystemBarTintView mTopTintView;
@@ -90,7 +85,6 @@ class NavitGraphics {
private RelativeLayout mRelativeLayout;
private NavitCamera mCamera;
private Navit mActivity;
- private static boolean sInMap;
private boolean mTinting;
@@ -210,7 +204,7 @@ class NavitGraphics {
* @return An intent to start to view the specified point on a third-party app on Android (can be null if a
* view action is not possible)
**/
- protected Intent getViewIntentForDisplayPoint(int x, int y) {
+ Intent getViewIntentForDisplayPoint(int x, int y) {
Intent result = null;
/* Check if there is at least one application that can process a geo intent... */
@@ -218,11 +212,11 @@ class NavitGraphics {
Uri intentUri = Uri.parse("geo:" + selectedPointCoord);
Intent defaultShareIntent = new Intent(Intent.ACTION_VIEW, intentUri);
- List<Intent> customShareIntentList = new ArrayList<Intent>();
+ List<Intent> customShareIntentList = new ArrayList<>();
List<ResolveInfo> intentTargetAppList;
intentTargetAppList = this.getContext().getPackageManager().queryIntentActivities(defaultShareIntent, 0);
- String selfPackageName = this.getContext().getPackageName(); /* aka: "org.navitproject.navit" */
+ String selfPackageName = this.getContext().getPackageName();
if (!intentTargetAppList.isEmpty()) {
for (ResolveInfo resolveInfo : intentTargetAppList) {
@@ -243,7 +237,7 @@ class NavitGraphics {
result = Intent.createChooser(customShareIntentList.remove(customShareIntentList.size() - 1),
NavitAppConfig.getTstring(R.string.use_position_with));
result.putExtra(Intent.EXTRA_INITIAL_INTENTS,
- customShareIntentList.toArray(new Parcelable[customShareIntentList.size()]));
+ customShareIntentList.toArray(new Intent[0]));
Log.d(TAG, "Preparing action intent (" + customShareIntentList.size() + 1
+ " candidate apps) to view selected coord: " + selectedPointCoord);
}
@@ -276,27 +270,20 @@ class NavitGraphics {
@Override
public boolean onMenuItemClick(MenuItem item) {
int itemId = item.getItemId();
- if (itemId != MENU_VIEW) {
- /* Destroy any previous map view intent if the user didn't select the MENU_VIEW action */
- mContextMenuMapViewIntent = null;
- }
if (itemId == MENU_DRIVE_HERE) {
- Message msg = Message.obtain(sCallbackHandler, MsgType.CLB_SET_DISPLAY_DESTINATION.ordinal(),
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_SET_DISPLAY_DESTINATION.ordinal(),
(int) mPressedPosition.x, (int) mPressedPosition.y);
msg.sendToTarget();
} else if (itemId == MENU_VIEW) {
- if (mContextMenuMapViewIntent != null) {
- mContextMenuMapViewIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- if (mContextMenuMapViewIntent.resolveActivity(this.getContext().getPackageManager()) != null) {
- this.getContext().startActivity(mContextMenuMapViewIntent);
- } else {
- Log.w(TAG, "View menu selected but intent is not handled by any application. Ignoring...");
- }
- mContextMenuMapViewIntent = null; /* Destoy the intent once it has been used */
+ mContextMenuMapViewIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ if (mContextMenuMapViewIntent.resolveActivity(this.getContext().getPackageManager()) != null) {
+ this.getContext().startActivity(mContextMenuMapViewIntent);
} else {
- Log.e(TAG, "User clicked on view on menu but intent was null. Discarding...");
+ Log.w(TAG, "View menu selected but intent is not handled by any application. Ignoring...");
}
}
+ mContextMenuMapViewIntent = null;
return true;
}
@@ -320,8 +307,6 @@ class NavitGraphics {
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
Log.d(TAG, "onSizeChanged pixels x=" + w + " pixels y=" + h);
- Log.v(TAG, "onSizeChanged density=" + Navit.sMetrics.density);
- Log.v(TAG, "onSizeChanged scaledDensity=" + Navit.sMetrics.scaledDensity);
super.onSizeChanged(w, h, oldw, oldh);
mDrawBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
mDrawCanvas = new Canvas(mDrawBitmap);
@@ -414,12 +399,12 @@ class NavitGraphics {
Log.v(TAG, "New scale = " + scale);
if (scale > 1.2) {
// zoom in
- callbackMessageChannel(1, "");
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_ZOOM_IN);
mOldDist = newDist;
} else if (scale < 0.8) {
mOldDist = newDist;
// zoom out
- callbackMessageChannel(2, "");
+ NavitCallbackHandler.sendCommand(NavitCallbackHandler.CmdType.CMD_ZOOM_OUT);
}
}
}
@@ -650,66 +635,6 @@ class NavitGraphics {
mView.requestFocus();
}
- enum MsgType {
- CLB_ZOOM_IN, CLB_ZOOM_OUT, CLB_REDRAW, CLB_MOVE, CLB_BUTTON_UP, CLB_BUTTON_DOWN, CLB_SET_DESTINATION,
- CLB_SET_DISPLAY_DESTINATION, CLB_CALL_CMD, CLB_COUNTRY_CHOOSER, CLB_LOAD_MAP, CLB_UNLOAD_MAP, CLB_DELETE_MAP
- }
-
- private static final MsgType[] msg_values = MsgType.values();
-
- private static class CallBackHandler extends Handler {
- public void handleMessage(Message msg) {
- switch (msg_values[msg.what]) {
- case CLB_ZOOM_IN:
- callbackMessageChannel(1, "");
- break;
- case CLB_ZOOM_OUT:
- callbackMessageChannel(2, "");
- break;
- case CLB_MOVE:
- //motionCallback(mMotionCallbackID, msg.getData().getInt("x"), msg.getData().getInt("y"));
- break;
- case CLB_SET_DESTINATION:
- String lat = Float.toString(msg.getData().getFloat("lat"));
- String lon = Float.toString(msg.getData().getFloat("lon"));
- String q = msg.getData().getString(("q"));
- callbackMessageChannel(3, lat + "#" + lon + "#" + q);
- break;
- case CLB_SET_DISPLAY_DESTINATION:
- int x = msg.arg1;
- int y = msg.arg2;
- callbackMessageChannel(4, "" + x + "#" + y);
- break;
- case CLB_CALL_CMD:
- String cmd = msg.getData().getString(("cmd"));
- callbackMessageChannel(5, cmd);
- break;
- case CLB_BUTTON_UP:
- //buttonCallback(mButtonCallbackID, 0, 1, msg.getData().getInt("x"), msg.getData().getInt("y"));
- break;
- case CLB_BUTTON_DOWN:
- //buttonCallback(mButtonCallbackID, 1, 1, msg.getData().getInt("x"), msg.getData().getInt("y"));
- break;
- case CLB_COUNTRY_CHOOSER:
- break;
- case CLB_LOAD_MAP:
- callbackMessageChannel(6, msg.getData().getString(("title")));
- break;
- case CLB_DELETE_MAP:
- //unload map before deleting it !!!
- callbackMessageChannel(7, msg.getData().getString(("title")));
- NavitUtils.removeFileIfExists(msg.getData().getString(("title")));
- break;
- case CLB_UNLOAD_MAP:
- callbackMessageChannel(7, msg.getData().getString(("title")));
- break;
- case CLB_REDRAW:
- default:
- Log.d(TAG, "Unhandled callback : " + msg_values[msg.what]);
- }
- }
- }
-
private native void sizeChangedCallback(long id, int x, int y);
@@ -717,8 +642,6 @@ class NavitGraphics {
private native void keypressCallback(long id, String s);
- private static native int callbackMessageChannel(int i, String s);
-
private native void buttonCallback(long id, int pressed, int button, int x, int y);
private native void motionCallback(long id, int x, int y);
diff --git a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java b/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
index 51c362407..e66840073 100644
--- a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
+++ b/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
@@ -20,7 +20,6 @@ import static org.navitproject.navit.NavitAppConfig.getTstring;
import android.location.Location;
import android.os.Bundle;
import android.os.Message;
-import android.os.StatFs;
import android.util.Log;
import java.io.BufferedInputStream;
@@ -47,422 +46,424 @@ import java.net.URLConnection;
*/
public class NavitMapDownloader extends Thread {
- //
- // define the maps here
- // size estimations updated 2017-06-22
- //
static final OsmMapValues[] osm_maps = {
- new OsmMapValues(getTstring(R.string.whole_planet), "-180", "-90", "180", "90",
- 23992258630L, 0),
- new OsmMapValues(getTstring(R.string.africa), "-30.89", "-36.17", "61.68",
- "38.40", 2070076339L, 0),
- new OsmMapValues(getTstring(R.string.angola), "11.4", "-18.1", "24.2", "-5.3",
- 127557789L, 1),
- new OsmMapValues(getTstring(R.string.burundi), "28.9", "-4.5", "30.9", "-2.2",
- 124049667L, 1),
- new OsmMapValues(getTstring(R.string.canary_islands), "-18.69", "26.52", "-12.79",
- "29.99", 133565815L, 1),
- new OsmMapValues(getTstring(R.string.congo), "11.7",
- "-13.6", "31.5", "5.7", 244228485L, 1),
- new OsmMapValues(getTstring(R.string.ethiopia), "32.89", "3.33", "48.07", "14.97",
- 153067406L, 1),
- new OsmMapValues(getTstring(R.string.guinea), "-15.47", "7.12", "-7.58", "12.74",
- 188047126L, 1),
- new OsmMapValues(getTstring(R.string.cotedivoire), "-8.72", "4.09", "-2.43",
- "10.80", 132187496L, 1),
- new OsmMapValues(getTstring(R.string.kenya), "33.8", "-5.2", "42.4", "4.9",
- 190073089L, 1),
- new OsmMapValues(getTstring(R.string.lesotho), "26.9", "-30.7", "29.6", "-28.4",
- 196189429L, 1),
- new OsmMapValues(getTstring(R.string.liberia), "-15.00", "-0.73", "-7.20", "8.65",
- 156257253L, 1),
- new OsmMapValues(getTstring(R.string.libya), "9.32", "19.40", "25.54", "33.63",
- 126046917L, 1),
- new OsmMapValues(getTstring(R.string.madagascar), "42.25", "-26.63", "51.20",
- "-11.31", 145210721L, 1),
- new OsmMapValues(getTstring(R.string.namibia) + "+" + getTstring(R.string.botswana),
- "11.4", "-29.1", "29.5", "-16.9", 248970987L, 1),
- new OsmMapValues(getTstring(R.string.reunion), "55.2", "-21.4", "55.9", "-20.9",
- 126008774L, 1),
- new OsmMapValues(getTstring(R.string.rwanda), "28.8", "-2.9", "30.9", "-1.0",
- 128267595L, 1),
- new OsmMapValues(getTstring(R.string.south_africa) + "+" + getTstring(R.string.lesotho),
- "15.93", "-36.36", "33.65", "-22.08", 307280006L, 1),
- new OsmMapValues(getTstring(R.string.tanzania), "29.19",
- "-11.87", "40.74", "-0.88", 253621029L, 1),
- new OsmMapValues(getTstring(R.string.uganda), "29.3", "-1.6", "35.1", "4.3",
- 179134521L, 1),
- new OsmMapValues(getTstring(R.string.asia), "23.8", "0.1", "195.0", "82.4",
- 5113673780L, 0),
- new OsmMapValues(getTstring(R.string.azerbaijan), "44.74", "38.34", "51.69",
- "42.37", 138346406L, 1),
- new OsmMapValues(getTstring(R.string.china), "67.3", "5.3", "135.0", "54.5",
- 1718108758L, 1),
- new OsmMapValues(getTstring(R.string.cyprus), "32.0", "34.5", "34.9", "35.8",
- 118472448L, 1),
- new OsmMapValues(getTstring(R.string.india) + "+" + getTstring(R.string.nepal), "67.9",
- "5.5", "89.6", "36.0", 601877877L, 1),
- new OsmMapValues(getTstring(R.string.indonesia), "93.7", "-17.3", "155.5", "7.6",
- 420741405L, 1),
- new OsmMapValues(getTstring(R.string.iran), "43.5", "24.4",
- "63.6", "40.4", 242016066L, 1),
- new OsmMapValues(getTstring(R.string.iraq), "38.7", "28.5", "49.2", "37.4",
- 160751805L, 1),
- new OsmMapValues(getTstring(R.string.israel), "33.99", "29.8", "35.95", "33.4",
- 155685778L, 1),
- new OsmMapValues(getTstring(R.string.japan) + "+" + getTstring(R.string.korea), "123.6",
- "25.2", "151.3", "47.1", 1029080156L, 1),
- new OsmMapValues(getTstring(R.string.kazakhstan), "46.44", "40.89", "87.36",
- "55.45", 407633007L, 1),
- new OsmMapValues(getTstring(R.string.kyrgyzsyan), "69.23", "39.13", "80.33",
- "43.29", 147997835L, 1),
- new OsmMapValues(getTstring(R.string.malaysia) + "+" + getTstring(R.string.singapore),
- "94.3", "-5.9", "108.6", "6.8", 168816435L, 1),
- new OsmMapValues(getTstring(R.string.mongolia), "87.5", "41.4", "120.3", "52.7",
- 153534851L, 1),
- new OsmMapValues(getTstring(R.string.pakistan), "60.83", "23.28", "77.89",
- "37.15", 217644321L, 1),
- new OsmMapValues(getTstring(R.string.philippines), "115.58", "4.47", "127.85",
- "21.60", 281428307L, 1),
- new OsmMapValues(getTstring(R.string.saudi_arabia), "33.2", "16.1", "55.9",
- "33.5", 242648303L, 1),
- new OsmMapValues(getTstring(R.string.taiwan), "119.1", "21.5", "122.5", "25.2",
- 1029080156L, 1),
- new OsmMapValues(getTstring(R.string.thailand), "97.5", "5.7", "105.2", "19.7",
- 185135492L, 1),
- new OsmMapValues(getTstring(R.string.turkey), "25.1", "35.8", "46.4", "42.8",
- 331087441L, 1),
- new OsmMapValues(getTstring(R.string.turkmenistan), "51.78", "35.07", "66.76",
- "42.91", 131045087L, 1),
- new OsmMapValues(getTstring(R.string.uae_other), "51.5", "22.6", "56.7", "26.5",
- 128934674L, 1),
- new OsmMapValues(getTstring(R.string.australia) + "+" + getTstring(R.string.oceania),
- "89.84", "-57.39", "179.79", "7.26", 782722650L, 0),
- new OsmMapValues(getTstring(R.string.australia), "110.5", "-44.2", "154.9",
- "-9.2", 348652900L, 0),
- new OsmMapValues(getTstring(R.string.tasmania), "144.0", "-45.1", "155.3",
- "-24.8", 253231890L, 1),
- new OsmMapValues(getTstring(R.string.victoria) + " + " + getTstring(R.string.new_south_wales),
- "140.7", "-39.4", "153.7", "-26.9", 241500829L, 1),
- new OsmMapValues(getTstring(R.string.new_caledonia), "157.85", "-25.05", "174.15",
- "-16.85", 115512336L, 1),
- new OsmMapValues(getTstring(R.string.newzealand), "165.2", "-47.6", "179.1",
- "-33.7", 239264192L, 1),
- new OsmMapValues(getTstring(R.string.europe), "-12.97", "33.59", "34.15", "72.10",
- 11984126789L, 0),
- new OsmMapValues(getTstring(R.string.western_europe), "-17.6", "34.5", "42.9",
- "70.9", 12648810717L, 1),
- new OsmMapValues(getTstring(R.string.austria), "9.4", "46.32", "17.21", "49.1",
- 898273634L, 1),
- new OsmMapValues(getTstring(R.string.azores), "-31.62", "36.63", "-24.67",
- "40.13", 112687225L, 1),
- new OsmMapValues(getTstring(R.string.belgium), "2.3", "49.5", "6.5", "51.6",
- 733035524L, 1),
- new OsmMapValues(getTstring(R.string.benelux), "2.08", "48.87", "7.78", "54.52",
- 1771971595L, 1),
- new OsmMapValues(getTstring(R.string.netherlands), "3.07", "50.75", "7.23",
- "53.73", 1191828033L, 1),
- new OsmMapValues(getTstring(R.string.denmark), "7.65", "54.32", "15.58", "58.07",
- 365606979L, 1),
- new OsmMapValues(getTstring(R.string.faroe_islands), "-7.8", "61.3", "-6.1",
- "62.5", 109377568L, 1),
- new OsmMapValues(getTstring(R.string.france), "-5.45", "42.00", "8.44", "51.68",
- 3907969744L, 1),
- new OsmMapValues(getTstring(R.string.alsace), "6.79", "47.27", "8.48", "49.17",
- 354249349L, 2),
- new OsmMapValues(getTstring(R.string.aquitaine), "-2.27", "42.44", "1.50",
- "45.76", 443715019L, 2),
- new OsmMapValues(getTstring(R.string.auvergne), "2.01", "44.57", "4.54", "46.85",
- 287663213L, 2),
- new OsmMapValues(getTstring(R.string.basse_normandie), "-2.09", "48.13", "1.03",
- "49.98", 262352354L, 2),
- new OsmMapValues(getTstring(R.string.bourgogne), "2.80", "46.11", "5.58", "48.45",
- 298868796L, 2),
- new OsmMapValues(getTstring(R.string.bretagne), "-5.58", "46.95", "-0.96",
- "48.99", 382770794L, 2),
- new OsmMapValues(getTstring(R.string.centre), "0.01", "46.29", "3.18", "48.99",
- 474224721L, 2),
- new OsmMapValues(getTstring(R.string.champagne_ardenne), "3.34", "47.53", "5.94",
- "50.28", 269947824L, 2),
- new OsmMapValues(getTstring(R.string.corse), "8.12", "41.32", "9.95", "43.28",
- 129902146L, 2),
- new OsmMapValues(getTstring(R.string.franche_comte), "5.20", "46.21", "7.83",
- "48.07", 324476070L, 2),
- new OsmMapValues(getTstring(R.string.haute_normandie), "-0.15", "48.62", "1.85",
- "50.18", 202782876L, 2),
- new OsmMapValues(getTstring(R.string.ile_de_france), "1.40", "48.07", "3.61",
- "49.29", 311052699L, 2),
- new OsmMapValues(getTstring(R.string.languedoc_roussillon), "1.53", "42.25",
- "4.89", "45.02", 380145667L, 2),
- new OsmMapValues(getTstring(R.string.limousin), "0.58", "44.87", "2.66", "46.50",
- 206696539L, 2),
- new OsmMapValues(getTstring(R.string.lorraine), "4.84", "47.77", "7.72", "49.73",
- 330777318L, 2),
- new OsmMapValues(getTstring(R.string.midi_pyrenees), "-0.37", "42.18", "3.50",
- "45.10", 462618363L, 2),
- new OsmMapValues(getTstring(R.string.nord_pas_de_calais), "1.42", "49.92", "4.49",
- "51.31", 368467511L, 2),
- new OsmMapValues(getTstring(R.string.pays_de_la_loire), "-2.88", "46.20", "0.97",
- "48.62", 499471143L, 2),
- new OsmMapValues(getTstring(R.string.picardie), "1.25", "48.79", "4.31", "50.43",
- 374308041L, 2),
- new OsmMapValues(getTstring(R.string.poitou_charentes), "-1.69", "45.04", "1.26",
- "47.23", 342125526L, 2),
- new OsmMapValues(getTstring(R.string.provence_alpes_cote_d_azur), "4.21", "42.91",
- "7.99", "45.18", 390306134L, 2),
- new OsmMapValues(getTstring(R.string.rhone_alpes), "3.65", "44.07", "7.88",
- "46.64", 510797942L, 2),
- new OsmMapValues(getTstring(R.string.luxembourg), "5.7", "49.4", "6.5", "50.2",
- 1771971595L, 1),
- new OsmMapValues(getTstring(R.string.germany), "5.18", "46.84", "15.47", "55.64",
- 3521359466L, 1),
- new OsmMapValues(getTstring(R.string.baden_wuerttemberg), "7.32", "47.14",
- "10.57", "49.85", 674361124L, 2),
- new OsmMapValues(getTstring(R.string.bayern), "8.92", "47.22", "13.90", "50.62",
- 860161150L, 2),
- new OsmMapValues(getTstring(R.string.mittelfranken), "9.86", "48.78", "11.65",
- "49.84", 203055195L, 2),
- new OsmMapValues(getTstring(R.string.niederbayern), "11.55", "47.75", "14.12",
- "49.42", 312924770L, 2),
- new OsmMapValues(getTstring(R.string.oberbayern), "10.67", "47.05", "13.57",
- "49.14", 382734883L, 2),
- new OsmMapValues(getTstring(R.string.oberfranken), "10.31", "49.54", "12.49",
- "50.95", 235258691L, 2),
- new OsmMapValues(getTstring(R.string.oberpfalz), "11.14", "48.71", "13.47",
- "50.43", 264536012L, 2),
- new OsmMapValues(getTstring(R.string.schwaben), "9.27", "47.10", "11.36", "49.09",
- 321141607L, 2),
- new OsmMapValues(getTstring(R.string.unterfranken), "8.59", "49.16", "10.93",
- "50.67", 303720890L, 2),
- new OsmMapValues(getTstring(R.string.berlin), "13.03", "52.28", "13.81", "52.73",
- 169019946L, 2),
- new OsmMapValues(getTstring(R.string.brandenburg), "11.17", "51.30", "14.83",
- "53.63", 323497599L, 2),
- new OsmMapValues(getTstring(R.string.bremen), "8.43", "52.96", "9.04", "53.66",
- 150963608L, 2),
- new OsmMapValues(getTstring(R.string.hamburg), "9.56", "53.34", "10.39", "53.80",
- 156284421L, 2),
- new OsmMapValues(getTstring(R.string.hessen), "7.72", "49.34", "10.29", "51.71",
- 432279328L, 2),
- new OsmMapValues(getTstring(R.string.mecklenburg_vorpommern), "10.54", "53.05",
- "14.48", "55.05", 213183908L, 2),
- new OsmMapValues(getTstring(R.string.niedersachsen), "6.40", "51.24", "11.69",
- "54.22", 819766939L, 2),
- new OsmMapValues(getTstring(R.string.nordrhein_westfalen), "5.46", "50.26",
- "9.52", "52.59", 967053517L, 2),
- new OsmMapValues(getTstring(R.string.rheinland_pfalz), "6.06", "48.91", "8.56",
- "51.00", 442868899L, 2),
- new OsmMapValues(getTstring(R.string.saarland), "6.30", "49.06", "7.46", "49.69",
- 157721162L, 2),
- new OsmMapValues(getTstring(R.string.sachsen_anhalt), "10.50", "50.88", "13.26",
- "53.11", 287785088L, 2),
- new OsmMapValues(getTstring(R.string.sachsen), "11.82", "50.11", "15.10", "51.73",
- 342620834L, 2),
- new OsmMapValues(getTstring(R.string.schleswig_holstein), "7.41", "53.30",
- "11.98", "55.20", 280293910L, 2),
- new OsmMapValues(getTstring(R.string.thueringen), "9.81", "50.15", "12.72",
- "51.70", 269428239L, 2),
- new OsmMapValues(getTstring(R.string.iceland), "-25.3", "62.8", "-11.4", "67.5",
- 124837162L, 1),
- new OsmMapValues(getTstring(R.string.ireland), "-11.17", "51.25", "-5.23", "55.9",
- 234750271L, 1),
- new OsmMapValues(getTstring(R.string.italy), "6.52", "36.38", "18.96", "47.19",
- 1610171395L, 1),
- new OsmMapValues(getTstring(R.string.spain) + "+" + getTstring(R.string.portugal),
- "-11.04", "34.87", "4.62", "44.41", 1039624918L, 1),
- new OsmMapValues(getTstring(R.string.mallorca), "2.2", "38.8", "4.7", "40.2",
- 137200636L, 2),
- new OsmMapValues(getTstring(R.string.galicia), "-10.0", "41.7", "-6.3", "44.1",
- 174549553L, 2),
- new OsmMapValues(getTstring(R.string.scandinavia), "4.0", "54.4", "32.1", "71.5",
- 1398661090L, 1),
- new OsmMapValues(getTstring(R.string.finland), "18.6", "59.2", "32.3", "70.3",
- 460997178L, 1),
- new OsmMapValues(getTstring(R.string.denmark), "7.49", "54.33", "13.05", "57.88",
- 321870414L, 1),
- new OsmMapValues(getTstring(R.string.switzerland), "5.79", "45.74", "10.59",
- "47.84", 552565332L, 1),
- new OsmMapValues(getTstring(R.string.united_kingdom), "-9.7", "49.6", "2.2",
- "61.2", 901724648L, 1),
- new OsmMapValues(getTstring(R.string.england), "-7.80", "48.93", "2.41", "56.14",
- 937728414L, 1),
- new OsmMapValues(getTstring(R.string.buckinghamshire), "-1.19", "51.44", "-0.43",
- "52.25", 142256978L, 2),
- new OsmMapValues(getTstring(R.string.cambridgeshire), "-0.55", "51.96", "0.56",
- "52.79", 142334001L, 2),
- new OsmMapValues(getTstring(R.string.cumbria), "-3.96", "53.85", "-2.11", "55.24",
- 144422460L, 2),
- new OsmMapValues(getTstring(R.string.east_yorkshire_with_hull), "-1.16", "53.50",
- "0.54", "54.26", 141518744L, 2),
- new OsmMapValues(getTstring(R.string.essex), "-0.07", "51.40", "1.36", "52.14",
- 162542730L, 2),
- new OsmMapValues(getTstring(R.string.herefordshire), "-3.19", "51.78", "-2.29",
- "52.45", 129368660L, 2),
- new OsmMapValues(getTstring(R.string.kent), "-0.02", "50.81", "1.65", "51.53",
- 145482562L, 2),
- new OsmMapValues(getTstring(R.string.lancashire), "-3.20", "53.43", "-2.00",
- "54.29", 148964975L, 2),
- new OsmMapValues(getTstring(R.string.leicestershire), "-1.65", "52.34", "-0.61",
- "53.03", 154199956L, 2),
- new OsmMapValues(getTstring(R.string.norfolk), "0.10", "52.30", "2.04", "53.41",
- 146017009L, 2),
- new OsmMapValues(getTstring(R.string.nottinghamshire), "-1.39", "52.73", "-0.62",
- "53.55", 147986548L, 2),
- new OsmMapValues(getTstring(R.string.oxfordshire), "-1.77", "51.41", "-0.82",
- "52.22", 142240992L, 2),
- new OsmMapValues(getTstring(R.string.shropshire), "-3.29", "52.26", "-2.18",
- "53.05", 136909363L, 2),
- new OsmMapValues(getTstring(R.string.somerset), "-3.89", "50.77", "-2.20",
- "51.40", 145186096L, 2),
- new OsmMapValues(getTstring(R.string.south_yorkshire), "-1.88", "53.25", "-0.80",
- "53.71", 145902650L, 2),
- new OsmMapValues(getTstring(R.string.suffolk), "0.29", "51.88", "1.81", "52.60",
- 143799697L, 2),
- new OsmMapValues(getTstring(R.string.surrey), "-0.90", "51.02", "0.10", "51.52",
- 157987139L, 2),
- new OsmMapValues(getTstring(R.string.wiltshire), "-2.41", "50.90", "-1.44",
- "51.76", 138652346L, 2),
- new OsmMapValues(getTstring(R.string.scotland), "-8.13", "54.49", "-0.15",
- "61.40", 258853845L, 2),
- new OsmMapValues(getTstring(R.string.wales), "-5.56", "51.28", "-2.60", "53.60",
- 193593409L, 2),
- new OsmMapValues(getTstring(R.string.albania), "19.09", "39.55", "21.12", "42.72",
- 146199817L, 1),
- new OsmMapValues(getTstring(R.string.belarus), "23.12", "51.21", "32.87", "56.23",
- 324470696L, 1),
- new OsmMapValues(getTstring(R.string.russian_federation), "27.9", "41.5", "190.4",
- "77.6", 2148314279L, 1),
- new OsmMapValues(getTstring(R.string.bulgaria), "24.7", "42.1", "24.8", "42.1",
- 109869373L, 1),
- new OsmMapValues(getTstring(R.string.bosnia_and_herzegovina), "15.69", "42.52",
- "19.67", "45.32", 187122485L, 1),
- new OsmMapValues(getTstring(R.string.czech_republic), "11.91", "48.48", "19.02",
- "51.17", 904838442L, 1),
- new OsmMapValues(getTstring(R.string.croatia), "13.4", "42.1", "19.4", "46.9",
- 460854751L, 1),
- new OsmMapValues(getTstring(R.string.estonia), "21.5", "57.5", "28.2", "59.6",
- 173378927L, 1),
- new OsmMapValues(getTstring(R.string.greece), "28.9", "37.8", "29.0", "37.8",
- 109435051L, 1),
- new OsmMapValues(getTstring(R.string.crete), "23.3", "34.5", "26.8", "36.0",
- 115985063L, 1),
- new OsmMapValues(getTstring(R.string.hungary), "16.08", "45.57", "23.03", "48.39",
- 350318541L, 1),
- new OsmMapValues(getTstring(R.string.latvia), "20.7", "55.6", "28.3", "58.1",
- 188188140L, 1),
- new OsmMapValues(getTstring(R.string.lithuania), "20.9", "53.8", "26.9", "56.5",
- 217852597L, 1),
- new OsmMapValues(getTstring(R.string.poland), "13.6", "48.8", "24.5", "55.0",
- 1464968657L, 1),
- new OsmMapValues(getTstring(R.string.romania), "20.3", "43.5", "29.9", "48.4",
- 347931565L, 1),
- new OsmMapValues(getTstring(R.string.slovakia), "16.8", "47.7", "22.6", "49.7",
- 420533039L, 1),
- new OsmMapValues(getTstring(R.string.ukraine), "22.0", "44.3", "40.4", "52.4",
- 793611912L, 1),
- new OsmMapValues(getTstring(R.string.north_america), "-178.1", "6.5", "-10.4",
- "84.0", 5601866516L, 0),
- new OsmMapValues(getTstring(R.string.alaska), "-179.5", "49.5", "-129", "71.6",
- 207746039L, 1),
- new OsmMapValues(getTstring(R.string.canada), "-141.3", "41.5", "-52.2", "70.2",
- 2635719651L, 1),
- new OsmMapValues(getTstring(R.string.hawaii), "-161.07", "18.49", "-154.45",
- "22.85", 115016656L, 1),
- new OsmMapValues(getTstring(R.string.usa) + getTstring(R.string.except_alaska_and_hawaii),
- "-125.4", "24.3", "-66.5", "49.3", 4060487198L, 1),
- new OsmMapValues(getTstring(R.string.midwest), "-104.11", "35.92", "-80.46",
- "49.46", 1145596450L, 2),
- new OsmMapValues(getTstring(R.string.michigan), "-90.47", "41.64", "-79.00",
- "49.37", 538247019L, 2),
- new OsmMapValues(getTstring(R.string.ohio), "-84.87", "38.05", "-79.85", "43.53",
- 277022336L, 2),
- new OsmMapValues(getTstring(R.string.northeast), "-80.58", "38.72", "-66.83",
- "47.53", 1017160709L, 2),
- new OsmMapValues(getTstring(R.string.massachusetts), "-73.56", "40.78", "-68.67",
- "42.94", 340055487L, 2),
- new OsmMapValues(getTstring(R.string.vermont), "-73.49", "42.68", "-71.41",
- "45.07", 139626067L, 2),
- new OsmMapValues(getTstring(R.string.pacific), "-180.05", "15.87", "-129.75",
- "73.04", 207090640L, 2),
- new OsmMapValues(getTstring(R.string.south), "-106.70", "23.98", "-71.46",
- "40.70", 1747935356L, 2),
- new OsmMapValues(getTstring(R.string.arkansas), "-94.67", "32.95", "-89.59",
- "36.60", 155658661L, 2),
- new OsmMapValues(getTstring(R.string.district_of_columbia), "-77.17", "38.74",
- "-76.86", "39.05", 129235755L, 2),
- new OsmMapValues(getTstring(R.string.florida), "-88.75", "23.63", "-77.67",
- "31.05", 224022108L, 2),
- new OsmMapValues(getTstring(R.string.louisiana), "-94.09", "28.09", "-88.62",
- "33.07", 210120605L, 2),
- new OsmMapValues(getTstring(R.string.maryland), "-79.54", "37.83", "-74.99",
- "40.22", 276462622L, 2),
- new OsmMapValues(getTstring(R.string.mississippi), "-91.71", "29.99", "-88.04",
- "35.05", 177858031L, 2),
- new OsmMapValues(getTstring(R.string.oklahoma), "-103.41", "33.56", "-94.38",
- "37.38", 200061473L, 2),
- new OsmMapValues(getTstring(R.string.texas), "-106.96", "25.62", "-92.97",
- "36.58", 430089141L, 2),
- new OsmMapValues(getTstring(R.string.virginia), "-83.73", "36.49", "-74.25",
- "39.52", 384187569L, 2),
- new OsmMapValues(getTstring(R.string.west_virginia), "-82.70", "37.15", "-77.66",
- "40.97", 220552071L, 2),
- new OsmMapValues(getTstring(R.string.west), "-133.11", "31.28", "-101.99",
- "49.51", 1152909162L, 2),
- new OsmMapValues(getTstring(R.string.arizona), "-114.88", "30.01", "-108.99",
- "37.06", 182826833L, 2),
- new OsmMapValues(getTstring(R.string.california), "-125.94", "32.43", "-114.08",
- "42.07", 586923326L, 2),
- new OsmMapValues(getTstring(R.string.colorado), "-109.11", "36.52", "-100.41",
- "41.05", 228623724L, 2),
- new OsmMapValues(getTstring(R.string.idaho), "-117.30", "41.93", "-110.99",
- "49.18", 170684507L, 2),
- new OsmMapValues(getTstring(R.string.montana), "-116.10", "44.31", "-102.64",
- "49.74", 176229800L, 2),
- new OsmMapValues(getTstring(R.string.new_mexico), "-109.10", "26.98", "-96.07",
- "37.05", 361793070L, 2),
- new OsmMapValues(getTstring(R.string.nevada), "-120.2", "35.0", "-113.8", "42.1",
- 200614482L, 2),
- new OsmMapValues(getTstring(R.string.oregon), "-124.8", "41.8", "-116.3", "46.3",
- 211462685L, 2),
- new OsmMapValues(getTstring(R.string.utah), "-114.11", "36.95", "-108.99",
- "42.05", 151590197L, 2),
- new OsmMapValues(getTstring(R.string.washington_state), "-125.0", "45.5",
- "-116.9", "49.0", 222553768L, 2),
- new OsmMapValues(getTstring(R.string.south_middle_america), "-83.5", "-56.3",
- "-30.8", "13.7", 958895383L, 0),
- new OsmMapValues(getTstring(R.string.argentina), "-73.9", "-57.3", "-51.6",
- "-21.0", 376857648L, 1),
- new OsmMapValues(getTstring(R.string.argentina) + "+" + getTstring(R.string.chile),
- "-77.2", "-56.3", "-52.7", "-16.1", 420275812L, 1),
- new OsmMapValues(getTstring(R.string.bolivia), "-70.5", "-23.1", "-57.3", "-9.3",
- 175937824L, 1),
- new OsmMapValues(getTstring(R.string.brazil), "-71.4", "-34.7", "-32.8", "5.4",
- 664872975L, 1),
- new OsmMapValues(getTstring(R.string.chile), "-81.77", "-58.50", "-65.46",
- "-17.41", 241657330L, 1),
- new OsmMapValues(getTstring(R.string.cuba), "-85.3", "19.6", "-74.0", "23.6",
- 129043575L, 1),
- new OsmMapValues(getTstring(R.string.colombia), "-79.1", "-4.0", "-66.7", "12.6",
- 212016580L, 1),
- new OsmMapValues(getTstring(R.string.ecuador), "-82.6", "-5.4", "-74.4", "2.3",
- 158857591L, 1),
- new OsmMapValues(getTstring(R.string.guyana) + "+" + getTstring(R.string.suriname) + "+"
- + getTstring(R.string.guyane_francaise), "-62.0", "1.0", "-51.2",
- "8.9", 123000072L, 1),
- new OsmMapValues(getTstring(R.string.haiti) + "+" + getTstring(R.string.dominican_republic),
- "-74.8", "17.3", "-68.2", "20.1", 149925689L, 1),
- new OsmMapValues(getTstring(R.string.jamaica), "-78.6", "17.4", "-75.9", "18.9",
- 113961998L, 1),
- new OsmMapValues(getTstring(R.string.mexico), "-117.6", "14.1", "-86.4", "32.8",
- 551307973L, 1),
- new OsmMapValues(getTstring(R.string.paraguay), "-63.8", "-28.1", "-53.6",
- "-18.8", 159498397L, 1),
- new OsmMapValues(getTstring(R.string.peru), "-82.4", "-18.1", "-67.5", "0.4",
- 212490557L, 1),
- new OsmMapValues(getTstring(R.string.uruguay), "-59.2", "-36.5", "-51.7", "-29.7",
- 157482719L, 1),
- new OsmMapValues(getTstring(R.string.venezuela), "-73.6", "0.4", "-59.7", "12.8",
- 167295729L, 1)
+
+ // size estimations updated 2019-10-28
+ new OsmMapValues(R.string.whole_planet, "-180", "-90", "180", "90",
+ 35471336933L, 0),
+ new OsmMapValues(R.string.africa, "-30.89", "-36.17", "61.68", "38.40",
+ 3941558472L, 0),
+ new OsmMapValues(R.string.angola, "11.4", "-18.1", "24.2", "-5.3",
+ 224809554L, 1),
+ new OsmMapValues(R.string.burundi, "28.9", "-4.5", "30.9", "-2.2",
+ 201346208L, 1),
+ new OsmMapValues(R.string.canary_islands, "-18.69", "26.52", "-12.79", "29.99",
+ 191823973L, 1),
+ new OsmMapValues(R.string.congo, "11.7", "-13.6", "31.5", "5.7",
+ 558204116L, 1),
+ new OsmMapValues(R.string.ethiopia, "32.89", "3.33", "48.07", "14.97",
+ 249153700L, 1),
+ new OsmMapValues(R.string.guinea, "-15.47", "7.12", "-7.58", "12.74",
+ 290456408L, 1),
+ new OsmMapValues(R.string.cotedivoire, "-8.72", "4.09", "-2.43", "10.80",
+ 220210996L, 1),
+ new OsmMapValues(R.string.kenya, "33.8", "-5.2", "42.4", "4.9",
+ 402046406L, 1),
+ new OsmMapValues(R.string.lesotho, "26.9", "-30.7", "29.6", "-28.4",
+ 250430629L, 1),
+ new OsmMapValues(R.string.liberia, "-15.00", "-0.73", "-7.20", "8.65",
+ 220130148L, 1),
+ new OsmMapValues(R.string.libya, "9.32", "19.40", "25.54", "33.63",
+ 202766153L, 1),
+ new OsmMapValues(R.string.madagascar, "42.25", "-26.63", "51.20", "-11.31",
+ 231793632L, 1),
+ new OsmMapValues(R.string.namibia, R.string.botswana, "11.4", "-29.1", "29.5", "-16.9",
+ 355183133L, 1),
+ new OsmMapValues(R.string.reunion, "55.2", "-21.4", "55.9", "-20.9",
+ 170953086L, 1),
+ new OsmMapValues(R.string.rwanda, "28.8", "-2.9", "30.9", "-1.0",
+ 213213966L, 1),
+ new OsmMapValues(R.string.south_africa, R.string.lesotho, "15.93", "-36.36", "33.65", "-22.08",
+ 412557227L, 1),
+ new OsmMapValues(R.string.tanzania, "29.19", "-11.87", "40.74", "-0.88",
+ 659878114L, 1),
+ new OsmMapValues(R.string.uganda, "29.3", "-1.6", "35.1", "4.3",
+ 424948047L, 1),
+ new OsmMapValues(R.string.asia, "23.8", "0.1", "195.0", "82.4",
+ 8633755849L, 0),
+ new OsmMapValues(R.string.azerbaijan, "44.74", "38.34", "51.69", "42.37",
+ 208193716L, 1),
+ new OsmMapValues(R.string.china, "67.3", "5.3", "135.0", "54.5",
+ 3071225422L, 1),
+ new OsmMapValues(R.string.cyprus, "32.0", "34.5", "34.9", "35.8",
+ 178895753L, 1),
+ new OsmMapValues(R.string.india, R.string.nepal, "67.9", "5.5", "89.6", "36.0",
+ 1046746656L, 1),
+ new OsmMapValues(R.string.indonesia, "93.7", "-17.3", "155.5", "7.6",
+ 1182281967L, 1),
+ new OsmMapValues(R.string.iran, "43.5", "24.4", "63.6", "40.4",
+ 391459887L, 1),
+ new OsmMapValues(R.string.iraq, "38.7", "28.5", "49.2", "37.4",
+ 244896621L, 1),
+ new OsmMapValues(R.string.israel, "33.99", "29.8", "35.95", "33.4",
+ 236037295L, 1),
+ new OsmMapValues(R.string.japan, R.string.korea, "123.6", "25.2", "151.3", "47.1",
+ 1337474060L, 1),
+ new OsmMapValues(R.string.kazakhstan, "46.44", "40.89", "87.36", "55.45",
+ 661252271L, 1),
+ new OsmMapValues(R.string.kyrgyzsyan, "69.23", "39.13", "80.33", "43.29",
+ 215786962L, 1),
+ new OsmMapValues(R.string.malaysia, R.string.singapore, "94.3", "-5.9", "108.6", "6.8",
+ 339511849L, 1),
+ new OsmMapValues(R.string.mongolia, "87.5", "41.4", "120.3", "52.7",
+ 231652214L, 1),
+ new OsmMapValues(R.string.pakistan, "60.83", "23.28", "77.89", "37.15",
+ 316649335L, 1),
+ new OsmMapValues(R.string.philippines, "115.58", "4.47", "127.85", "21.60",
+ 417733117L, 1),
+ new OsmMapValues(R.string.saudi_arabia, "33.2", "16.1", "55.9", "33.5",
+ 374101149L, 1),
+ new OsmMapValues(R.string.taiwan, "119.1", "21.5", "122.5", "25.2",
+ 213310839L, 1),
+ new OsmMapValues(R.string.thailand, "97.5", "5.7", "105.2", "19.7",
+ 345327944L, 1),
+ new OsmMapValues(R.string.turkey, "25.1", "35.8", "46.4", "42.8",
+ 547969022L, 1),
+ new OsmMapValues(R.string.turkmenistan, "51.78", "35.07", "66.76", "42.91",
+ 197833565L, 1),
+ new OsmMapValues(R.string.uae_other, "51.5", "22.6", "56.7", "26.5",
+ 188885191L, 1),
+ new OsmMapValues(R.string.australia, R.string.oceania, "89.84", "-57.39", "179.79", "7.26",
+ 1767156679L, 0),
+ new OsmMapValues(R.string.australia, "110.5", "-44.2", "154.9", "-9.2",
+ 550526915L, 0),
+ new OsmMapValues(R.string.tasmania, "144.0", "-45.1", "155.3", "-24.8",
+ 377084650L, 1),
+ new OsmMapValues(R.string.victoria, R.string.new_south_wales, "140.7", "-39.4", "153.7", "-26.9",
+ 364316999L, 1),
+ new OsmMapValues(R.string.new_caledonia, "157.85", "-25.05", "174.15", "-16.85",
+ 164225513L, 1),
+ new OsmMapValues(R.string.newzealand, "165.2", "-47.6", "179.1", "-33.7",
+ 350750954L, 1),
+ new OsmMapValues(R.string.europe, "-12.97", "33.59", "34.15", "72.10",
+ 15902268761L, 0),
+ // Is more than 'Europe' from above where 'western europe' should be smaller than europe
+ //new OsmMapValues(R.string.western_europe, "-17.6", "34.5", "42.9", "70.9",
+ // 16879410713L, 1),
+ new OsmMapValues(R.string.austria, "9.4", "46.32", "17.21", "49.1",
+ 1184302570L, 1),
+ new OsmMapValues(R.string.azores, "-31.62", "36.63", "-24.67", "40.13",
+ 171415530L, 1),
+ new OsmMapValues(R.string.belgium, "2.3", "49.5", "6.5", "51.6",
+ 866194492L, 1),
+ new OsmMapValues(R.string.benelux, "2.08", "48.87", "7.78", "54.52",
+ 2075973265L, 1),
+ new OsmMapValues(R.string.netherlands, "3.07", "50.75", "7.23", "53.73",
+ 1388530557L, 1),
+ new OsmMapValues(R.string.denmark, "7.65", "54.32", "15.58", "58.07",
+ 552080821L, 1),
+ new OsmMapValues(R.string.faroe_islands, "-7.8", "61.3", "-6.1", "62.5",
+ 162933852L, 1),
+ new OsmMapValues(R.string.france, R.string.belgium, R.string.luxembourg,
+ "-5.20", "42.20", "8.20", "51.68",
+ 4575442134L, 1),
+ new OsmMapValues(R.string.france, R.string.luxembourg,"-5.20", "42.20", "8.20", "51.10",
+ 3984216361L, 1),
+ new OsmMapValues(R.string.alsace, "6.79", "47.27", "8.48", "49.17",
+ 457980795L, 2),
+ new OsmMapValues(R.string.aquitaine, "-2.27", "42.44", "1.50", "45.76",
+ 590247901L, 2),
+ new OsmMapValues(R.string.auvergne, "2.01", "44.57", "4.54", "46.85",
+ 404857899L, 2),
+ new OsmMapValues(R.string.basse_normandie, "-2.09", "48.13", "1.03", "49.98",
+ 350392952L, 2),
+ new OsmMapValues(R.string.bourgogne, "2.80", "46.11", "5.58", "48.45",
+ 429259997L, 2),
+ new OsmMapValues(R.string.bretagne, "-5.58", "46.95", "-0.96", "48.99",
+ 506377685L, 2),
+ new OsmMapValues(R.string.centre, "0.01", "46.29", "3.18", "48.99",
+ 620373774L, 2),
+ new OsmMapValues(R.string.champagne_ardenne, "3.34", "47.53", "5.94", "50.28",
+ 404110051L, 2),
+ new OsmMapValues(R.string.corse, "8.12", "41.32", "9.95", "43.28",
+ 196000318L, 2),
+ new OsmMapValues(R.string.franche_comte, "5.20", "46.21", "7.83", "48.07",
+ 448854594L, 2),
+ new OsmMapValues(R.string.haute_normandie, "-0.15", "48.62", "1.85", "50.18",
+ 291794192L, 2),
+ new OsmMapValues(R.string.ile_de_france, "1.40", "48.07", "3.61", "49.29",
+ 404250888L, 2),
+ new OsmMapValues(R.string.languedoc_roussillon, "1.53", "42.25", "4.89", "45.02",
+ 509739604L, 2),
+ new OsmMapValues(R.string.limousin, "0.58", "44.87", "2.66", "46.50",
+ 315805128L, 2),
+ new OsmMapValues(R.string.lorraine, "4.84", "47.77", "7.72", "49.73",
+ 433828147L, 2),
+ new OsmMapValues(R.string.midi_pyrenees, "-0.37", "42.18", "3.50", "45.10",
+ 609387039L, 2),
+ new OsmMapValues(R.string.nord_pas_de_calais, "1.42", "49.92", "4.49", "51.31",
+ 480042491L, 2),
+ new OsmMapValues(R.string.pays_de_la_loire, "-2.88", "46.20", "0.97", "48.62",
+ 638031978L, 2),
+ new OsmMapValues(R.string.picardie, "1.25", "48.79", "4.31", "50.43",
+ 480802771L, 2),
+ new OsmMapValues(R.string.poitou_charentes, "-1.69", "45.04", "1.26", "47.23",
+ 459723694L, 2),
+ new OsmMapValues(R.string.provence_alpes_cote_d_azur, "4.21", "42.91", "7.99", "45.18",
+ 491232080L, 2),
+ new OsmMapValues(R.string.rhone_alpes, "3.65", "44.07", "7.88", "46.64",
+ 656454467L, 2),
+ new OsmMapValues(R.string.luxembourg, "5.7", "49.4", "6.5", "50.2",
+ 207870816L, 1),
+ new OsmMapValues(R.string.germany, "5.18", "46.84", "15.47", "55.64",
+ 4258366162L, 1),
+ new OsmMapValues(R.string.baden_wuerttemberg, "7.32", "47.14", "10.57", "49.85",
+ 859363389L, 2),
+ new OsmMapValues(R.string.bayern, "8.92", "47.22", "13.90", "50.62",
+ 1089590692L, 2),
+ new OsmMapValues(R.string.mittelfranken, "9.86", "48.78", "11.65", "49.84",
+ 278839689L, 2),
+ new OsmMapValues(R.string.niederbayern, "11.55", "47.75", "14.12", "49.42",
+ 409234523L, 2),
+ new OsmMapValues(R.string.oberbayern, "10.67", "47.05", "13.57", "49.14",
+ 494705080L, 2),
+ new OsmMapValues(R.string.oberfranken, "10.31", "49.54", "12.49", "50.95",
+ 320127656L, 2),
+ new OsmMapValues(R.string.oberpfalz, "11.14", "48.71", "13.47", "50.43",
+ 345835711L, 2),
+ new OsmMapValues(R.string.schwaben, "9.27", "47.10", "11.36", "49.09",
+ 425231381L, 2),
+ new OsmMapValues(R.string.unterfranken, "8.59", "49.16", "10.93", "50.67",
+ 407153157L, 2),
+ new OsmMapValues(R.string.berlin, "13.03", "52.28", "13.81", "52.73",
+ 232299113L, 2),
+ new OsmMapValues(R.string.brandenburg, "11.17", "51.30", "14.83", "53.63",
+ 429938728L, 2),
+ new OsmMapValues(R.string.bremen, "8.43", "52.96", "9.04", "53.66",
+ 210480663L, 2),
+ new OsmMapValues(R.string.hamburg, "9.56", "53.34", "10.39", "53.80",
+ 215777707L, 2),
+ new OsmMapValues(R.string.hessen, "7.72", "49.34", "10.29", "51.71",
+ 549304606L, 2),
+ new OsmMapValues(R.string.mecklenburg_vorpommern, "10.54", "53.05", "14.48", "55.05",
+ 298273965L, 2),
+ new OsmMapValues(R.string.niedersachsen, "6.40", "51.24", "11.69", "54.22",
+ 973888436L, 2),
+ new OsmMapValues(R.string.nordrhein_westfalen, "5.46", "50.26", "9.52", "52.59",
+ 1121091906L, 2),
+ new OsmMapValues(R.string.rheinland_pfalz, "6.06", "48.91", "8.56", "51.00",
+ 562406978L, 2),
+ new OsmMapValues(R.string.saarland, "6.30", "49.06", "7.46", "49.69",
+ 223614951L, 2),
+ new OsmMapValues(R.string.sachsen_anhalt, "10.50", "50.88", "13.26", "53.11",
+ 380652800L, 2),
+ new OsmMapValues(R.string.sachsen, "11.82", "50.11", "15.10", "51.73",
+ 452296960L, 2),
+ new OsmMapValues(R.string.schleswig_holstein, "7.41", "53.30", "11.98", "55.20",
+ 375552150L, 2),
+ new OsmMapValues(R.string.thueringen, "9.81", "50.15", "12.72", "51.70",
+ 362501525L, 2),
+ new OsmMapValues(R.string.iceland, "-25.3", "62.8", "-11.4", "67.5",
+ 198263647L, 1),
+ new OsmMapValues(R.string.ireland, "-11.17", "51.25", "-5.23", "55.9",
+ 326472032L, 1),
+ new OsmMapValues(R.string.italy, "6.52", "36.38", "18.96", "47.19",
+ 2199756999L, 1),
+ new OsmMapValues(R.string.spain, R.string.portugal, "-11.04", "34.87", "4.62", "44.41",
+ 1442482175L, 1),
+ new OsmMapValues(R.string.mallorca, "2.2", "38.8", "4.7", "40.2",
+ 246286923L, 2),
+ new OsmMapValues(R.string.galicia, "-10.0", "41.7", "-6.3", "44.1",
+ 269729717L, 2),
+ new OsmMapValues(R.string.scandinavia, "4.0", "54.4", "32.1", "71.5",
+ 2545082361L, 1),
+ new OsmMapValues(R.string.finland, "18.6", "59.2", "32.3", "70.3",
+ 919020354L, 1),
+ new OsmMapValues(R.string.denmark, "7.49", "54.33", "13.05", "57.88",
+ 488352770L, 1),
+ new OsmMapValues(R.string.switzerland, "5.79", "45.74", "10.59", "47.84",
+ 731538216L, 1),
+ new OsmMapValues(R.string.united_kingdom, "-9.7", "49.6", "2.2", "61.2",
+ 1205714793L, 1),
+ new OsmMapValues(R.string.england, "-7.80", "48.93", "2.41", "56.14",
+ 1234829532L, 1),
+ new OsmMapValues(R.string.buckinghamshire, "-1.19", "51.44", "-0.43", "52.25",
+ 216717402L, 2),
+ new OsmMapValues(R.string.cambridgeshire, "-0.55", "51.96", "0.56", "52.79",
+ 216306889L, 2),
+ new OsmMapValues(R.string.cumbria, "-3.96", "53.85", "-2.11", "55.24",
+ 227066588L, 2),
+ new OsmMapValues(R.string.east_yorkshire_with_hull, "-1.16", "53.50", "0.54", "54.26",
+ 214532411L, 2),
+ new OsmMapValues(R.string.essex, "-0.07", "51.40", "1.36", "52.14",
+ 242803228L, 2),
+ new OsmMapValues(R.string.herefordshire, "-3.19", "51.78", "-2.29", "52.45",
+ 201746914L, 2),
+ new OsmMapValues(R.string.kent, "-0.02", "50.81", "1.65", "51.53",
+ 222224232L, 2),
+ new OsmMapValues(R.string.lancashire, "-3.20", "53.43", "-2.00", "54.29",
+ 231719236L, 2),
+ new OsmMapValues(R.string.leicestershire, "-1.65", "52.34", "-0.61", "53.03",
+ 231608922L, 2),
+ new OsmMapValues(R.string.norfolk, "0.10", "52.30", "2.04", "53.41",
+ 220583805L, 2),
+ new OsmMapValues(R.string.nottinghamshire, "-1.39", "52.73", "-0.62", "53.55",
+ 222001309L, 2),
+ new OsmMapValues(R.string.oxfordshire, "-1.77", "51.41", "-0.82", "52.22",
+ 215858382L, 2),
+ new OsmMapValues(R.string.shropshire, "-3.29", "52.26", "-2.18", "53.05",
+ 210489688L, 2),
+ new OsmMapValues(R.string.somerset, "-3.89", "50.77", "-2.20", "51.40",
+ 221498821L, 2),
+ new OsmMapValues(R.string.south_yorkshire, "-1.88", "53.25", "-0.80", "53.71",
+ 217566765L, 2),
+ new OsmMapValues(R.string.suffolk, "0.29", "51.88", "1.81", "52.60",
+ 218109848L, 2),
+ new OsmMapValues(R.string.surrey, "-0.90", "51.02", "0.10", "51.52",
+ 238058353L, 2),
+ new OsmMapValues(R.string.wiltshire, "-2.41", "50.90", "-1.44", "51.76",
+ 212963156L, 2),
+ new OsmMapValues(R.string.scotland, "-8.13", "54.49", "-0.15", "61.40",
+ 372486133L, 2),
+ new OsmMapValues(R.string.wales, "-5.56", "51.28", "-2.60", "53.60",
+ 281554024L, 2),
+ new OsmMapValues(R.string.albania, "19.09", "39.55", "21.12", "42.72",
+ 227718134L, 1),
+ new OsmMapValues(R.string.belarus, "23.12", "51.21", "32.87", "56.23",
+ 475885189L, 1),
+ new OsmMapValues(R.string.russian_federation, "27.9", "41.5", "190.4", "77.6",
+ 3368130201L, 1),
+ new OsmMapValues(R.string.bulgaria, "24.7", "42.1", "24.8", "42.1",
+ 162974147L, 1),
+ new OsmMapValues(R.string.bosnia_and_herzegovina, "15.69", "42.52", "19.67", "45.32",
+ 272871917L, 1),
+ new OsmMapValues(R.string.czech_republic, "11.91", "48.48", "19.02", "51.17",
+ 1100792845L, 1),
+ new OsmMapValues(R.string.croatia, "13.4", "42.1", "19.4", "46.9",
+ 718506859L, 1),
+ new OsmMapValues(R.string.estonia, "21.5", "57.5", "28.2", "59.6",
+ 239147853L, 1),
+ new OsmMapValues(R.string.greece, "28.9", "37.8", "29.0", "37.8",
+ 165328625L, 1),
+ new OsmMapValues(R.string.crete, "23.3", "34.5", "26.8", "36.0",
+ 174905198L, 1),
+ new OsmMapValues(R.string.hungary, "16.08", "45.57", "23.03", "48.39",
+ 499823508L, 1),
+ new OsmMapValues(R.string.latvia, "20.7", "55.6", "28.3", "58.1",
+ 272931650L, 1),
+ new OsmMapValues(R.string.lithuania, "20.9", "53.8", "26.9", "56.5",
+ 332328437L, 1),
+ new OsmMapValues(R.string.poland, "13.6", "48.8", "24.5", "55.0",
+ 1849496038L, 1),
+ new OsmMapValues(R.string.romania, "20.3", "43.5", "29.9", "48.4",
+ 497623904L, 1),
+ new OsmMapValues(R.string.slovakia, "16.8", "47.7", "22.6", "49.7",
+ 518251489L, 1),
+ new OsmMapValues(R.string.ukraine, "22.0", "44.3", "40.4", "52.4",
+ 1105659895L, 1),
+ new OsmMapValues(R.string.north_america, "-178.1", "6.5", "-10.4", "84.0",
+ 7727821782L, 0),
+ new OsmMapValues(R.string.alaska, "-179.5", "49.5", "-129", "71.6",
+ 309103093L, 1),
+ new OsmMapValues(R.string.canada, "-141.3", "41.5", "-52.2", "70.2",
+ 3564630901L, 1),
+ new OsmMapValues(R.string.hawaii, "-161.07", "18.49", "-154.45", "22.85",
+ 170132156L, 1),
+ new OsmMapValues(R.string.usa, R.string.except_alaska_and_hawaii, "-125.4", "24.3", "-66.5", "49.3",
+ 5533181627L, 1),
+ new OsmMapValues(R.string.midwest, "-104.11", "35.92", "-80.46", "49.46",
+ 1565753619L, 2),
+ new OsmMapValues(R.string.michigan, "-90.47", "41.64", "-79.00", "49.37",
+ 794434442L, 2),
+ new OsmMapValues(R.string.ohio, "-84.87", "38.05", "-79.85", "43.53",
+ 428282496L, 2),
+ new OsmMapValues(R.string.northeast, "-80.58", "38.72", "-66.83", "47.53",
+ 1391521085L, 2),
+ new OsmMapValues(R.string.massachusetts, "-73.56", "40.78", "-68.67", "42.94",
+ 438012615L, 2),
+ new OsmMapValues(R.string.vermont, "-73.49", "42.68", "-71.41", "45.07",
+ 206957907L, 2),
+ new OsmMapValues(R.string.pacific, "-180.05", "15.87", "-129.75", "73.04",
+ 309809468L, 2),
+ new OsmMapValues(R.string.south, "-106.70", "23.98", "-71.46", "40.70",
+ 2466350986L, 2),
+ new OsmMapValues(R.string.arkansas, "-94.67", "32.95", "-89.59", "36.60",
+ 223752575L, 2),
+ new OsmMapValues(R.string.district_of_columbia, "-77.17", "38.74", "-76.86", "39.05",
+ 201055647L, 2),
+ new OsmMapValues(R.string.florida, "-88.75", "23.63", "-77.67", "31.05",
+ 372359367L, 2),
+ new OsmMapValues(R.string.louisiana, "-94.09", "28.09", "-88.62", "33.07",
+ 290673534L, 2),
+ new OsmMapValues(R.string.maryland, "-79.54", "37.83", "-74.99", "40.22",
+ 409820479L, 2),
+ new OsmMapValues(R.string.mississippi, "-91.71", "29.99", "-88.04", "35.05",
+ 246036091L, 2),
+ new OsmMapValues(R.string.oklahoma, "-103.41", "33.56", "-94.38", "37.38",
+ 265042769L, 2),
+ new OsmMapValues(R.string.texas, "-106.96", "25.62", "-92.97", "36.58",
+ 625570538L, 2),
+ new OsmMapValues(R.string.virginia, "-83.73", "36.49", "-74.25", "39.52",
+ 546119530L, 2),
+ new OsmMapValues(R.string.west_virginia, "-82.70", "37.15", "-77.66", "40.97",
+ 319698480L, 2),
+ new OsmMapValues(R.string.west, "-133.11", "31.28", "-101.99", "49.51",
+ 1501540635L, 2),
+ new OsmMapValues(R.string.arizona, "-114.88", "30.01", "-108.99", "37.06",
+ 276838815L, 2),
+ new OsmMapValues(R.string.california, "-125.94", "32.43", "-114.08", "42.07",
+ 725286705L, 2),
+ new OsmMapValues(R.string.colorado, "-109.11", "36.52", "-100.41", "41.05",
+ 328730867L, 2),
+ new OsmMapValues(R.string.idaho, "-117.30", "41.93", "-110.99", "49.18",
+ 241725898L, 2),
+ new OsmMapValues(R.string.montana, "-116.10", "44.31", "-102.64", "49.74",
+ 246850772L, 2),
+ new OsmMapValues(R.string.new_mexico, "-109.10", "26.98", "-96.07", "37.05",
+ 542205524L, 2),
+ new OsmMapValues(R.string.nevada, "-120.2", "35.0", "-113.8", "42.1",
+ 269630259L, 2),
+ new OsmMapValues(R.string.oregon, "-124.8", "41.8", "-116.3", "46.3",
+ 290552225L, 2),
+ new OsmMapValues(R.string.utah, "-114.11", "36.95", "-108.99", "42.05",
+ 222549404L, 2),
+ new OsmMapValues(R.string.washington_state, "-125.0", "45.5", "-116.9", "49.0",
+ 323577562L, 2),
+ new OsmMapValues(R.string.south_middle_america, "-83.5", "-56.3", "-30.8", "13.7",
+ 1803470489L, 0),
+ new OsmMapValues(R.string.argentina, "-73.9", "-57.3", "-51.6", "-21.0",
+ 640249385L, 1),
+ new OsmMapValues(R.string.argentina, R.string.chile, "-77.2", "-56.3", "-52.7", "-16.1",
+ 713424629L, 1),
+ new OsmMapValues(R.string.bolivia, "-70.5", "-23.1", "-57.3", "-9.3",
+ 257531768L, 1),
+ new OsmMapValues(R.string.brazil, "-71.4", "-34.7", "-32.8", "5.4",
+ 1275564517L, 1),
+ new OsmMapValues(R.string.chile, "-81.77", "-58.50", "-65.46", "-17.41",
+ 400742681L, 1),
+ new OsmMapValues(R.string.cuba, "-85.3", "19.6", "-74.0", "23.6",
+ 190849399L, 1),
+ new OsmMapValues(R.string.colombia, "-79.1", "-4.0", "-66.7", "12.6",
+ 337606776L, 1),
+ new OsmMapValues(R.string.ecuador, "-82.6", "-5.4", "-74.4", "2.3",
+ 231183832L, 1),
+ new OsmMapValues(R.string.guyana, R.string.suriname, R.string.guyane_francaise,
+ "-62.0", "1.0", "-51.2", "8.9",
+ 123000072L, 1),
+ new OsmMapValues(R.string.haiti, R.string.dominican_republic, "-74.8", "17.3", "-68.2", "20.1",
+ 213013324L, 1),
+ new OsmMapValues(R.string.jamaica, "-78.6", "17.4", "-75.9", "18.9",
+ 168748968L, 1),
+ new OsmMapValues(R.string.mexico, "-117.6", "14.1", "-86.4", "32.8",
+ 829539696L, 1),
+ new OsmMapValues(R.string.paraguay, "-63.8", "-28.1", "-53.6", "-18.8",
+ 262841159L, 1),
+ new OsmMapValues(R.string.peru, "-82.4", "-18.1", "-67.5", "0.4",
+ 328138464L, 1),
+ new OsmMapValues(R.string.uruguay, "-59.2", "-36.5", "-51.7", "-29.7",
+ 227796557L, 1),
+ new OsmMapValues(R.string.venezuela, "-73.6", "0.4", "-59.7", "12.8",
+ 262760703L, 1)
};
//we should try to resume
private static final int SOCKET_CONNECT_TIMEOUT = 60000; // 60 secs.
@@ -473,7 +474,6 @@ public class NavitMapDownloader extends Thread {
private static final int UPDATE_PROGRESS_TIME_NS = 1000 * 1000000; // 1ns=1E-9s
private static final int MAX_RETRIES = 5;
private static final String TAG = "NavitMapDownLoader";
- private final String mMapFilenamePath;
private final OsmMapValues mMapValues;
private final int mMapId;
private Boolean mStopMe = false;
@@ -484,7 +484,6 @@ public class NavitMapDownloader extends Thread {
NavitMapDownloader(int mapId) {
this.mMapValues = osm_maps[mapId];
this.mMapId = mapId;
- this.mMapFilenamePath = Navit.sMapFilenamePath;
}
static NavitMap[] getAvailableMaps() {
@@ -539,7 +538,7 @@ public class NavitMapDownloader extends Thread {
if (success || mStopMe) {
NavitDialogs.sendDialogMessage(NavitDialogs.MSG_MAP_DOWNLOAD_FINISHED,
- mMapFilenamePath + mMapValues.mMapName + ".bin", null, -1, success ? 1 : 0, mMapId);
+ Navit.sMapFilenamePath + mMapValues.mMapName + ".bin", null, -1, success ? 1 : 0, mMapId);
}
}
@@ -549,7 +548,7 @@ public class NavitMapDownloader extends Thread {
}
private boolean checkFreeSpace(long neededBytes) {
- long freeSpace = getFreeSpace();
+ long freeSpace = NavitUtils.getFreeSpace(Navit.sMapFilenamePath);
if (neededBytes <= 0) {
neededBytes = MAP_WRITE_FILE_BUFFER;
@@ -575,8 +574,8 @@ public class NavitMapDownloader extends Thread {
File finalOutputFile = getMapFile();
if (finalOutputFile.exists()) {
- Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
- NavitGraphics.MsgType.CLB_DELETE_MAP.ordinal());
+ Message msg = Message.obtain(NavitCallbackHandler.sCallbackHandler,
+ NavitCallbackHandler.MsgType.CLB_DELETE_MAP.ordinal());
Bundle b = new Bundle();
b.putString("title", finalOutputFile.getAbsolutePath());
msg.setData(b);
@@ -649,7 +648,7 @@ public class NavitMapDownloader extends Thread {
}
private File getDestinationFile() {
- File outputFile = new File(mMapFilenamePath, mMapValues.mMapName + ".tmp");
+ File outputFile = new File(Navit.sMapFilenamePath, mMapValues.mMapName + ".tmp");
outputFile.getParentFile().mkdir();
return outputFile;
}
@@ -691,14 +690,6 @@ public class NavitMapDownloader extends Thread {
return url;
}
- private long getFreeSpace() {
- try {
- StatFs fsInfo = new StatFs(mMapFilenamePath);
- return (long) fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
- } catch (Exception e) {
- return -1;
- }
- }
private BufferedInputStream getInputStream(URLConnection c) {
BufferedInputStream bif;
@@ -720,11 +711,11 @@ public class NavitMapDownloader extends Thread {
}
private File getMapFile() {
- return new File(mMapFilenamePath, mMapValues.mMapName + ".bin");
+ return new File(Navit.sMapFilenamePath, mMapValues.mMapName + ".bin");
}
private File getMapInfoFile() {
- return new File(mMapFilenamePath, mMapValues.mMapName + ".tmp.info");
+ return new File(Navit.sMapFilenamePath, mMapValues.mMapName + ".tmp.info");
}
private BufferedOutputStream getOutputStream(File outputFile, boolean resume) {
@@ -888,21 +879,18 @@ public class NavitMapDownloader extends Thread {
mRetryCounter++;
}
+
static class OsmMapValues {
- final String mLon1;
- final String mLat1;
- final String mLon2;
- final String mLat2;
+ String mLon1;
+ String mLat1;
+ String mLon2;
+ String mLat2;
final String mMapName;
- final long mEstSizeBytes;
- final int mLevel;
+ long mEstSizeBytes;
+ int mLevel;
-
- private OsmMapValues(String mapName, String lon1, String lat1, String lon2,
- String lat2,
- long bytesEst, int level) {
- this.mMapName = mapName;
+ private void setMapValues(String lon1, String lat1, String lon2, String lat2, long bytesEst, int level) {
this.mLon1 = lon1;
this.mLat1 = lat1;
this.mLon2 = lon2;
@@ -911,6 +899,29 @@ public class NavitMapDownloader extends Thread {
this.mLevel = level;
}
+ private OsmMapValues(int id1, String lon1, String lat1, String lon2, String lat2,
+ long bytesEst, int level) {
+
+ this.mMapName = getTstring(id1);
+ setMapValues(lon1, lat1, lon2, lat2, bytesEst, level);
+ }
+
+ private OsmMapValues(int id1, int id2, String lon1, String lat1, String lon2, String lat2,
+ long bytesEst, int level) {
+
+ this.mMapName = getTstring(id1) + " + " + getTstring(id2);
+ setMapValues(lon1, lat1, lon2, lat2, bytesEst, level);
+ }
+
+
+ private OsmMapValues(int id1, int id2, int id3, String lon1, String lat1, String lon2, String lat2,
+ long bytesEst, int level) {
+
+ mMapName = getTstring(id1) + " + " + getTstring(id2) + " + " + getTstring(id3);
+ setMapValues(lon1, lat1, lon2, lat2, bytesEst, level);
+ }
+
+
boolean isInMap(Location location) {
if (location.getLongitude() < Double.valueOf(this.mLon1)) {
diff --git a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java b/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
index 2e10e896e..d5fe43afd 100644
--- a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
+++ b/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
@@ -58,18 +58,18 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
ObjectInputStream preferenceOis = null;
try {
/* Delete all old Files in Home */
- NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/bookmark.txt");
- NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/destination.txt");
- NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/gui_internal.txt");
+ NavitUtils.removeFileIfExists(Navit.sMapFilenamePath + "/home/bookmark.txt");
+ NavitUtils.removeFileIfExists(Navit.sMapFilenamePath + "/home/destination.txt");
+ NavitUtils.removeFileIfExists(Navit.sMapFilenamePath + "/home/gui_internal.txt");
/* Restore Files in home */
NavitUtils.copyFileIfExists(backupDir.getPath() + "/bookmark.txt",
- Navit.sNavitDataDir + "/home/bookmark.txt");
+ Navit.sMapFilenamePath + "/home/bookmark.txt");
NavitUtils.copyFileIfExists(backupDir.getPath() + "/destination.txt",
- Navit.sNavitDataDir + "/home/destination.txt");
+ Navit.sMapFilenamePath + "/home/destination.txt");
NavitUtils.copyFileIfExists(backupDir.getPath() + "/gui_internal.txt",
- Navit.sNavitDataDir + "/home/gui_internal.txt");
+ Navit.sMapFilenamePath + "/home/gui_internal.txt");
/* Restore Shared Preferences */
preferenceOis = new ObjectInputStream(
diff --git a/navit/android/src/org/navitproject/navit/NavitUtils.java b/navit/android/src/org/navitproject/navit/NavitUtils.java
index bbdf6539e..e163c5576 100644
--- a/navit/android/src/org/navitproject/navit/NavitUtils.java
+++ b/navit/android/src/org/navitproject/navit/NavitUtils.java
@@ -8,6 +8,12 @@ import java.io.IOException;
class NavitUtils {
+ static long getFreeSpace(String path) {
+
+ File file = new File(path);
+ return file.getUsableSpace();
+ }
+
static void removeFileIfExists(String source) {
File file = new File(source);
diff --git a/navit/android/src/org/navitproject/navit/NavitVehicle.java b/navit/android/src/org/navitproject/navit/NavitVehicle.java
index e8c43e474..e72679c3e 100644
--- a/navit/android/src/org/navitproject/navit/NavitVehicle.java
+++ b/navit/android/src/org/navitproject/navit/NavitVehicle.java
@@ -67,6 +67,7 @@ public class NavitVehicle {
sLocationManager.removeUpdates(sFastLocationListener);
mFastProvider = null;
}
+ sLastLocation = location;
vehicleCallback(mVehiclePcbid, location);
vehicleCallback(mVehicleFcbid, 1);
}