summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Herlant <aerostitch@users.noreply.github.com>2019-09-26 13:02:37 -0700
committerGitHub <noreply@github.com>2019-09-26 13:02:37 -0700
commitb6269f61af806f907e44be5ea6279b455bf18efa (patch)
tree2a7adc9f6c4dd622214424b27e8223a5da89711a
parentf34edb94603b552b4b5cc95897f8fb3a72a70d8a (diff)
parentd18dec5ec22551ea9feeb6aedf5c226a6f998fe6 (diff)
downloadnavit-aerostitch/nitpick.tar.gz
Merge branch 'trunk' into aerostitch/nitpickaerostitch/nitpick
-rwxr-xr-xCMakeLists.txt9
-rw-r--r--build.gradle2
-rw-r--r--checkstyle.xml29
-rw-r--r--config.h.in3
-rw-r--r--navit/android.c591
-rw-r--r--navit/android.h2
-rw-r--r--navit/android/AndroidManifest.xml9
-rw-r--r--navit/android/build.gradle10
-rw-r--r--navit/android/res/values-v19/styles.xml16
-rw-r--r--navit/android/res/values-v21/styles.xml27
-rw-r--r--navit/android/res/values/strings.xml589
-rw-r--r--navit/android/res/values/styles.xml13
-rw-r--r--navit/android/src/org/navitproject/navit/FileBrowserActivity.java233
-rw-r--r--navit/android/src/org/navitproject/navit/Navit.java677
-rw-r--r--navit/android/src/org/navitproject/navit/NavitActivityResult.java2
-rw-r--r--navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java239
-rwxr-xr-xnavit/android/src/org/navitproject/navit/NavitAppConfig.java56
-rw-r--r--navit/android/src/org/navitproject/navit/NavitBackupTask.java25
-rw-r--r--navit/android/src/org/navitproject/navit/NavitCamera.java75
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDialogs.java141
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java146
-rw-r--r--navit/android/src/org/navitproject/navit/NavitGraphics.java1184
-rw-r--r--navit/android/src/org/navitproject/navit/NavitMap.java38
-rw-r--r--navit/android/src/org/navitproject/navit/NavitMapDownloader.java745
-rw-r--r--navit/android/src/org/navitproject/navit/NavitRestoreTask.java55
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSensors.java30
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSpeech2.java30
-rw-r--r--navit/android/src/org/navitproject/navit/NavitTimeout.java79
-rw-r--r--navit/android/src/org/navitproject/navit/NavitTraff.java53
-rw-r--r--navit/android/src/org/navitproject/navit/NavitUtils.java53
-rw-r--r--navit/android/src/org/navitproject/navit/NavitVehicle.java126
-rw-r--r--navit/android/src/org/navitproject/navit/NavitWatch.java89
-rw-r--r--navit/callback.c2
-rw-r--r--navit/coord.c57
-rw-r--r--navit/coord.h11
-rw-r--r--navit/graphics.c9
-rw-r--r--navit/graphics.h2
-rw-r--r--navit/graphics/android/graphics_android.c67
-rw-r--r--navit/gui/internal/gui_internal.c2
-rw-r--r--navit/navit.c3
-rw-r--r--navit/speech/android/speech_android.c2
-rw-r--r--navit/support/glib/fake.h6
-rw-r--r--navit/support/glib/glibconfig.h4
-rw-r--r--navit/support/glib/gslice.c7
-rw-r--r--navit/traffic/traff_android/traffic_traff_android.c6
-rw-r--r--navit/vehicle/android/vehicle_android.c7
-rw-r--r--navit/xslt/android.xslt1
47 files changed, 2715 insertions, 2847 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4890afa04..4d001b99b 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,8 +16,11 @@ endif(NOT DISABLE_CXX)
set(NAVIT_VERSION_MAJOR "0")
set(NAVIT_VERSION_MINOR "5")
set(NAVIT_VERSION_PATCH "3")
-set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}")
-
+if(ANDROID)
+ set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}.${ANDROID_ABI}")
+else(ANDROID)
+ set(PACKAGE_VERSION "${NAVIT_VERSION_MAJOR}.${NAVIT_VERSION_MINOR}.${NAVIT_VERSION_PATCH}")
+endif(ANDROID)
set(PACKAGE_NAME "navit-git")
set(PACKAGE "navit" CACHE STRING "Navit package name")
set(PACKAGE_STRING "${PACKAGE} ${PACKAGE_VERSION}")
@@ -192,6 +195,8 @@ if(PKG_CONFIG_FOUND)
if(IMLIB2_FOUND)
set(HAVE_IMLIB2 1)
endif(IMLIB2_FOUND)
+else(PKG_CONFIG_FOUND)
+ set_with_reason(support/glib "Glib not found" TRUE ${INTL_LIBS})
endif(PKG_CONFIG_FOUND)
#find_package(Iconv)
diff --git a/build.gradle b/build.gradle
index 8fe92d2f1..b9db6a857 100644
--- a/build.gradle
+++ b/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.4.2'
+ classpath 'com.android.tools.build:gradle:3.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/checkstyle.xml b/checkstyle.xml
index 00dfe5b3f..6c232edce 100644
--- a/checkstyle.xml
+++ b/checkstyle.xml
@@ -22,7 +22,7 @@
<module name = "Checker">
<property name="charset" value="UTF-8"/>
- <property name="severity" value="warning"/>
+ <property name="severity" value="error"/>
<property name="fileExtensions" value="java, properties, xml"/>
<!-- Checks for whitespace -->
@@ -48,6 +48,7 @@
<module name="LineLength">
<property name="max" value="120"/>
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
+ <property name="severity" value="error"/>
</module>
<module name="AvoidStarImport"/>
<module name="OneTopLevelClass"/>
@@ -57,10 +58,13 @@
<property name="tokens"
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
</module>
- <module name="NeedBraces"/>
+ <module name="NeedBraces">
+ <property name="severity" value="error"/>
+ </module>
<module name="LeftCurly"/>
<module name="RightCurly">
<property name="id" value="RightCurlySame"/>
+ <property name="severity" value="error"/>
<property name="tokens"
value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE,
LITERAL_DO"/>
@@ -68,6 +72,7 @@
<module name="RightCurly">
<property name="id" value="RightCurlyAlone"/>
<property name="option" value="alone"/>
+ <property name="severity" value="error"/>
<property name="tokens"
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT,
INSTANCE_INIT"/>
@@ -81,6 +86,7 @@
value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
<message key="ws.notPreceded"
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
+ <property name="severity" value="error"/>
</module>
<module name="OneStatementPerLine"/>
<module name="MultipleVariableDeclarations"/>
@@ -90,7 +96,9 @@
<module name="MissingSwitchDefault"/>
<module name="FallThrough"/>
<module name="UpperEll"/>
- <module name="ModifierOrder"/>
+ <module name="ModifierOrder">
+ <property name="severity" value="error"/>
+ </module>
<module name="EmptyLineSeparator">
<property name="allowNoEmptyLineBetweenFields" value="true"/>
</module>
@@ -129,16 +137,25 @@
<module name="TypeName">
<message key="name.invalidPattern"
value="Type name ''{0}'' must match pattern ''{1}''."/>
+ <property name="severity" value="error"/>
</module>
<module name="MemberName">
<property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/>
<message key="name.invalidPattern"
value="Member name ''{0}'' must match pattern ''{1}''."/>
+ <property name="severity" value="error"/>
+ </module>
+ <module name="StaticVariableName">
+ <property name="severity" value="error"/>
+ <property name="format" value="^s[A-Z0-9][a-zA-Z0-9]*$"/>
+ <message key="name.invalidPattern"
+ value="Static field names start with s and are camel-cased. (e.g. sFooBar)"/>
</module>
<module name="ParameterName">
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Parameter name ''{0}'' must match pattern ''{1}''."/>
+ <property name="severity" value="error"/>
</module>
<module name="CatchParameterName">
<property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
@@ -150,6 +167,7 @@
<property name="format" value="^[a-z]([a-zA-Z0-9]*)?$"/>
<message key="name.invalidPattern"
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
+ <property name="severity" value="error"/>
</module>
<module name="ClassTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
@@ -160,6 +178,7 @@
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
<message key="name.invalidPattern"
value="Method type name ''{0}'' must match pattern ''{1}''."/>
+ <property name="severity" value="error"/>
</module>
<module name="InterfaceTypeParameterName">
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
@@ -176,6 +195,7 @@
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
<message key="ws.notPreceded"
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
+ <property name="severity" value="error"/>
</module>
<module name="Indentation">
<property name="basicOffset" value="4"/>
@@ -187,7 +207,7 @@
</module>
<module name="AbbreviationAsWordInName">
<property name="ignoreFinal" value="false"/>
- <property name="allowedAbbreviationLength" value="2"/>
+ <property name="allowedAbbreviationLength" value="3"/>
</module>
<module name="OverloadMethodsDeclarationOrder"/>
<module name="VariableDeclarationUsageDistance"/>
@@ -202,6 +222,7 @@
<property name="tokens"
value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
<property name="allowLineBreaks" value="true"/>
+ <property name="severity" value="error"/>
</module>
<module name="ParenPad"/>
<module name="OperatorWrap">
diff --git a/config.h.in b/config.h.in
index 1bbbf782a..0527321bf 100644
--- a/config.h.in
+++ b/config.h.in
@@ -102,3 +102,6 @@
#cmakedefine HAS_IFADDRS 1
#cmakedefine HAVE_POSTGRESQL 1
+
+#cmakedefine ENABLE_ROLL 1
+
diff --git a/navit/android.c b/navit/android.c
index 4c6d1ff1e..f35cb274a 100644
--- a/navit/android.c
+++ b/navit/android.c
@@ -11,7 +11,6 @@
#include "callback.h"
#include "country.h"
#include "projection.h"
-#include "coord.h"
#include "map.h"
#include "mapset.h"
#include "navit_nls.h"
@@ -24,8 +23,6 @@
JNIEnv *jnienv;
jobject *android_activity = NULL;
-jobject *android_application = NULL;
-int android_version;
struct android_search_priv {
struct jni_object search_result_obj;
@@ -39,6 +36,16 @@ struct android_search_priv {
int found;
};
+
+JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *aVm, void *aReserved) {
+ if ((*aVm)->GetEnv(aVm,(void**)&jnienv, JNI_VERSION_1_6) != JNI_OK) {
+ dbg(lvl_error,"Failed to get the environment");
+ return -1;
+ }
+ dbg(lvl_debug,"Found the environment");
+ return JNI_VERSION_1_6;
+}
+
int android_find_class_global(char *name, jclass *ret) {
*ret=(*jnienv)->FindClass(jnienv, name);
if (! *ret) {
@@ -68,126 +75,119 @@ int android_find_static_method(jclass class, char *name, char *args, jmethodID *
return 1;
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_NavitMain( JNIEnv* env, jobject thiz, jobject activity,
- jobject application, jobject lang, int version, jobject display_density_string, jobject path, jobject map_path,
- jboolean isLaunch) {
+
+/**
+ * @brief Starts the Navitlib for Android
+ *
+ * @param env provided by JVM
+ * @param thiz the calling Navit instance
+ * @param lang a string describing the language
+ * @param path relates to NAVIT_DATA_DIR on linux
+ * @param map_path where the binfiles are stored
+ */
+JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_navitMain( JNIEnv* env, jobject thiz,
+ jstring lang, jstring path, jstring map_path) {
const char *langstr;
- const char *displaydensitystr;
const char *map_file_path;
- android_version=version;
- __android_log_print(ANDROID_LOG_ERROR,"test","called");
jnienv=env;
- if (android_activity)
- (*jnienv)->DeleteGlobalRef(jnienv, android_activity);
- android_activity = (*jnienv)->NewGlobalRef(jnienv, activity);
- if (android_application)
- (*jnienv)->DeleteGlobalRef(jnienv, android_application);
- android_application = (*jnienv)->NewGlobalRef(jnienv, application);
+
+ android_activity = (*jnienv)->NewGlobalRef(jnienv, thiz);
+
langstr=(*env)->GetStringUTFChars(env, lang, NULL);
- dbg(lvl_debug,"enter env=%p thiz=%p activity=%p lang=%s version=%d",env,thiz,android_activity,langstr,version);
+ dbg(lvl_debug,"enter env=%p thiz=%p activity=%p lang=%s",env,thiz,android_activity,langstr);
setenv("LANG",langstr,1);
(*env)->ReleaseStringUTFChars(env, lang, langstr);
- displaydensitystr=(*env)->GetStringUTFChars(env, display_density_string, NULL);
- dbg(lvl_debug,"*****displaydensity=%s",displaydensitystr);
- setenv("ANDROID_DENSITY",displaydensitystr,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, displaydensitystr);
-
map_file_path=(*env)->GetStringUTFChars(env, map_path, NULL);
setenv("NAVIT_USER_DATADIR",map_file_path,1);
- (*env)->ReleaseStringUTFChars(env, display_density_string, map_file_path);
+ (*env)->ReleaseStringUTFChars(env, map_path, map_file_path);
- if (isLaunch) {
- const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
- main_real(1, &strings);
- (*env)->ReleaseStringUTFChars(env, path, strings);
- }
+ const char *strings=(*env)->GetStringUTFChars(env, path, NULL);
+ main_real(1, &strings);
+ (*env)->ReleaseStringUTFChars(env, path, strings);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_NavitDestroy( JNIEnv* env) {
+JNIEXPORT void JNICALL Java_org_navitproject_navit_Navit_navitDestroy( JNIEnv* env, jobject thiz) {
dbg(lvl_debug, "shutdown navit");
exit(0);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_SizeChangedCallback( JNIEnv* env, jobject thiz, int id,
- int w, int h) {
- dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,w,h);
- if (id)
- callback_call_2((struct callback *)id,w,h);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_sizeChangedCallback( JNIEnv* env, jobject thiz,
+ jlong id, jint w, jint h) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)(intptr_t)id,w,h);
+ if (id) {
+ callback_call_2((struct callback *)(intptr_t)id, w, h);
+ }
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_PaddingChangedCallback(JNIEnv* env, jobject thiz,
- int id, int left, int top, int right, int bottom) {
- dbg(lvl_debug,"enter %p %d %d %d %d",(struct callback *)id, left, top, right, bottom);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_paddingChangedCallback(JNIEnv* env, jobject thiz,
+ jlong id, jint left, jint top, jint right, jint bottom) {
+ dbg(lvl_debug,"enter %p %d %d %d %d",(struct callback *)(intptr_t)id, left, top, right, bottom);
if (id)
- callback_call_4((struct callback *)id, left, top, right, bottom);
+ callback_call_4((struct callback *)(intptr_t)id, left, top, right, bottom);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_ButtonCallback( JNIEnv* env, jobject thiz, int id,
- int pressed, int button, int x, int y) {
- dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,pressed,button);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_buttonCallback( JNIEnv* env, jobject thiz,
+ jlong id, jint pressed, jint button, jint x, jint y) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)(intptr_t)id,pressed,button);
if (id)
- callback_call_4((struct callback *)id,pressed,button,x,y);
+ callback_call_4((struct callback *)(intptr_t)id,pressed,button,x,y);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_MotionCallback( JNIEnv* env, jobject thiz, int id,
- int x, int y) {
- dbg(lvl_debug,"enter %p %d %d",(struct callback *)id,x,y);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_motionCallback( JNIEnv* env, jobject thiz,
+ jlong id, jint x, jint y) {
+ dbg(lvl_debug,"enter %p %d %d",(struct callback *)(intptr_t)id,x,y);
if (id)
- callback_call_2((struct callback *)id,x,y);
+ callback_call_2((struct callback *)(intptr_t)id,x,y);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_KeypressCallback( JNIEnv* env, jobject thiz, int id,
- jobject str) {
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitGraphics_keypressCallback( JNIEnv* env, jobject thiz,
+ jlong id, jstring str) {
const char *s;
- dbg(lvl_debug,"enter %p %p",(struct callback *)id,str);
+ dbg(lvl_debug,"enter %p %p",(struct callback *)(intptr_t)id,str);
s=(*env)->GetStringUTFChars(env, str, NULL);
dbg(lvl_debug,"key=%s",s);
if (id)
- callback_call_1((struct callback *)id,s);
+ callback_call_1((struct callback *)(intptr_t)id,s);
(*env)->ReleaseStringUTFChars(env, str, s);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTimeout_TimeoutCallback( JNIEnv* env, jobject thiz, int id) {
- void (*event_handler)(void *) = *(void **)id;
- dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
- event_handler((void*)id);
-}
-
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitVehicle_VehicleCallback( JNIEnv * env, jobject thiz, int id,
- jobject location) {
- callback_call_1((struct callback *)id, (void *)location);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTimeout_timeoutCallback( JNIEnv* env, jobject thiz,
+ jlong id) {
+ dbg(lvl_debug,"enter %p %p %p",thiz,(void *)id, (void *)(intptr_t)id);
+ void (*event_handler)(void *) = *((void **)(intptr_t)id);
+ event_handler((void*)(intptr_t)id);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitIdle_IdleCallback( JNIEnv* env, jobject thiz, int id) {
- dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
- callback_call_0((struct callback *)id);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitVehicle_vehicleCallback( JNIEnv * env, jobject thiz,
+ jlong id, jobject location) {
+ callback_call_1((struct callback *)(intptr_t)id, (void *)location);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, int func, int fd,
- int cond) {
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_poll( JNIEnv* env, jobject thiz, jlong func, jint fd,
+ jint cond) {
void (*pollfunc)(JNIEnv *env, int fd, int cond)=(void *)func;
pollfunc(env, fd, cond);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_WatchCallback( JNIEnv* env, jobject thiz, int id) {
- dbg(lvl_debug,"enter %p %p",thiz, (void *)id);
- callback_call_0((struct callback *)id);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitWatch_watchCallback( JNIEnv* env, jobject thiz, jlong id) {
+ dbg(lvl_debug,"enter %p %p",thiz, (void *)(intptr_t)id);
+ callback_call_0((struct callback *)(intptr_t)id);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitSensors_SensorCallback( JNIEnv* env, jobject thiz, int id,
- int sensor, float x, float y, float z) {
- dbg(lvl_debug,"enter %p %p %f %f %f",thiz, (void *)id,x,y,z);
- callback_call_4((struct callback *)id, sensor, &x, &y, &z);
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitSensors_sensorCallback( JNIEnv* env, jobject thiz,
+ jlong id, jint sensor, jfloat x, jfloat y, jfloat z) {
+ dbg(lvl_debug,"enter %p %p %f %f %f",thiz, (void *)(intptr_t)id,x,y,z);
+ callback_call_4((struct callback *)(intptr_t)id, sensor, &x, &y, &z);
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTraff_onFeedReceived(JNIEnv * env, jobject thiz, int id,
- jstring feed) {
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitTraff_onFeedReceived(JNIEnv * env, jobject thiz,
+ jlong id, jstring feed) {
const char *s;
s = (*env)->GetStringUTFChars(env, feed, NULL);
if (id)
- callback_call_1((struct callback *) id, s);
+ callback_call_1((struct callback *)(intptr_t) id, s);
(*env)->ReleaseStringUTFChars(env, feed, s);
}
@@ -208,8 +208,8 @@ void android_return_search_result(struct jni_object *jni_o, int type, struct pco
(*env)->DeleteLocalRef(jni_o->env, jaddress);
}
-JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackLocalizedString( JNIEnv* env, jobject thiz,
- jobject str) {
+JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitAppConfig_callbackLocalizedString( JNIEnv* env, jclass thiz,
+ jstring str) {
const char *s;
const char *localized_str;
@@ -221,19 +221,146 @@ JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackLoca
// jstring dataStringValue = (jstring) localized_str;
jstring js = (*env)->NewStringUTF(env,localized_str);
-
(*env)->ReleaseStringUTFChars(env, str, s);
-
return js;
}
-JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessageChannel( JNIEnv* env, jobject thiz,
- int channel, jobject str) {
+
+JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_getDefaultCountry( JNIEnv* env, jobject thiz,
+ jint channel, jstring str) {
+ struct attr search_attr, country_name, country_iso2, *country_attr;
+ struct tracking *tracking;
+ struct search_list_result *res;
+ jstring return_string = NULL;
+
+ struct attr attr;
+ dbg(lvl_debug,"enter %d %p",channel,str);
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ country_attr=country_default();
+ tracking=navit_get_tracking(attr.u.navit);
+ if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL)) {
+ country_attr = &search_attr;
+ }
+ if (country_attr) {
+ struct country_search *cs=country_search_new(country_attr, 0);
+ struct item *item=country_search_get_item(cs);
+ if (item && item_attr_get(item, attr_country_name, &country_name)) {
+ struct mapset *ms=navit_get_mapset(attr.u.navit);
+ struct search_list *search_list = search_list_new(ms);
+ search_attr.type=attr_country_all;
+ dbg(lvl_debug,"country %s", country_name.u.str);
+ search_attr.u.str=country_name.u.str;
+ search_list_search(search_list, &search_attr, 0);
+ while((res=search_list_get_result(search_list))) {
+ dbg(lvl_debug,"Get result: %s", res->country->iso2);
+ }
+ if (item_attr_get(item, attr_country_iso2, &country_iso2)) {
+ return_string = (*env)->NewStringUTF(env, country_iso2.u.str);
+ }
+ }
+ country_search_destroy(cs);
+ }
+
+ return return_string;
+}
+
+
+JNIEXPORT jobjectArray JNICALL Java_org_navitproject_navit_NavitGraphics_getAllCountries( JNIEnv* env,
+ jclass thiz) {
+ struct attr search_attr;
+ struct search_list_result *res;
+ GList* countries = NULL;
+ int country_count = 0;
+ jobjectArray all_countries;
+
+ struct attr attr;
+ dbg(lvl_debug,"enter");
+
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ struct mapset *ms=navit_get_mapset(attr.u.navit);
+ struct search_list *search_list = search_list_new(ms);
+ jobjectArray current_country = NULL;
+ search_attr.type=attr_country_all;
+ //dbg(lvl_debug,"country %s", country_name.u.str);
+ search_attr.u.str=g_strdup("");//country_name.u.str;
+ search_list_search(search_list, &search_attr, 1);
+ while((res=search_list_get_result(search_list))) {
+ dbg(lvl_debug,"Get result: %s", res->country->iso2);
+
+ if (strlen(res->country->iso2)==2) {
+ jstring j_iso2 = (*env)->NewStringUTF(env, res->country->iso2);
+ jstring j_name = (*env)->NewStringUTF(env, navit_nls_gettext(res->country->name));
+
+ current_country = (jobjectArray)(*env)->NewObjectArray(env, 2, (*env)->FindClass(env, "java/lang/String"), NULL);
+
+ (*env)->SetObjectArrayElement(env, current_country, 0, j_iso2);
+ (*env)->SetObjectArrayElement(env, current_country, 1, j_name);
+
+ (*env)->DeleteLocalRef(env, j_iso2);
+ (*env)->DeleteLocalRef(env, j_name);
+
+ countries = g_list_prepend(countries, current_country);
+ country_count++;
+ }
+ }
+
+ search_list_destroy(search_list);
+ all_countries = (jobjectArray)(*env)->NewObjectArray(env, country_count, (*env)->GetObjectClass(env,current_country),
+ NULL);
+
+ while(countries) {
+ (*env)->SetObjectArrayElement(env, all_countries, --country_count, countries->data);
+ countries = g_list_delete_link( countries, countries);
+ }
+
+ return all_countries;
+}
+
+
+JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_getCoordForPoint( JNIEnv* env,
+ jobject thiz, jint x, jint y, jboolean absolute_coord) {
+
+ jstring return_string = NULL;
+
+ struct attr attr;
+ config_get_attr(config_get(), attr_navit, &attr, NULL);
+
+ struct transformation *transform=navit_get_trans(attr.u.navit);
+ struct point p;
+ struct coord c;
+ struct pcoord pc;
+
+ p.x = x;
+ p.y = y;
+
+ transform_reverse(transform, &p, &c);
+
+ pc.x = c.x;
+ pc.y = c.y;
+ pc.pro = transform_get_projection(transform);
+
+ char coord_str[32];
+ if (absolute_coord) {
+ pcoord_format_absolute(&pc, coord_str, sizeof(coord_str), ",");
+ } else {
+ pcoord_format_degree_short(&pc, coord_str, sizeof(coord_str), " ");
+ }
+
+ dbg(lvl_error,"Display point x=%d y=%d is \"%s\"",x,y,coord_str);
+ return_string = (*env)->NewStringUTF(env,coord_str);
+
+ return return_string;
+}
+
+JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_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) {
@@ -247,84 +374,82 @@ JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessage
navit_zoom_out_cursor(attr.u.navit, 2);
navit_draw(attr.u.navit);
break;
- case 6: { // add a map to the current mapset, return 1 on success
+ 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];
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s",map_location);
- type.type=attr_type;
- type.u.str="binfile";
+ const char *map_location = (*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug, "*****string=%s", map_location);
+ type.type = attr_type;
+ type.u.str = "binfile";
- data.type=attr_data;
- data.u.str=g_strdup(map_location);
+ data.type = attr_data;
+ data.u.str = g_strdup(map_location);
- name.type=attr_name;
- name.u.str=g_strdup(map_location);
+ name.type = attr_name;
+ name.u.str = g_strdup(map_location);
- attrs[0]=&type;
- attrs[1]=&data;
- attrs[2]=&name;
- attrs[3]=NULL;
+ attrs[0] = &type;
+ attrs[1] = &data;
+ attrs[2] = &name;
+ attrs[3] = NULL;
- struct map * new_map = map_new(NULL, attrs);
+ struct map *new_map = map_new(NULL, attrs);
if (new_map) {
struct attr map_a;
- map_a.type=attr_map;
- map_a.u.map=new_map;
+ map_a.type = attr_map;
+ map_a.u.map = new_map;
ret = mapset_add_attr(ms, &map_a);
navit_draw(attr.u.navit);
}
(*env)->ReleaseStringUTFChars(env, str, map_location);
+ break;
}
- break;
- case 7: { // remove a map to the current mapset, return 1 on success
+ case 7: { // remove a map from the current mapset, return 1 on success
struct mapset *ms = navit_get_mapset(attr.u.navit);
struct attr map_r;
- const char *map_location=(*env)->GetStringUTFChars(env, str, NULL);
- struct map * delete_map = mapset_get_map_by_name(ms, map_location);
+ const char *map_location = (*env)->GetStringUTFChars(env, str, NULL);
+ struct map *delete_map = mapset_get_map_by_name(ms, map_location);
if (delete_map) {
- dbg(lvl_debug,"delete map %s (%p)", map_location, delete_map);
- map_r.type=attr_map;
- map_r.u.map=delete_map;
+ dbg(lvl_debug, "delete map %s (%p)", map_location, delete_map);
+ map_r.type = attr_map;
+ map_r.u.map = delete_map;
ret = mapset_remove_attr(ms, &map_r);
navit_draw(attr.u.navit);
}
(*env)->ReleaseStringUTFChars(env, str, map_location);
+ break;
}
- break;
case 5:
// call a command (like in gui)
- s=(*env)->GetStringUTFChars(env, str, NULL);
- dbg(lvl_debug,"*****string=%s",s);
- command_evaluate(&attr,s);
+ s = (*env)->GetStringUTFChars(env, str, NULL);
+ dbg(lvl_debug, "*****string=%s", s);
+ command_evaluate(&attr, s);
(*env)->ReleaseStringUTFChars(env, str, s);
break;
- case 4: {
- // navigate to display position
+ case 4: { // navigate to display position
char *pstr;
struct point p;
struct coord c;
struct pcoord pc;
+ struct transformation *transform = navit_get_trans(attr.u.navit);
- struct transformation *transform=navit_get_trans(attr.u.navit);
-
- s=(*env)->GetStringUTFChars(env, str, NULL);
+ s = (*env)->GetStringUTFChars(env, str, NULL);
char parse_str[strlen(s) + 1];
strcpy(parse_str, s);
(*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s",parse_str);
+ dbg(lvl_debug, "*****string=%s", parse_str);
// set destination to (pixel-x#pixel-y)
// pixel-x
- pstr = strtok (parse_str,"#");
+ pstr = strtok(parse_str, "#");
p.x = atoi(pstr);
// pixel-y
- pstr = strtok (NULL, "#");
+ pstr = strtok(NULL, "#");
p.y = atoi(pstr);
- dbg(lvl_debug,"11x=%d",p.x);
- dbg(lvl_debug,"11y=%d",p.y);
+ dbg(lvl_debug, "11x=%d", p.x);
+ dbg(lvl_debug, "11y=%d", p.y);
transform_reverse(transform, &p, &c);
@@ -333,22 +458,20 @@ JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessage
pc.pro = transform_get_projection(transform);
char coord_str[32];
- pcoord_format_short(&pc, coord_str, sizeof(coord_str), " ");
-
+ //pcoord_format_short(&pc, coord_str, sizeof(coord_str), " ");
+ pcoord_format_degree_short(&pc, coord_str, sizeof(coord_str), " ");
dbg(lvl_debug,"Setting destination to %s",coord_str);
-
// start navigation asynchronous
navit_set_destination(attr.u.navit, &pc, coord_str, 1);
}
- break;
case 3: {
// navigate to geo position
char *name;
- s=(*env)->GetStringUTFChars(env, str, NULL);
+ s = (*env)->GetStringUTFChars(env, str, NULL);
char parse_str[strlen(s) + 1];
strcpy(parse_str, s);
(*env)->ReleaseStringUTFChars(env, str, s);
- dbg(lvl_debug,"*****string=%s",s);
+ dbg(lvl_debug, "*****string=%s", s);
// set destination to (lat#lon#title)
struct coord_geo g;
@@ -356,31 +479,34 @@ JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessage
char *stopstring;
// lat
- p = strtok (parse_str,"#");
+ p = strtok(parse_str, "#");
g.lat = strtof(p, &stopstring);
// lon
- p = strtok (NULL, "#");
+ p = strtok(NULL, "#");
g.lng = strtof(p, &stopstring);
// description
- name = strtok (NULL, "#");
+ name = strtok(NULL, "#");
- dbg(lvl_debug,"lat=%f",g.lat);
- dbg(lvl_debug,"lng=%f",g.lng);
- dbg(lvl_debug,"str1=%s",name);
+ dbg(lvl_debug, "lat=%f", g.lat);
+ dbg(lvl_debug, "lng=%f", g.lng);
+ dbg(lvl_debug, "str1=%s", name);
struct coord c;
transform_from_geo(projection_mg, &g, &c);
struct pcoord pc;
- pc.x=c.x;
- pc.y=c.y;
- pc.pro=projection_mg;
-
+ pc.x = c.x;
+ pc.y = c.y;
+ pc.pro = projection_mg;
+ char coord_str[32];
+ if (!name || *name == '\0') {
+ pcoord_format_degree_short(&pc, coord_str, sizeof(coord_str), " ");
+ name = coord_str;
+ }
// start navigation asynchronous
navit_set_destination(attr.u.navit, &pc, name, 1);
-
+ break;
}
- break;
default:
dbg(lvl_error, "Unknown command: %d", channel);
}
@@ -388,123 +514,6 @@ JNIEXPORT jint JNICALL Java_org_navitproject_navit_NavitGraphics_CallbackMessage
return ret;
}
-JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_getCoordForPoint( JNIEnv* env, jobject thiz,
- jint id, int x, int y) {
-
- jstring return_string = NULL;
-
- struct attr attr;
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- struct transformation *transform=navit_get_trans(attr.u.navit);
- struct point p;
- struct coord c;
- struct pcoord pc;
-
- p.x = x;
- p.y = y;
-
- transform_reverse(transform, &p, &c);
-
- pc.x = c.x;
- pc.y = c.y;
- pc.pro = transform_get_projection(transform);
-
- char coord_str[32];
- pcoord_format_short(&pc, coord_str, sizeof(coord_str), " ");
-
- dbg(lvl_debug,"Display point x=%d y=%d is \"%s\"",x,y,coord_str);
- return_string = (*env)->NewStringUTF(env,coord_str);
- return return_string;
-}
-
-JNIEXPORT jstring JNICALL Java_org_navitproject_navit_NavitGraphics_GetDefaultCountry( JNIEnv* env, jobject thiz,
- int channel, jobject str) {
- struct attr search_attr, country_name, country_iso2, *country_attr;
- struct tracking *tracking;
- struct search_list_result *res;
- jstring return_string = NULL;
-
- struct attr attr;
- dbg(lvl_debug,"enter %d %p",channel,str);
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- country_attr=country_default();
- tracking=navit_get_tracking(attr.u.navit);
- if (tracking && tracking_get_attr(tracking, attr_country_id, &search_attr, NULL))
- country_attr=&search_attr;
- if (country_attr) {
- struct country_search *cs=country_search_new(country_attr, 0);
- struct item *item=country_search_get_item(cs);
- if (item && item_attr_get(item, attr_country_name, &country_name)) {
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- search_attr.type=attr_country_all;
- dbg(lvl_debug,"country %s", country_name.u.str);
- search_attr.u.str=country_name.u.str;
- search_list_search(search_list, &search_attr, 0);
- while((res=search_list_get_result(search_list))) {
- dbg(lvl_debug,"Get result: %s", res->country->iso2);
- }
- if (item_attr_get(item, attr_country_iso2, &country_iso2))
- return_string = (*env)->NewStringUTF(env,country_iso2.u.str);
- }
- country_search_destroy(cs);
- }
-
- return return_string;
-}
-
-JNIEXPORT jobjectArray JNICALL Java_org_navitproject_navit_NavitGraphics_GetAllCountries( JNIEnv* env, jobject thiz) {
- struct attr search_attr;
- struct search_list_result *res;
- GList* countries = NULL;
- int country_count = 0;
- jobjectArray all_countries;
-
- struct attr attr;
- dbg(lvl_debug,"enter");
-
- config_get_attr(config_get(), attr_navit, &attr, NULL);
-
- struct mapset *ms=navit_get_mapset(attr.u.navit);
- struct search_list *search_list = search_list_new(ms);
- jobjectArray current_country = NULL;
- search_attr.type=attr_country_all;
- //dbg(lvl_debug,"country %s", country_name.u.str);
- search_attr.u.str=g_strdup("");//country_name.u.str;
- search_list_search(search_list, &search_attr, 1);
- while((res=search_list_get_result(search_list))) {
- dbg(lvl_debug,"Get result: %s", res->country->iso2);
-
- if (strlen(res->country->iso2)==2) {
- jstring j_iso2 = (*env)->NewStringUTF(env, res->country->iso2);
- jstring j_name = (*env)->NewStringUTF(env, navit_nls_gettext(res->country->name));
-
- current_country = (jobjectArray)(*env)->NewObjectArray(env, 2, (*env)->FindClass(env, "java/lang/String"), NULL);
-
- (*env)->SetObjectArrayElement(env, current_country, 0, j_iso2);
- (*env)->SetObjectArrayElement(env, current_country, 1, j_name);
-
- (*env)->DeleteLocalRef(env, j_iso2);
- (*env)->DeleteLocalRef(env, j_name);
-
- countries = g_list_prepend(countries, current_country);
- country_count++;
- }
- }
-
- search_list_destroy(search_list);
- all_countries = (jobjectArray)(*env)->NewObjectArray(env, country_count, (*env)->GetObjectClass(env, current_country),
- NULL);
-
- while(countries) {
- (*env)->SetObjectArrayElement(env, all_countries, --country_count, countries->data);
- countries = g_list_delete_link( countries, countries);
- }
- return all_countries;
-}
static char *postal_str(struct search_list_result *res, int level) {
char *ret=NULL;
@@ -558,8 +567,8 @@ static char *town_str(struct search_list_result *res, int level) {
if (!county)
county_sep=county="";
- return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district, district_end, county_sep,
- county);
+ return g_strdup_printf("%s%s%s%s%s%s%s%s", postal, postal_sep, town, district_begin, district,
+ district_end, county_sep, county);
}
static void android_search_end(struct android_search_priv *search_priv) {
@@ -592,41 +601,46 @@ static enum attr_type android_search_level[] = {
attr_house_number
};
+static void android_search_idle_result(struct android_search_priv *search_priv, struct search_list_result *res) {
+// commented out because otherwise cyclomatic complexity needleslly reported as too high
+// dbg(lvl_debug, "Town: %s, Street: %s",res->town ? res->town->common.town_name : "no town",
+// res->street ? res->street->name : "no street");
+ search_priv->found = 1;
+ switch (search_priv->search_attr.type) {
+ case attr_town_or_district_name: {
+ gchar *town = town_str(res, 1);
+ android_return_search_result(&search_priv->search_result_obj, 0, res->town->common.c, town);
+ g_free(town);
+ }
+ break;
+ case attr_street_name: {
+ gchar *town = town_str(res, 2);
+ gchar *address = g_strdup_printf("%.101s,%.101s, %.101s", res->country->name, town, res->street->name);
+ android_return_search_result(&search_priv->search_result_obj, 1, res->street->common.c, address);
+ g_free(address);
+ g_free(town);
+ }
+ break;
+ case attr_house_number: {
+ gchar *town = town_str(res, 3);
+ gchar *address = g_strdup_printf("%.101s, %.101s, %.101s %.15s", res->country->name, town,
+ res->street->name, res->house_number->house_number);
+ android_return_search_result(&search_priv->search_result_obj, 2, res->house_number->common.c, address);
+ g_free(address);
+ g_free(town);
+ }
+ break;
+ default:
+ dbg(lvl_error, "Unhandled search type %d", search_priv->search_attr.type);
+ }
+}
+
static void android_search_idle(struct android_search_priv *search_priv) {
dbg(lvl_debug, "enter android_search_idle");
struct search_list_result *res = search_list_get_result(search_priv->search_list);
if (res) {
- dbg(lvl_debug, "Town: %s, Street: %s",res->town ? res->town->common.town_name : "no town",
- res->street ? res->street->name : "no street");
- search_priv->found = 1;
- switch (search_priv->search_attr.type) {
- case attr_town_or_district_name: {
- gchar *town = town_str(res, 1);
- android_return_search_result(&search_priv->search_result_obj, 0, res->town->common.c, town);
- g_free(town);
- break;
- }
- case attr_street_name: {
- gchar *town = town_str(res, 2);
- gchar *address = g_strdup_printf("%.101s,%.101s, %.101s", res->country->name, town, res->street->name);
- android_return_search_result(&search_priv->search_result_obj, 1, res->street->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- case attr_house_number: {
- gchar *town = town_str(res, 3);
- gchar *address = g_strdup_printf("%.101s, %.101s, %.101s %.15s", res->country->name, town, res->street->name,
- res->house_number->house_number);
- android_return_search_result(&search_priv->search_result_obj, 2, res->house_number->common.c, address);
- g_free(address);
- g_free(town);
- break;
- }
- default:
- dbg(lvl_error, "Unhandled search type %d", search_priv->search_attr.type);
- }
+ android_search_idle_result(search_priv, res);
} else {
int level = search_list_level(search_priv->search_attr.type) - 1;
@@ -672,7 +686,7 @@ static char *search_fix_spaces(const char *str) {
char c,*s,*d,*ret=g_strdup(str);
for (i = 0 ; i < len ; i++) {
- if (ret[i] == ',' || ret[i] == ',' || ret[i] == '/')
+ if (ret[i] == ',' || ret[i] == '/')
ret[i]=' ';
}
s=ret;
@@ -691,6 +705,7 @@ static char *search_fix_spaces(const char *str) {
len--;
}
} while (c);
+
return ret;
}
@@ -713,8 +728,8 @@ static void start_search(struct android_search_priv *search_priv, const char *se
dbg(lvl_debug,"leave");
}
-JNIEXPORT jlong JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackStartAddressSearch( JNIEnv* env,
- jobject thiz, int partial, jobject country, jobject str) {
+JNIEXPORT jlong JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_callbackStartAddressSearch( JNIEnv* env,
+ jobject thiz, jint partial, jstring country, jstring str) {
struct attr attr;
const char *search_string =(*env)->GetStringUTFChars(env, str, NULL);
dbg(lvl_debug,"search '%s'", search_string);
@@ -764,7 +779,7 @@ JNIEXPORT jlong JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_C
return (jlong)(long)search_priv;
}
-JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_CallbackCancelAddressSearch( JNIEnv* env,
+JNIEXPORT void JNICALL Java_org_navitproject_navit_NavitAddressSearchActivity_callbackCancelAddressSearch( JNIEnv* env,
jobject thiz, jlong handle) {
struct android_search_priv *priv = (void*)(long)handle;
diff --git a/navit/android.h b/navit/android.h
index ee8b1b4b5..5751b2b17 100644
--- a/navit/android.h
+++ b/navit/android.h
@@ -1,8 +1,6 @@
#include <jni.h>
extern JNIEnv *jnienv;
extern jobject *android_activity;
-extern jobject *android_application;
-extern int android_version;
int android_find_class_global(char *name, jclass *ret);
int android_find_method(jclass class, char *name, char *args, jmethodID *ret);
int android_find_static_method(jclass class, char *name, char *args, jmethodID *ret);
diff --git a/navit/android/AndroidManifest.xml b/navit/android/AndroidManifest.xml
index 5080ec52b..e8f153fd4 100644
--- a/navit/android/AndroidManifest.xml
+++ b/navit/android/AndroidManifest.xml
@@ -10,14 +10,14 @@
<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:label="@string/app_name"
+ <application android:usesCleartextTraffic="true" android:label="@string/app_name"
android:icon="@drawable/icon"
android:name=".NavitAppConfig"
- android:theme="@style/NavitBaseTheme">
+ android:theme="@style/NavitTheme">
<activity android:name="Navit"
android:label="@string/app_name"
- android:configChanges="locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"
- android:theme="@style/NavitTheme">
+ android:configChanges="screenLayout|smallestScreenSize|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|fontScale|screenSize"
+ android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
@@ -32,7 +32,6 @@
android:configChanges="orientation|screenSize|keyboardHidden">
</activity>
<activity android:name=".NavitDownloadSelectMapActivity"></activity>
- <!-- <activity android:name=".NavitAddressResultListActivity"></activity> -->
<activity
android:name="FileBrowserActivity"
android:label="File browser"
diff --git a/navit/android/build.gradle b/navit/android/build.gradle
index faf5acc03..6934afdfa 100644
--- a/navit/android/build.gradle
+++ b/navit/android/build.gradle
@@ -4,7 +4,7 @@ apply plugin: 'checkstyle'
android {
compileSdkVersion 28
- buildToolsVersion "29.0.1"
+ buildToolsVersion "29.0.2"
defaultConfig {
applicationId "org.navitproject.navit"
minSdkVersion 9
@@ -12,8 +12,8 @@ android {
versionCode gitVersionCode
versionName gitVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
- ndk { // need for now for 'x86_64' and 'armeabi'
- abiFilters 'x86', 'armeabi-v7a', 'arm64-v8a'
+ ndk {
+ abiFilters 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a'
}
externalNativeBuild {
cmake {
@@ -57,7 +57,6 @@ android {
classpath = files()
reports {
include ('**/*.java')
- exclude ('**/FileBrowserActivity.java')
xml.enabled = true
html.enabled = true
xml {
@@ -75,7 +74,6 @@ android {
applicationVariants.all { variant ->
// create tasks to generate Javadocs
task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
- source = variant.javaCompile.source
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("build/outputs/docs/javadoc/")
title = rootProject.name
@@ -92,5 +90,5 @@ dependencies {
})
testImplementation 'junit:junit:4.12'
implementation 'ch.acra:acra:4.9.2'
-// implementation 'com.android.support:support-v4:27.1.1'
+// implementation 'com.android.support:support-v4:28.0.0'
}
diff --git a/navit/android/res/values-v19/styles.xml b/navit/android/res/values-v19/styles.xml
index 69acd3a4e..7e3277f09 100644
--- a/navit/android/res/values-v19/styles.xml
+++ b/navit/android/res/values-v19/styles.xml
@@ -1,22 +1,8 @@
<resources>
-
- <!--
- Base application theme for API 19+. This theme completely replaces
- NavitBaseTheme from BOTH res/values/styles.xml and
- res/values-v19/styles.xml on API 19+ devices.
- -->
- <style name="NavitBaseTheme" parent="android:Theme.Holo"/>
-
- <!--
- Main Activity theme for API 19+. This theme completely replaces
- NavitTheme from BOTH res/values/styles.xml and
- res/values-v19/styles.xml on API 19+ devices.
- -->
- <style name="NavitTheme" parent="NavitBaseTheme">
+ <style name="NavitTheme" parent="android:Theme.DeviceDefault.NoActionBar">
<!-- API 19 theme customizations can go here. -->
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
-
</resources> \ No newline at end of file
diff --git a/navit/android/res/values-v21/styles.xml b/navit/android/res/values-v21/styles.xml
index 3edbb901a..85cf81d9b 100644
--- a/navit/android/res/values-v21/styles.xml
+++ b/navit/android/res/values-v21/styles.xml
@@ -1,30 +1,7 @@
<resources>
-
- <!--
- Base application theme for API 21+. This theme completely replaces
- NavitBaseTheme from BOTH res/values/styles.xml and
- res/values-v.../styles.xml on API 21+ devices.
- -->
- <style name="NavitBaseTheme" parent="android:Theme.Material">
-
- <!-- Main theme colors -->
- <!-- your app branding color for the app bar -->
- <item name="android:colorPrimary">@color/navitYellow500</item>
- <!-- darker variant for the status bar and contextual app bars -->
- <item name="android:colorPrimaryDark">@color/navitYellow700</item>
- <!-- theme UI controls like checkboxes and text fields -->
- <item name="android:colorAccent">@color/navitBlue500</item>
- </style>
-
- <!--
- Main Activity theme for API 21+. This theme completely replaces
- NavitTheme from BOTH res/values/styles.xml and
- res/values-v21/styles.xml on API 21+ devices.
- -->
- <style name="NavitTheme" parent="NavitBaseTheme">
+ <style name="NavitTheme" parent="android:Theme.DeviceDefault.NoActionBar">
<!-- API 21 theme customizations can go here. -->
-
<!--
Don't use translucent system bars on API 21 as they are drawn with a semitransparent
black background which can't be changed.
@@ -39,8 +16,6 @@
-->
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
-
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
-
</resources> \ No newline at end of file
diff --git a/navit/android/res/values/strings.xml b/navit/android/res/values/strings.xml
index f321991e7..44ed1483b 100644
--- a/navit/android/res/values/strings.xml
+++ b/navit/android/res/values/strings.xml
@@ -1,311 +1,312 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <!-- LANG=en -->
- <!-- GENERIC -->
- <string name="yes">Yes</string>
- <string name="no">No</string>
- <string name="cancel">Cancel</string>
+ <!-- LANG=en -->
+ <!-- GENERIC -->
+ <string name="yes">Yes</string>
+ <string name="no">No</string>
+ <string name="cancel">Cancel</string>
- <!-- NOTIFICATION -->
- <string name="channel_name">Navit</string>
- <string name="notification_ticker">Navit started</string>
- <string name="notification_event_default">Navit running</string>
+ <!-- NOTIFICATION -->
+ <string name="channel_name">Navit</string>
+ <string name="notification_ticker">Navit started</string>
+ <string name="notification_event_default">Navit running</string>
- <!-- INITIAL INFOBOX -->
- <string name="initial_info_box_title">Welcome to Navit</string>
- <string name="initial_info_box_message">Thank you for installing Navit!\n\nTo start, select \"Download maps\" from the menu to download a map. Note: The map filesize may be large (>50MB) - a wifi connection is recommended.\n\nMapdata: (c) OpenStreetMap contributors\n\nEnjoy Navit!</string>
- <string name="initial_info_box_OK">OK</string>
- <string name="initial_info_box_more_info">More info</string>
+ <!-- INITIAL INFOBOX -->
+ <string name="initial_info_box_title">Welcome to Navit</string>
+ <string name="initial_info_box_message">Thank you for installing Navit!\n\nTo start, select \"Download maps\" from the menu to download a map. Note: The map filesize may be large (>50MB) - a wifi connection is recommended.\n\nMapdata: (c) OpenStreetMap contributors\n\nEnjoy Navit!</string>
+ <string name="initial_info_box_OK">OK</string>
+ <string name="initial_info_box_more_info">More info</string>
- <!-- OPTIONS MENU -->
- <string name="optionsmenu_zoom_in">Zoom in</string>
- <string name="optionsmenu_zoom_out">Zoom out</string>
- <string name="optionsmenu_download_maps">Download maps</string>
- <string name="optionsmenu_toggle_poi">Toggle POIs</string>
- <string name="optionsmenu_exit_navit">Exit Navit</string>
- <string name="optionsmenu_backup_restore">Backup / Restore</string>
- <string name="optionsmenu_set_map_location">Set map location</string>
+ <!-- OPTIONS MENU -->
+ <string name="optionsmenu_zoom_in">Zoom in</string>
+ <string name="optionsmenu_zoom_out">Zoom out</string>
+ <string name="optionsmenu_download_maps">Download maps</string>
+ <string name="optionsmenu_toggle_poi">Toggle POIs</string>
+ <string name="optionsmenu_exit_navit">Exit Navit</string>
+ <string name="optionsmenu_backup_restore">Backup / Restore</string>
+ <string name="optionsmenu_set_map_location">Set map location</string>
- <!-- POSITION POP-UP -->
- <string name="position_popup_title">Position</string>
- <string name="position_popup_drive_here">Route to here</string>
+ <!-- POSITION POP-UP -->
+ <string name="position_popup_title">Position</string>
+ <string name="position_popup_drive_here">Route to here</string>
+ <string name="position_popup_view">View</string>
- <!-- MAP DOWNLOAD -->
- <string name="map_delete">Delete this map?</string>
- <string name="map_download_title">Map download</string>
- <string name="map_download_downloading">Downloading:</string>
- <string name="map_download_eta">ETA</string>
- <string name="map_download_ready">ready</string>
- <string name="map_download_download_error">Error downloading map.</string>
- <string name="map_download_download_aborted">Map download aborted</string>
- <string name="map_download_not_enough_free_space">Not enough free space</string>
- <string name="map_download_oversize">Sorry, we currently do not support maps above 3.8G on Android, please select a smaller one.</string>
- <string name="map_no_fix">No location. Reopen after location fix.</string>
- <string name="maps_for_current_location">Maps containing current location</string>
- <string name="maps_installed">Installed maps</string>
- <string name="map_downloading">downloading</string>
- <string name="map_download_medium_unavailable">Media selected for map storage is not available</string>
- <string name="map_download_error_writing_map">Error writing map!</string>
+ <!-- MAP DOWNLOAD -->
+ <string name="map_delete">Delete this map?</string>
+ <string name="map_download_title">Map download</string>
+ <string name="map_download_downloading">Downloading:</string>
+ <string name="map_download_eta">ETA</string>
+ <string name="map_download_ready">ready</string>
+ <string name="map_download_download_error">Error downloading map.</string>
+ <string name="map_download_download_aborted">Map download aborted</string>
+ <string name="map_download_not_enough_free_space">Not enough free space</string>
+ <string name="map_download_oversize">Sorry, we currently do not support maps above 3.8G on Android, please select a smaller one.</string>
+ <string name="map_no_fix">No location. Reopen after location fix.</string>
+ <string name="maps_for_current_location">Maps containing current location</string>
+ <string name="maps_installed">Installed maps</string>
+ <string name="map_downloading">downloading</string>
+ <string name="map_download_medium_unavailable">Media selected for map storage is not available</string>
+ <string name="map_download_error_writing_map">Error writing map!</string>
- <!-- STORAGE -->
- <string name="map_location_changed">New location set to %s Restart Navit to apply the changes.</string>
- <string name="map_location_unavailable">Current map location %s is not available Please restart Navit after you attach an SD card or select a different map location.</string>
+ <!-- STORAGE -->
+ <string name="map_location_changed">New location set to %s Restart Navit to apply the changes.</string>
+ <string name="map_location_unavailable">Current map location %s is not available Please restart Navit after you attach an SD card or select a different map location.</string>
- <!-- ADDRESS SEARCH -->
- <string name="address_search_title">Address search</string>
- <string name="address_enter_destination">Enter destination</string>
- <string name="address_partial_match">Match partial address</string>
- <string name="address_search_button">Search</string>
- <string name="address_search_searching">Searching...</string>
- <string name="address_search_not_found">Address not found</string>
- <string name="address_search_getting_results">Getting search results</string>
- <string name="address_search_loading_results">Loading search results</string>
- <string name="address_search_no_results">No results found</string>
- <string name="address_search_no_text_entered">No text entered</string>
- <string name="address_search_set_destination">Setting destination to:</string>
- <string name="address_search_towns">Towns</string>
- <string name="address_search_streets">Streets</string>
+ <!-- ADDRESS SEARCH -->
+ <string name="address_search_title">Address search</string>
+ <string name="address_enter_destination">Enter destination</string>
+ <string name="address_partial_match">Match partial address</string>
+ <string name="address_search_button">Search</string>
+ <string name="address_search_searching">Searching...</string>
+ <string name="address_search_not_found">Address not found</string>
+ <string name="address_search_getting_results">Getting search results</string>
+ <string name="address_search_loading_results">Loading search results</string>
+ <string name="address_search_no_results">No results found</string>
+ <string name="address_search_no_text_entered">No text entered</string>
+ <string name="address_search_set_destination">Setting destination to:</string>
+ <string name="address_search_towns">Towns</string>
+ <string name="address_search_streets">Streets</string>
- <!-- Backup Restore -->
- <string name="choose_an_action">Choose an action</string>
- <string name="please_insert_an_sd_card">Please insert an SD Card</string>
- <string name="backing_up">Backing up...</string>
- <string name="restoring">Restoring...</string>
- <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
- <string name="backup_failed">Backup failed</string>
- <string name="no_backup_found">No backup found</string>
- <string name="failed_to_restore">Failed to restore</string>
- <string name="backup_successful">Backup successful</string>
- <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
- <string name="backup_not_found">Backup not found</string>
- <string name="restore_failed">Restore failed</string>
- <string name="select_backup">Select backup</string>
- <string name="backup">Backup</string>
- <string name="restore">Restore</string>
+ <!-- Backup Restore -->
+ <string name="choose_an_action">Choose an action</string>
+ <string name="please_insert_an_sd_card">Please insert an SD Card</string>
+ <string name="backing_up">Backing up...</string>
+ <string name="restoring">Restoring...</string>
+ <string name="failed_to_create_backup_directory">Failed to create backup directory</string>
+ <string name="backup_failed">Backup failed</string>
+ <string name="no_backup_found">No backup found</string>
+ <string name="failed_to_restore">Failed to restore</string>
+ <string name="backup_successful">Backup successful</string>
+ <string name="restore_successful_please_restart_navit">Restore Successful\nPlease restart Navit</string>
+ <string name="backup_not_found">Backup not found</string>
+ <string name="restore_failed">Restore failed</string>
+ <string name="select_backup">Select backup</string>
+ <string name="backup">Backup</string>
+ <string name="restore">Restore</string>
- <!-- TTS -->
- <string name="TTS_title_data_missing">System text to speech engine data is missing</string>
- <string name="TTS_qery_install_data">Navit can use any text to speech engine installed on your device. The currently selected engine reports it is unable to speak in your language. Should we ask the system to show voice download dialog?</string>
+ <!-- TTS -->
+ <string name="TTS_title_data_missing">System text to speech engine data is missing</string>
+ <string name="TTS_qery_install_data">Navit can use any text to speech engine installed on your device. The currently selected engine reports it is unable to speak in your language. Should we ask the system to show voice download dialog?</string>
- <!-- Permissions dialog-->
- <string name="permissions_not_granted">Navit needs permission to access GPS and read the map.\nIf you change your mind please restart Navit and grant the permissions</string>
- <string name="permissions_info_box_title">One or more ungranted permissions</string>
+ <!-- Permissions dialog-->
+ <string name="permissions_not_granted">Navit needs permission to access GPS and read the map.\nIf you change your mind please restart Navit and grant the permissions</string>
+ <string name="permissions_info_box_title">One or more ungranted permissions</string>
- <!-- countries, continents, regions -->
- <string name="whole_planet">Whole Planet</string>
- <string name="africa">Africa</string>
- <string name="angola">Angola</string>
- <string name="burundi">Burundi</string>
- <string name="canary_islands">Canary Islands</string>
- <string name="congo">Congo, Democratic Republic of the</string>
- <string name="ethiopia">Ethiopia</string>
- <string name="guinea">Guinea</string>
- <string name="cotedivoire">Cote d\'Ivoire</string>
- <string name="kenya">Kenya</string>
- <string name="lesotho">Lesotho</string>
- <string name="liberia">Liberia</string>
- <string name="libya">Libya</string>
- <string name="madagascar">Madagascar</string>
- <string name="namibia">Namibia</string>
- <string name="botswana">Botswana</string>
- <string name="reunion">Reunion</string>
- <string name="rwanda">Rwanda</string>
- <string name="south_africa">South Africa</string>
- <string name="tanzania">Tanzania, United Republic of</string>
- <string name="uganda">Uganda</string>
- <string name="asia">Asia</string>
- <string name="azerbaijan">Azerbaijan</string>
- <string name="china">China</string>
- <string name="cyprus">Cyprus</string>
- <string name="india">India</string>
- <string name="nepal">Nepal</string>
- <string name="indonesia">Indonesia</string>
- <string name="iran">Iran, Islamic Republic of</string>
- <string name="iraq">Iraq</string>
- <string name="israel">Israel</string>
- <string name="japan">Japan</string>
- <string name="kazakhstan">Kazakhstan</string>
- <string name="kyrgyzsyan">Kyrgyzstan</string>
- <string name="malaysia">Malaysia</string>
- <string name="mongolia">Mongolia</string>
- <string name="pakistan">Pakistan</string>
- <string name="philippines">Philippines</string>
- <string name="saudi_arabia">Saudi Arabia</string>
- <string name="taiwan">Taiwan</string>
- <string name="korea">Korea</string>
- <string name="singapore">Singapore</string>
- <string name="thailand">Thailand</string>
- <string name="turkey">Turkey</string>
- <string name="turkmenistan">Turkmenistan</string>
- <string name="uae_other">UAE+Other</string>
- <string name="australia">Australia</string>
- <string name="oceania">Oceania</string>
- <string name="tasmania">Tasmania</string>
- <string name="victoria">Victoria</string>
- <string name="new_south_wales">New South Wales</string>
- <string name="new_caledonia">New Caledonia</string>
- <string name="newzealand">New Zealand</string>
- <string name="europe">Europe</string>
- <string name="western_europe">Western Europe</string>
- <string name="austria">Austria</string>
- <string name="azores">Azores</string>
- <string name="belgium">Belgium</string>
- <string name="benelux">BeNeLux</string>
- <string name="netherlands">Netherlands</string>
- <string name="denmark">Denmark</string>
- <string name="faroe_islands">Faroe Islands</string>
- <string name="france">France</string>
- <string name="alsace">Alsace</string>
- <string name="aquitaine">Aquitaine</string>
- <string name="auvergne">Auvergne</string>
- <string name="centre">Centre</string>
- <string name="bretagne">Bretagne</string>
- <string name="bourgogne">Bourgogne</string>
- <string name="basse_normandie">Basse-Normandie</string>
- <string name="champagne_ardenne">Champagne-Ardenne</string>
- <string name="corse">Corse</string>
- <string name="franche_comte">Franche-Comte</string>
- <string name="haute_normandie">Haute-Normandie</string>
- <string name="ile_de_france">Ile-de-France</string>
- <string name="languedoc_roussillon">Languedoc-Roussillon</string>
- <string name="limousin">Limousin</string>
- <string name="lorraine">Lorraine</string>
- <string name="midi_pyrenees">Midi-Pyrenees</string>
- <string name="nord_pas_de_calais">Nord-pas-de-Calais</string>
- <string name="pays_de_la_loire">Pays-de-la-Loire</string>
- <string name="picardie">Picardie</string>
- <string name="poitou_charentes">Poitou-Charentes</string>
- <string name="provence_alpes_cote_d_azur">Provence-Alpes-Cote-d-Azur</string>
- <string name="rhone_alpes">Rhone-Alpes</string>
- <string name="luxembourg">Luxembourg</string>
- <string name="germany">Germany</string>
- <string name="baden_wuerttemberg">Baden-Wuerttemberg</string>
- <string name="bayern">Bayern</string>
- <string name="mittelfranken">Mittelfranken</string>
- <string name="niederbayern">Niederbayern</string>
- <string name="oberbayern">Oberbayern</string>
- <string name="oberfranken">Oberfranken</string>
- <string name="oberpfalz">Oberpfalz</string>
- <string name="schwaben">Schwaben</string>
- <string name="unterfranken">Unterfranken</string>
- <string name="berlin">Berlin</string>
- <string name="brandenburg">Brandenburg</string>
- <string name="bremen">Bremen</string>
- <string name="hamburg">Hamburg</string>
- <string name="hessen">Hessen</string>
- <string name="mecklenburg_vorpommern">Mecklenburg-Vorpommern</string>
- <string name="niedersachsen">Niedersachsen</string>
- <string name="nordrhein_westfalen">Nordrhein-westfalen</string>
- <string name="rheinland_pfalz">Rheinland-Pfalz</string>
- <string name="saarland">Saarland</string>
- <string name="sachsen_anhalt">Sachsen-Anhalt</string>
- <string name="sachsen">Sachsen</string>
- <string name="schleswig_holstein">Schleswig-Holstein</string>
- <string name="thueringen">Thueringen</string>
- <string name="iceland">Iceland</string>
- <string name="ireland">Ireland</string>
- <string name="italy">Italy</string>
- <string name="portugal">Portugal</string>
- <string name="spain">Spain</string>
- <string name="mallorca">Mallorca</string>
- <string name="galicia">Galicia</string>
- <string name="scandinavia">Scandinavia</string>
- <string name="finland">Finland</string>
- <string name="switzerland">Switzerland</string>
- <string name="united_kingdom">United Kingdom</string>
- <string name="england">England</string>
- <string name="buckinghamshire">Buckinghamshire</string>
- <string name="cambridgeshire">Cambridgeshire</string>
- <string name="cumbria">Cumbria</string>
- <string name="east_yorkshire_with_hull">East yorkshire with hull</string>
- <string name="essex">Essex</string>
- <string name="herefordshire">Herefordshire</string>
- <string name="kent">Kent</string>
- <string name="lancashire">Lancashire</string>
- <string name="leicestershire">Leicestershire</string>
- <string name="norfolk">Norfolk</string>
- <string name="nottinghamshire">Nottinghamshire</string>
- <string name="oxfordshire">Oxfordshire</string>
- <string name="shropshire">Shropshire</string>
- <string name="somerset">Somerset</string>
- <string name="south_yorkshire">South yorkshire</string>
- <string name="suffolk">Suffolk</string>
- <string name="surrey">Surrey</string>
- <string name="wiltshire">Wiltshire</string>
- <string name="scotland">Scotland</string>
- <string name="wales">Wales</string>
- <string name="albania">Albania</string>
- <string name="belarus">Belarus</string>
- <string name="russian_federation">Russian Federation</string>
- <string name="bulgaria">Bulgaria</string>
- <string name="bosnia_and_herzegovina">Bosnia and Herzegovina</string>
- <string name="czech_republic">Czech Republic</string>
- <string name="croatia">Croatia</string>
- <string name="estonia">Estonia</string>
- <string name="greece">Greece</string>
- <string name="crete">Crete</string>
- <string name="hungary">Hungary</string>
- <string name="latvia">Latvia</string>
- <string name="lithuania">Lithuania</string>
- <string name="poland">Poland</string>
- <string name="romania">Romania</string>
- <string name="slovakia">Slovakia</string>
- <string name="ukraine">Ukraine</string>
- <string name="north_america">North America</string>
- <string name="alaska">Alaska</string>
- <string name="canada">Canada</string>
- <string name="hawaii">Hawaii</string>
- <string name="usa">USA</string>
- <string name="except_alaska_and_hawaii">(except Alaska and Hawaii)</string>
- <string name="midwest">Midwest</string>
- <string name="michigan">Michigan</string>
- <string name="ohio">Ohio</string>
- <string name="northeast">Northeast</string>
- <string name="massachusetts">Massachusetts</string>
- <string name="vermont">Vermont</string>
- <string name="pacific">Pacific</string>
- <string name="south">South</string>
- <string name="arkansas">Arkansas</string>
- <string name="district_of_columbia">District of Columbia</string>
- <string name="florida">Florida</string>
- <string name="louisiana">Louisiana</string>
- <string name="maryland">Maryland</string>
- <string name="mississippi">Mississippi</string>
- <string name="oklahoma">Oklahoma</string>
- <string name="texas">Texas</string>
- <string name="virginia">Virginia</string>
- <string name="west_virginia">West Virginia</string>
- <string name="west">West</string>
- <string name="arizona">Arizona</string>
- <string name="california">California</string>
- <string name="colorado">Colorado</string>
- <string name="idaho">Idaho</string>
- <string name="montana">Montana</string>
- <string name="new_mexico">New Mexico</string>
- <string name="nevada">Nevada</string>
- <string name="oregon">Oregon</string>
- <string name="utah">Utah</string>
- <string name="washington_state">Washington State</string>
- <string name="south_middle_america">South+Middle America</string>
- <string name="argentina">Argentina</string>
- <string name="chile">Chile</string>
- <string name="bolivia">Bolivia</string>
- <string name="brazil">Brazil</string>
- <string name="cuba">Cuba</string>
- <string name="colombia">Colombia</string>
- <string name="ecuador">Ecuador</string>
- <string name="guyana">Guyana</string>
- <string name="suriname">Suriname</string>
- <string name="guyane_francaise">Guyane Francaise</string>
- <string name="haiti">Haiti</string>
- <string name="dominican_republic">Dominican Republic</string>
- <string name="jamaica">Jamaica</string>
- <string name="mexico">Mexico</string>
- <string name="paraguay">Paraguay</string>
- <string name="peru">Peru</string>
- <string name="uruguay">Uruguay</string>
- <string name="venezuela">Venezuela</string>
+ <!-- countries, continents, regions -->
+ <string name="whole_planet">Whole Planet</string>
+ <string name="africa">Africa</string>
+ <string name="angola">Angola</string>
+ <string name="burundi">Burundi</string>
+ <string name="canary_islands">Canary Islands</string>
+ <string name="congo">Congo, Democratic Republic of the</string>
+ <string name="ethiopia">Ethiopia</string>
+ <string name="guinea">Guinea</string>
+ <string name="cotedivoire">Cote d\'Ivoire</string>
+ <string name="kenya">Kenya</string>
+ <string name="lesotho">Lesotho</string>
+ <string name="liberia">Liberia</string>
+ <string name="libya">Libya</string>
+ <string name="madagascar">Madagascar</string>
+ <string name="namibia">Namibia</string>
+ <string name="botswana">Botswana</string>
+ <string name="reunion">Reunion</string>
+ <string name="rwanda">Rwanda</string>
+ <string name="south_africa">South Africa</string>
+ <string name="tanzania">Tanzania, United Republic of</string>
+ <string name="uganda">Uganda</string>
+ <string name="asia">Asia</string>
+ <string name="azerbaijan">Azerbaijan</string>
+ <string name="china">China</string>
+ <string name="cyprus">Cyprus</string>
+ <string name="india">India</string>
+ <string name="nepal">Nepal</string>
+ <string name="indonesia">Indonesia</string>
+ <string name="iran">Iran, Islamic Republic of</string>
+ <string name="iraq">Iraq</string>
+ <string name="israel">Israel</string>
+ <string name="japan">Japan</string>
+ <string name="kazakhstan">Kazakhstan</string>
+ <string name="kyrgyzsyan">Kyrgyzstan</string>
+ <string name="malaysia">Malaysia</string>
+ <string name="mongolia">Mongolia</string>
+ <string name="pakistan">Pakistan</string>
+ <string name="philippines">Philippines</string>
+ <string name="saudi_arabia">Saudi Arabia</string>
+ <string name="taiwan">Taiwan</string>
+ <string name="korea">Korea</string>
+ <string name="singapore">Singapore</string>
+ <string name="thailand">Thailand</string>
+ <string name="turkey">Turkey</string>
+ <string name="turkmenistan">Turkmenistan</string>
+ <string name="uae_other">UAE+Other</string>
+ <string name="australia">Australia</string>
+ <string name="oceania">Oceania</string>
+ <string name="tasmania">Tasmania</string>
+ <string name="victoria">Victoria</string>
+ <string name="new_south_wales">New South Wales</string>
+ <string name="new_caledonia">New Caledonia</string>
+ <string name="newzealand">New Zealand</string>
+ <string name="europe">Europe</string>
+ <string name="western_europe">Western Europe</string>
+ <string name="austria">Austria</string>
+ <string name="azores">Azores</string>
+ <string name="belgium">Belgium</string>
+ <string name="benelux">BeNeLux</string>
+ <string name="netherlands">Netherlands</string>
+ <string name="denmark">Denmark</string>
+ <string name="faroe_islands">Faroe Islands</string>
+ <string name="france">France</string>
+ <string name="alsace">Alsace</string>
+ <string name="aquitaine">Aquitaine</string>
+ <string name="auvergne">Auvergne</string>
+ <string name="centre">Centre</string>
+ <string name="bretagne">Bretagne</string>
+ <string name="bourgogne">Bourgogne</string>
+ <string name="basse_normandie">Basse-Normandie</string>
+ <string name="champagne_ardenne">Champagne-Ardenne</string>
+ <string name="corse">Corse</string>
+ <string name="franche_comte">Franche-Comte</string>
+ <string name="haute_normandie">Haute-Normandie</string>
+ <string name="ile_de_france">Ile-de-France</string>
+ <string name="languedoc_roussillon">Languedoc-Roussillon</string>
+ <string name="limousin">Limousin</string>
+ <string name="lorraine">Lorraine</string>
+ <string name="midi_pyrenees">Midi-Pyrenees</string>
+ <string name="nord_pas_de_calais">Nord-pas-de-Calais</string>
+ <string name="pays_de_la_loire">Pays-de-la-Loire</string>
+ <string name="picardie">Picardie</string>
+ <string name="poitou_charentes">Poitou-Charentes</string>
+ <string name="provence_alpes_cote_d_azur">Provence-Alpes-Cote-d-Azur</string>
+ <string name="rhone_alpes">Rhone-Alpes</string>
+ <string name="luxembourg">Luxembourg</string>
+ <string name="germany">Germany</string>
+ <string name="baden_wuerttemberg">Baden-Wuerttemberg</string>
+ <string name="bayern">Bayern</string>
+ <string name="mittelfranken">Mittelfranken</string>
+ <string name="niederbayern">Niederbayern</string>
+ <string name="oberbayern">Oberbayern</string>
+ <string name="oberfranken">Oberfranken</string>
+ <string name="oberpfalz">Oberpfalz</string>
+ <string name="schwaben">Schwaben</string>
+ <string name="unterfranken">Unterfranken</string>
+ <string name="berlin">Berlin</string>
+ <string name="brandenburg">Brandenburg</string>
+ <string name="bremen">Bremen</string>
+ <string name="hamburg">Hamburg</string>
+ <string name="hessen">Hessen</string>
+ <string name="mecklenburg_vorpommern">Mecklenburg-Vorpommern</string>
+ <string name="niedersachsen">Niedersachsen</string>
+ <string name="nordrhein_westfalen">Nordrhein-westfalen</string>
+ <string name="rheinland_pfalz">Rheinland-Pfalz</string>
+ <string name="saarland">Saarland</string>
+ <string name="sachsen_anhalt">Sachsen-Anhalt</string>
+ <string name="sachsen">Sachsen</string>
+ <string name="schleswig_holstein">Schleswig-Holstein</string>
+ <string name="thueringen">Thueringen</string>
+ <string name="iceland">Iceland</string>
+ <string name="ireland">Ireland</string>
+ <string name="italy">Italy</string>
+ <string name="portugal">Portugal</string>
+ <string name="spain">Spain</string>
+ <string name="mallorca">Mallorca</string>
+ <string name="galicia">Galicia</string>
+ <string name="scandinavia">Scandinavia</string>
+ <string name="finland">Finland</string>
+ <string name="switzerland">Switzerland</string>
+ <string name="united_kingdom">United Kingdom</string>
+ <string name="england">England</string>
+ <string name="buckinghamshire">Buckinghamshire</string>
+ <string name="cambridgeshire">Cambridgeshire</string>
+ <string name="cumbria">Cumbria</string>
+ <string name="east_yorkshire_with_hull">East yorkshire with hull</string>
+ <string name="essex">Essex</string>
+ <string name="herefordshire">Herefordshire</string>
+ <string name="kent">Kent</string>
+ <string name="lancashire">Lancashire</string>
+ <string name="leicestershire">Leicestershire</string>
+ <string name="norfolk">Norfolk</string>
+ <string name="nottinghamshire">Nottinghamshire</string>
+ <string name="oxfordshire">Oxfordshire</string>
+ <string name="shropshire">Shropshire</string>
+ <string name="somerset">Somerset</string>
+ <string name="south_yorkshire">South yorkshire</string>
+ <string name="suffolk">Suffolk</string>
+ <string name="surrey">Surrey</string>
+ <string name="wiltshire">Wiltshire</string>
+ <string name="scotland">Scotland</string>
+ <string name="wales">Wales</string>
+ <string name="albania">Albania</string>
+ <string name="belarus">Belarus</string>
+ <string name="russian_federation">Russian Federation</string>
+ <string name="bulgaria">Bulgaria</string>
+ <string name="bosnia_and_herzegovina">Bosnia and Herzegovina</string>
+ <string name="czech_republic">Czech Republic</string>
+ <string name="croatia">Croatia</string>
+ <string name="estonia">Estonia</string>
+ <string name="greece">Greece</string>
+ <string name="crete">Crete</string>
+ <string name="hungary">Hungary</string>
+ <string name="latvia">Latvia</string>
+ <string name="lithuania">Lithuania</string>
+ <string name="poland">Poland</string>
+ <string name="romania">Romania</string>
+ <string name="slovakia">Slovakia</string>
+ <string name="ukraine">Ukraine</string>
+ <string name="north_america">North America</string>
+ <string name="alaska">Alaska</string>
+ <string name="canada">Canada</string>
+ <string name="hawaii">Hawaii</string>
+ <string name="usa">USA</string>
+ <string name="except_alaska_and_hawaii">(except Alaska and Hawaii)</string>
+ <string name="midwest">Midwest</string>
+ <string name="michigan">Michigan</string>
+ <string name="ohio">Ohio</string>
+ <string name="northeast">Northeast</string>
+ <string name="massachusetts">Massachusetts</string>
+ <string name="vermont">Vermont</string>
+ <string name="pacific">Pacific</string>
+ <string name="south">South</string>
+ <string name="arkansas">Arkansas</string>
+ <string name="district_of_columbia">District of Columbia</string>
+ <string name="florida">Florida</string>
+ <string name="louisiana">Louisiana</string>
+ <string name="maryland">Maryland</string>
+ <string name="mississippi">Mississippi</string>
+ <string name="oklahoma">Oklahoma</string>
+ <string name="texas">Texas</string>
+ <string name="virginia">Virginia</string>
+ <string name="west_virginia">West Virginia</string>
+ <string name="west">West</string>
+ <string name="arizona">Arizona</string>
+ <string name="california">California</string>
+ <string name="colorado">Colorado</string>
+ <string name="idaho">Idaho</string>
+ <string name="montana">Montana</string>
+ <string name="new_mexico">New Mexico</string>
+ <string name="nevada">Nevada</string>
+ <string name="oregon">Oregon</string>
+ <string name="utah">Utah</string>
+ <string name="washington_state">Washington State</string>
+ <string name="south_middle_america">South+Middle America</string>
+ <string name="argentina">Argentina</string>
+ <string name="chile">Chile</string>
+ <string name="bolivia">Bolivia</string>
+ <string name="brazil">Brazil</string>
+ <string name="cuba">Cuba</string>
+ <string name="colombia">Colombia</string>
+ <string name="ecuador">Ecuador</string>
+ <string name="guyana">Guyana</string>
+ <string name="suriname">Suriname</string>
+ <string name="guyane_francaise">Guyane Francaise</string>
+ <string name="haiti">Haiti</string>
+ <string name="dominican_republic">Dominican Republic</string>
+ <string name="jamaica">Jamaica</string>
+ <string name="mexico">Mexico</string>
+ <string name="paraguay">Paraguay</string>
+ <string name="peru">Peru</string>
+ <string name="uruguay">Uruguay</string>
+ <string name="venezuela">Venezuela</string>
</resources>
diff --git a/navit/android/res/values/styles.xml b/navit/android/res/values/styles.xml
deleted file mode 100644
index 78dadf1ce..000000000
--- a/navit/android/res/values/styles.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<resources>
- <!-- Yellow from Navit icon background (300 and 700 are the extremes of the gradient, 500 is the average, 900 is the line color) -->
- <color name="navitYellow300">#e9cb14</color>
- <color name="navitYellow500">#d5a411</color>
- <!-- <color name="navitYellow600">#d19b13</color> -->
- <color name="navitYellow700">#c17d11</color>
- <color name="navitYellow900">#43350f</color>
-
- <!-- Blue from arrow in Navit icon (500 is the midpoint of the gradient, 300 is the end, 900 is the line color) -->
- <color name="navitBlue300">#329eff</color>
- <color name="navitBlue500">#1a6cb6</color>
- <color name="navitBlue900">#1f3157</color>
-</resources> \ No newline at end of file
diff --git a/navit/android/src/org/navitproject/navit/FileBrowserActivity.java b/navit/android/src/org/navitproject/navit/FileBrowserActivity.java
index dc7462b76..2d7242264 100644
--- a/navit/android/src/org/navitproject/navit/FileBrowserActivity.java
+++ b/navit/android/src/org/navitproject/navit/FileBrowserActivity.java
@@ -1,30 +1,34 @@
package org.navitproject.navit;
-//Heavily based on code from
-//https://github.com/mburman/Android-File-Explore
+// Heavily based on code from
+// https://github.com/mburman/Android-File-Explore
// Version of Aug 13, 2011
-//Also contributed:
-// Sugan Krishnan (https://github.com/rgksugan) - Jan 2013.
+// Also contributed:
+// Sugan Krishnan (https://github.com/rgksugan) - Jan 2013.
//
-//Project type now is Android library:
-// http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject
+// Project type now is Android library:
+// http://developer.android.com/guide/developing/projects/projects-eclipse.html#ReferencingLibraryProject
-//Android imports
import android.app.Activity;
import android.content.Intent;
import android.content.res.Configuration;
-import android.graphics.Color;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.util.Log;
-import android.view.*;
+import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
-import android.widget.*;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.Toast;
-//General Java imports
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
@@ -32,44 +36,42 @@ import java.util.Collections;
import java.util.Comparator;
import java.util.List;
-//Import of resources file for file browser
-import org.navitproject.navit.R;
public class FileBrowserActivity extends Activity {
// Intent Action Constants
public static final String INTENT_ACTION_SELECT_DIR = "ua.com.vassiliev.androidfilebrowser.SELECT_DIRECTORY_ACTION";
- public static final String INTENT_ACTION_SELECT_FILE = "ua.com.vassiliev.androidfilebrowser.SELECT_FILE_ACTION";
+ private static final String INTENT_ACTION_SELECT_FILE = "ua.com.vassiliev.androidfilebrowser.SELECT_FILE_ACTION";
// Intent parameters names constants
public static final String startDirectoryParameter = "ua.com.vassiliev.androidfilebrowser.directoryPath";
public static final String returnDirectoryParameter = "ua.com.vassiliev.androidfilebrowser.directoryPathRet";
- public static final String returnFileParameter = "ua.com.vassiliev.androidfilebrowser.filePathRet";
- public static final String showCannotReadParameter = "ua.com.vassiliev.androidfilebrowser.showCannotRead";
- public static final String filterExtension = "ua.com.vassiliev.androidfilebrowser.filterExtension";
+ private static final String returnFileParameter = "ua.com.vassiliev.androidfilebrowser.filePathRet";
+ private static final String showCannotReadParameter = "ua.com.vassiliev.androidfilebrowser.showCannotRead";
+ private static final String filterExtension = "ua.com.vassiliev.androidfilebrowser.filterExtension";
// Stores names of traversed directories
- ArrayList<String> pathDirsList = new ArrayList<String>();
+ private final ArrayList<String> mPathDirsList = new ArrayList<>();
// Check if the first level of the directory structure is the one showing
// private Boolean firstLvl = true;
- private static final String LOGTAG = "F_PATH";
+ private static final String TAG = "F_PATH";
- private List<Item> fileList = new ArrayList<Item>();
- private File path = null;
- private String chosenFile;
+ private final List<Item> mFileList = new ArrayList<>();
+ private File mPath = null;
+ private String mChosenFile;
// private static final int DIALOG_LOAD_FILE = 1000;
- ArrayAdapter<Item> adapter;
+ private ArrayAdapter<Item> mAdapter;
- private boolean showHiddenFilesAndDirs = true;
+ private boolean mShowHiddenFilesAndDirs = true;
- private boolean directoryShownIsEmpty = false;
+ private boolean mDirectoryShownIsEmpty = false;
- private String filterFileExtension = null;
+ private String mFilterFileExtension = null;
// Action constants
- private static int currentAction = -1;
+ private static int sCurrentAction = -1;
private static final int SELECT_DIRECTORY = 1;
private static final int SELECT_FILE = 2;
@@ -85,17 +87,17 @@ public class FileBrowserActivity extends Activity {
// Set action for this activity
Intent thisInt = this.getIntent();
- currentAction = SELECT_DIRECTORY;// This would be a default action in
+ sCurrentAction = SELECT_DIRECTORY;// This would be a default action in
// case not set by intent
if (thisInt.getAction().equalsIgnoreCase(INTENT_ACTION_SELECT_FILE)) {
- Log.d(LOGTAG, "SELECT ACTION - SELECT FILE");
- currentAction = SELECT_FILE;
+ Log.d(TAG, "SELECT ACTION - SELECT FILE");
+ sCurrentAction = SELECT_FILE;
}
- showHiddenFilesAndDirs = thisInt.getBooleanExtra(
+ mShowHiddenFilesAndDirs = thisInt.getBooleanExtra(
showCannotReadParameter, true);
- filterFileExtension = thisInt.getStringExtra(filterExtension);
+ mFilterFileExtension = thisInt.getStringExtra(filterExtension);
setInitialDirectory();
@@ -105,7 +107,7 @@ public class FileBrowserActivity extends Activity {
this.initializeButtons();
this.initializeFileListView();
updateCurrentDirectoryTextView();
- Log.d(LOGTAG, path.getAbsolutePath());
+ Log.d(TAG, mPath.getAbsolutePath());
}
private void setInitialDirectory() {
@@ -116,85 +118,83 @@ public class FileBrowserActivity extends Activity {
if (requestedStartDir != null && requestedStartDir.length() > 0) { // if(requestedStartDir!=null
File tempFile = new File(requestedStartDir);
if (tempFile.isDirectory()) {
- this.path = tempFile;
+ this.mPath = tempFile;
}
} // if(requestedStartDir!=null
- if (this.path == null) { // No or invalid directory supplied in intent parameter
+ if (this.mPath == null) { // No or invalid directory supplied in intent parameter
if (Environment.getExternalStorageDirectory().isDirectory()
&& Environment.getExternalStorageDirectory().canRead()) {
- path = Environment.getExternalStorageDirectory();
+ mPath = Environment.getExternalStorageDirectory();
} else {
- path = new File("/");
+ mPath = new File("/");
}
} // if(this.path==null) {//No or invalid directory supplied in intent parameter
} // private void setInitialDirectory() {
private void parseDirectoryPath() {
- pathDirsList.clear();
- String pathString = path.getAbsolutePath();
+ mPathDirsList.clear();
+ String pathString = mPath.getAbsolutePath();
String[] parts = pathString.split("/");
int i = 0;
while (i < parts.length) {
- pathDirsList.add(parts[i]);
+ mPathDirsList.add(parts[i]);
i++;
}
}
private void initializeButtons() {
- Button upDirButton = (Button) this.findViewById(R.id.upDirectoryButton);
+ Button upDirButton = this.findViewById(R.id.upDirectoryButton);
upDirButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
- Log.d(LOGTAG, "onclick for upDirButton");
+ Log.d(TAG, "onclick for upDirButton");
loadDirectoryUp();
loadFileList();
- adapter.notifyDataSetChanged();
+ mAdapter.notifyDataSetChanged();
updateCurrentDirectoryTextView();
}
});// upDirButton.setOnClickListener(
- Button selectFolderButton = (Button) this
+ Button selectFolderButton = this
.findViewById(R.id.selectCurrentDirectoryButton);
- if (currentAction == SELECT_DIRECTORY) {
+ if (sCurrentAction == SELECT_DIRECTORY) {
selectFolderButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
- Log.d(LOGTAG, "onclick for selectFolderButton");
+ Log.d(TAG, "onclick for selectFolderButton");
returnDirectoryFinishActivity();
}
});
- } else { // if(currentAction == this.SELECT_DIRECTORY) {
+ } else { // if(sCurrentAction == this.SELECT_DIRECTORY) {
selectFolderButton.setVisibility(View.GONE);
- } // } else {//if(currentAction == this.SELECT_DIRECTORY) {
+ } // } else {//if(sCurrentAction == this.SELECT_DIRECTORY) {
} // private void initializeButtons() {
private void loadDirectoryUp() {
// present directory removed from list
- String s = pathDirsList.remove(pathDirsList.size() - 1);
+ String s = mPathDirsList.remove(mPathDirsList.size() - 1);
// path modified to exclude present directory
- path = new File(path.toString().substring(0,
- path.toString().lastIndexOf(s)));
- fileList.clear();
+ mPath = new File(mPath.toString().substring(0,
+ mPath.toString().lastIndexOf(s)));
+ mFileList.clear();
}
private void updateCurrentDirectoryTextView() {
int i = 0;
String curDirString = "";
- while (i < pathDirsList.size()) {
- curDirString += pathDirsList.get(i) + "/";
+ while (i < mPathDirsList.size()) {
+ curDirString += mPathDirsList.get(i) + "/";
i++;
}
- if (pathDirsList.size() == 0) {
- ((Button) this.findViewById(R.id.upDirectoryButton))
- .setEnabled(false);
+ if (mPathDirsList.size() == 0) {
+ this.findViewById(R.id.upDirectoryButton).setEnabled(false);
curDirString = "/";
} else {
- ((Button) this.findViewById(R.id.upDirectoryButton))
- .setEnabled(true);
+ this.findViewById(R.id.upDirectoryButton).setEnabled(true);
}
long freeSpace = getFreeSpace(curDirString);
String formattedSpaceString = formatBytes(freeSpace);
if (freeSpace == 0) {
- Log.d(LOGTAG, "NO FREE SPACE");
+ Log.d(TAG, "NO FREE SPACE");
File currentDir = new File(curDirString);
if (!currentDir.canWrite()) {
formattedSpaceString = "NON Writable";
@@ -213,35 +213,35 @@ public class FileBrowserActivity extends Activity {
}
private void initializeFileListView() {
- ListView lView = (ListView) this.findViewById(R.id.fileListView);
+ ListView lView = this.findViewById(R.id.fileListView);
LinearLayout.LayoutParams lParam = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
lParam.setMargins(15, 5, 15, 5);
- lView.setAdapter(this.adapter);
+ lView.setAdapter(this.mAdapter);
lView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
- chosenFile = fileList.get(position).file;
- File sel = new File(path + "/" + chosenFile);
- Log.d(LOGTAG, "Clicked:" + chosenFile);
+ mChosenFile = mFileList.get(position).mFile;
+ File sel = new File(mPath + "/" + mChosenFile);
+ Log.d(TAG, "Clicked:" + mChosenFile);
if (sel.isDirectory()) {
if (sel.canRead()) {
// Adds chosen directory to list
- pathDirsList.add(chosenFile);
- path = new File(sel + "");
- Log.d(LOGTAG, "Just reloading the list");
+ mPathDirsList.add(mChosenFile);
+ mPath = new File(sel + "");
+ Log.d(TAG, "Just reloading the list");
loadFileList();
- adapter.notifyDataSetChanged();
+ mAdapter.notifyDataSetChanged();
updateCurrentDirectoryTextView();
- Log.d(LOGTAG, path.getAbsolutePath());
+ Log.d(TAG, mPath.getAbsolutePath());
} else { // if(sel.canRead()) {
showToast("Path does not exist or cannot be read");
} // } else {//if(sel.canRead()) {
} else { // if (sel.isDirectory()) {
// File picked or an empty directory message clicked
- Log.d(LOGTAG, "item clicked");
- if (!directoryShownIsEmpty) {
- Log.d(LOGTAG, "File selected:" + chosenFile);
+ Log.d(TAG, "item clicked");
+ if (!mDirectoryShownIsEmpty) {
+ Log.d(TAG, "File selected:" + mChosenFile);
returnFileFinishActivity(sel.getAbsolutePath());
}
} // else {//if (sel.isDirectory()) {
@@ -251,7 +251,7 @@ public class FileBrowserActivity extends Activity {
private void returnDirectoryFinishActivity() {
Intent retIntent = new Intent();
- retIntent.putExtra(returnDirectoryParameter, path.getAbsolutePath());
+ retIntent.putExtra(returnDirectoryParameter, mPath.getAbsolutePath());
this.setResult(RESULT_OK, retIntent);
this.finish();
} // END private void returnDirectoryFinishActivity() {
@@ -265,28 +265,28 @@ public class FileBrowserActivity extends Activity {
private void loadFileList() {
try {
- path.mkdirs();
+ mPath.mkdirs();
} catch (SecurityException e) {
- Log.e(LOGTAG, "unable to write on the sd card ");
+ Log.i(TAG, "unable to write on the sd card ");
}
- fileList.clear();
+ mFileList.clear();
- if (path.exists() && path.canRead()) {
+ if (mPath.exists() && mPath.canRead()) {
FilenameFilter filter = new FilenameFilter() {
public boolean accept(File dir, String filename) {
File sel = new File(dir, filename);
- boolean showReadableFile = showHiddenFilesAndDirs
+ boolean showReadableFile = mShowHiddenFilesAndDirs
|| sel.canRead();
// Filters based on whether the file is hidden or not
- if (currentAction == SELECT_DIRECTORY) {
+ if (sCurrentAction == SELECT_DIRECTORY) {
return (sel.isDirectory() && showReadableFile);
}
- if (currentAction == SELECT_FILE) {
+ if (sCurrentAction == SELECT_FILE) {
// If it is a file check the extension if provided
- if (sel.isFile() && filterFileExtension != null) {
+ if (sel.isFile() && mFilterFileExtension != null) {
return (showReadableFile && sel.getName().endsWith(
- filterFileExtension));
+ mFilterFileExtension));
}
return (showReadableFile);
}
@@ -294,12 +294,12 @@ public class FileBrowserActivity extends Activity {
} // public boolean accept(File dir, String filename) {
}; // FilenameFilter filter = new FilenameFilter() {
- String[] fList = path.list(filter);
- this.directoryShownIsEmpty = false;
+ String[] fList = mPath.list(filter);
+ this.mDirectoryShownIsEmpty = false;
for (int i = 0; i < fList.length; i++) {
// Convert into file path
- File sel = new File(path, fList[i]);
- Log.d(LOGTAG, "File:" + fList[i] + " readable:" + (Boolean.valueOf(sel.canRead())).toString());
+ File sel = new File(mPath, fList[i]);
+ Log.d(TAG, "File:" + fList[i] + " readable:" + (Boolean.valueOf(sel.canRead())).toString());
int drawableID = R.drawable.file_icon;
boolean canRead = sel.canRead();
// Set drawables
@@ -310,36 +310,36 @@ public class FileBrowserActivity extends Activity {
drawableID = R.drawable.folder_icon_light;
}
}
- fileList.add(i, new Item(fList[i], drawableID, canRead));
+ mFileList.add(i, new Item(fList[i], drawableID, canRead));
} // for (int i = 0; i < fList.length; i++) {
- if (fileList.size() == 0) {
+ if (mFileList.size() == 0) {
// Log.d(LOGTAG, "This directory is empty");
- this.directoryShownIsEmpty = true;
- fileList.add(0, new Item("Directory is empty", -1, true));
+ this.mDirectoryShownIsEmpty = true;
+ mFileList.add(0, new Item("Directory is empty", -1, true));
} else { // sort non empty list
- Collections.sort(fileList, new ItemFileNameComparator());
+ Collections.sort(mFileList, new ItemFileNameComparator());
}
} else {
- Log.e(LOGTAG, "path does not exist or cannot be read");
+ Log.e(TAG, "path does not exist or cannot be read");
}
// Log.d(TAG, "loadFileList finished");
} // private void loadFileList() {
private void createFileListAdapter() {
- adapter = new ArrayAdapter<Item>(this,
+ mAdapter = new ArrayAdapter<Item>(this,
android.R.layout.select_dialog_item, android.R.id.text1,
- fileList) {
+ mFileList) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// creates view
View view = super.getView(position, convertView, parent);
- TextView textView = (TextView) view
+ TextView textView = view
.findViewById(android.R.id.text1);
// put the image on the text view
int drawableID = 0;
- if (fileList.get(position).icon != -1) {
+ if (mFileList.get(position).mIcon != -1) {
// If icon == -1, then directory is empty
- drawableID = fileList.get(position).icon;
+ drawableID = mFileList.get(position).mIcon;
}
textView.setCompoundDrawablesWithIntrinsicBounds(drawableID, 0,
0, 0);
@@ -360,33 +360,34 @@ public class FileBrowserActivity extends Activity {
} // private createFileListAdapter(){
private class Item {
- public String file;
- public int icon;
- public boolean canRead;
+ String mFile;
+ int mIcon;
+ public boolean mCanRead;
- public Item(String file, Integer icon, boolean canRead) {
- this.file = file;
- this.icon = icon;
+ Item(String file, Integer icon, boolean canRead) {
+ this.mFile = file;
+ this.mIcon = icon;
}
@Override
public String toString() {
- return file;
+ return mFile;
}
} // END private class Item {
private class ItemFileNameComparator implements Comparator<Item> {
public int compare(Item lhs, Item rhs) {
- return lhs.file.toLowerCase().compareTo(rhs.file.toLowerCase());
+ return lhs.mFile.toLowerCase().compareTo(rhs.mFile.toLowerCase());
}
}
+ @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
- Log.d(LOGTAG, "ORIENTATION_LANDSCAPE");
+ Log.d(TAG, "ORIENTATION_LANDSCAPE");
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
- Log.d(LOGTAG, "ORIENTATION_PORTRAIT");
+ Log.d(TAG, "ORIENTATION_PORTRAIT");
}
// Layout apparently changes itself, only have to provide good onMeasure
// in custom components
@@ -394,34 +395,32 @@ public class FileBrowserActivity extends Activity {
// if(newConfig.keyboard == Configuration.KEYBOARDHIDDEN_YES)
} // END public void onConfigurationChanged(Configuration newConfig) {
- public static long getFreeSpace(String path) {
+ private static long getFreeSpace(String path) {
StatFs stat = new StatFs(path);
- long availSize = (long) stat.getAvailableBlocks()
- * (long) stat.getBlockSize();
- return availSize;
+ return (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();
} // END public static long getFreeSpace(String path) {
- public static String formatBytes(long bytes) {
+ private static String formatBytes(long bytes) {
// TODO: add flag to which part is needed (e.g. GB, MB, KB or bytes)
String retStr = "";
// One binary gigabyte equals 1,073,741,824 bytes.
if (bytes > 1073741824) { // Add GB
long gbs = bytes / 1073741824;
- retStr += (new Long(gbs)).toString() + "GB ";
+ retStr += (Long.valueOf(gbs)).toString() + "GB ";
bytes = bytes - (gbs * 1073741824);
}
// One MB - 1048576 bytes
if (bytes > 1048576) { // Add GB
long mbs = bytes / 1048576;
- retStr += (new Long(mbs)).toString() + "MB ";
+ retStr += (Long.valueOf(mbs)).toString() + "MB ";
bytes = bytes - (mbs * 1048576);
}
if (bytes > 1024) {
long kbs = bytes / 1024;
- retStr += (new Long(kbs)).toString() + "KB";
+ retStr += (Long.valueOf(kbs)).toString() + "KB";
bytes = bytes - (kbs * 1024);
} else {
- retStr += (new Long(bytes)).toString() + " bytes";
+ retStr += (Long.valueOf(bytes)).toString() + " bytes";
}
return retStr;
} // public static String formatBytes(long bytes){
diff --git a/navit/android/src/org/navitproject/navit/Navit.java b/navit/android/src/org/navitproject/navit/Navit.java
index a2c1a4ff1..78ddff901 100644
--- a/navit/android/src/org/navitproject/navit/Navit.java
+++ b/navit/android/src/org/navitproject/navit/Navit.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2008 Navit Team
*
@@ -19,11 +19,11 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.Manifest;
-import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Application;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationChannel;
@@ -38,8 +38,6 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.AssetManager;
import android.content.res.Configuration;
-import android.content.res.Resources;
-import android.graphics.Point;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Build;
@@ -47,6 +45,7 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.os.PowerManager;
+import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
@@ -60,8 +59,8 @@ import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
+
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -71,130 +70,47 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+
+
public class Navit extends Activity {
- protected static NavitGraphics graphics = null;
- private NavitDialogs dialogs;
- private PowerManager.WakeLock wl;
- private NavitActivityResult[] ActivityResults;
- public static InputMethodManager mgr = null;
- public static DisplayMetrics metrics = null;
- public static Boolean show_soft_keyboard = false;
- public static Boolean show_soft_keyboard_now_showing = false;
- public static long last_pressed_menu_key = 0L;
- public static long time_pressed_menu_key = 0L;
- private static Intent startup_intent = null;
- private static long startup_intent_timestamp = 0L;
- private static String my_display_density = "mdpi";
+
+ public static DisplayMetrics sMetrics;
+ public static boolean sShowSoftKeyboardShowing;
+ private static Intent sStartupIntent;
+ private static long sStartupIntentTimestamp;
+ private static final int MY_PERMISSIONS_REQ_FINE_LOC = 103;
private static final int NavitDownloaderSelectMap_id = 967;
private static final int NavitAddressSearch_id = 70;
private static final int NavitSelectStorage_id = 43;
- private static String NavitLanguage;
- private static Resources NavitResources = null;
- private static final String CHANNEL_ID = "org.navitproject.navit";
private static final String NAVIT_PACKAGE_NAME = "org.navitproject.navit";
private static final String TAG = "Navit";
- static String map_filename_path = null;
- static final String NAVIT_DATA_DIR = "/data/data/" + NAVIT_PACKAGE_NAME;
- private static final String NAVIT_DATA_SHARE_DIR = NAVIT_DATA_DIR + "/share";
- public static final String NAVIT_PREFS = "NavitPrefs";
- Boolean isFullscreen = false;
- private static final int MY_PERMISSIONS_REQUEST_ALL = 101;
- private static NotificationManager nm;
- private static Navit navit = null;
-
- public static Navit getInstance() {
- return navit;
- }
+ static String sMapFilenamePath;
+ static String sNavitDataDir;
+ boolean mIsFullscreen;
+ private NavitDialogs mDialogs;
+ private PowerManager.WakeLock mWakeLock;
+ private NavitActivityResult[] mActivityResults;
- /**
- * @brief A Runnable to restore soft input when the user returns to the activity.
- *
- * An instance of this class can be passed to the main message queue in the Activity's
- * {@code onRestore()} method.
- */
- private class SoftInputRestorer implements Runnable {
- public void run() {
- Navit.this.showNativeKeyboard();
- }
- }
private void createNotificationChannel() {
/*
* Create the NotificationChannel, but only on API 26+ because
* the NotificationChannel class is new and not in the support library
+ * uses NAVIT_PACKAGE_NAME as id
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CharSequence name = getString(R.string.channel_name);
- //String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
- NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
- //channel.setDescription(description);
- /*
- * Register the channel with the system; you can't change the importance
- * or other notification behaviors after this
- */
+ NotificationChannel channel = new NotificationChannel(NAVIT_PACKAGE_NAME, name, importance);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
notificationManager.createNotificationChannel(channel);
}
}
- public void removeFileIfExists(String source) {
- File file = new File(source);
-
- if (!file.exists()) {
- return;
- }
-
- file.delete();
- }
-
- public void copyFileIfExists(String source, String destination) throws IOException {
- File file = new File(source);
-
- if (!file.exists()) {
- return;
- }
-
- FileInputStream is = null;
- FileOutputStream os = null;
-
- try {
- is = new FileInputStream(source);
- os = new FileOutputStream(destination);
-
- int len;
- byte[] buffer = new byte[1024];
-
- while ((len = is.read(buffer)) != -1) {
- os.write(buffer, 0, len);
- }
- } finally {
- /* Close the FileStreams to prevent Resource leaks */
- if (is != null) {
- is.close();
- }
-
- if (os != null) {
- os.close();
- }
- }
- }
-
/**
- * Translates a string from its id
- * in R.strings
- *
- * @param Rid resource identifier
- * @return translated string
- */
- String getTstring(int Rid) {
- return getLocalizedString(getString(Rid));
- }
-
- /**
- * Check if a specific file needs to be extracted from the apk archive
+ * Check if a specific file needs to be extracted from the apk archive.
* This is based on whether the file already exist, and if so, whether it is older than the archive or not
*
* @param filename The full path to the file
@@ -222,23 +138,20 @@ public class Navit extends Activity {
Log.e(TAG, "Could not read package infos");
e.printStackTrace();
}
- if (apkUpdateTime > resultfile.lastModified()) {
- return true;
- }
+ return apkUpdateTime > resultfile.lastModified();
}
- return false;
}
/**
- * Extract a ressource from the apk archive (res/raw) and save it to a local file
+ * Extract a resource from the apk archive (res/raw) and save it to a local file.
*
* @param result The full path to the local file
- * @param resname The name of the ressource file in the archive
+ * @param resname The name of the resource file in the archive
* @return true if the local file is extracted in @p result
*/
private boolean extractRes(String resname, String result) {
Log.d(TAG, "Res Name " + resname + ", result " + result);
- int id = NavitResources.getIdentifier(resname, "raw", NAVIT_PACKAGE_NAME);
+ int id = NavitAppConfig.sResources.getIdentifier(resname, "raw", NAVIT_PACKAGE_NAME);
Log.d(TAG, "Res ID " + id);
if (id == 0) {
return false;
@@ -248,7 +161,7 @@ public class Navit extends Activity {
Log.d(TAG, "Extracting resource");
try {
- InputStream resourcestream = NavitResources.openRawResource(id);
+ InputStream resourcestream = NavitAppConfig.sResources.openRawResource(id);
FileOutputStream resultfilestream = new FileOutputStream(new File(result));
byte[] buf = new byte[1024];
int i;
@@ -265,14 +178,14 @@ public class Navit extends Activity {
}
/**
- * Extract an asset from the apk archive (assets) and save it to a local file
+ * Extract an asset from the apk archive (assets) and save it to a local file.
*
- * @param output The full path to the output local file
- * @param assetFileName The full path of the asset file within the archive
+ * @param output The full path to the local file
+ * @param assetFileName The full path of the asset file in the archive
* @return true if the local file is extracted in @p output
*/
private boolean extractAsset(String assetFileName, String output) {
- AssetManager assetMgr = NavitResources.getAssets();
+ AssetManager assetMgr = NavitAppConfig.sResources.getAssets();
InputStream assetstream;
Log.d(TAG, "Asset Name " + assetFileName + ", output " + output);
try {
@@ -288,7 +201,7 @@ public class Navit extends Activity {
try {
FileOutputStream outputFilestream = new FileOutputStream(new File(output));
byte[] buf = new byte[1024];
- int i = 0;
+ int i;
while ((i = assetstream.read(buf)) != -1) {
outputFilestream.write(buf, 0, i);
}
@@ -298,12 +211,11 @@ public class Navit extends Activity {
return false;
}
}
-
return true;
}
private void showInfos() {
- SharedPreferences settings = getSharedPreferences(NAVIT_PREFS, MODE_PRIVATE);
+ SharedPreferences settings = getSharedPreferences(NavitAppConfig.NAVIT_PREFS, MODE_PRIVATE);
boolean firstStart = settings.getBoolean("firstStart", true);
if (firstStart) {
@@ -330,167 +242,173 @@ public class Navit extends Activity {
}
});
infobox.show();
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putBoolean("firstStart", false);
- edit_settings.apply();
+ SharedPreferences.Editor preferenceEditor = settings.edit();
+ preferenceEditor.putBoolean("firstStart", false);
+ preferenceEditor.apply();
+ }
+ }
+
+ private void verifyPermissions() {
+ if (ContextCompat.checkSelfPermission(this,
+ Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ Log.d(TAG,"ask for permission(s)");
+ ActivityCompat.requestPermissions(this, new String[] {
+ Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSIONS_REQ_FINE_LOC);
}
}
- /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
- /* Whether this is the first launch of Navit (as opposed to the activity being recreated) */
- boolean isLaunch = (navit == null);
super.onCreate(savedInstanceState);
- if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
- this.requestWindowFeature(Window.FEATURE_NO_TITLE);
- } else {
- this.getActionBar().hide();
- }
-
- navit = this;
- dialogs = new NavitDialogs(this);
- NavitResources = getResources();
+ windowSetup();
+ mDialogs = new NavitDialogs(this);
// only take arguments here, onResume gets called all the time (e.g. when screenblanks, etc.)
- Navit.startup_intent = this.getIntent();
+ Navit.sStartupIntent = this.getIntent();
// hack! Remember time stamps, and only allow 4 secs. later in onResume to set target!
- Navit.startup_intent_timestamp = System.currentTimeMillis();
- Log.d(TAG, "**1**A " + startup_intent.getAction());
- Log.d(TAG, "**1**D " + startup_intent.getDataString());
-
- // NOTIFICATION
- // Setup the status bar notification
- // This notification is removed in the exit() function
- if (isLaunch)
- createNotificationChannel();
- nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Grab a handle to the NotificationManager
- PendingIntent appIntent = PendingIntent.getActivity(getApplicationContext(), 0, getIntent(), 0);
-
- Notification NavitNotification;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- Notification.Builder builder;
- builder = new Notification.Builder(getApplicationContext(), CHANNEL_ID);
- builder.setContentIntent(appIntent);
- builder.setAutoCancel(false).setOngoing(true);
- builder.setContentTitle(getTstring(R.string.app_name));
- builder.setContentText(getTstring(R.string.notification_event_default));
- builder.setSmallIcon(R.drawable.ic_notify);
- NavitNotification = builder.build();
- } else {
- NotificationCompat.Builder builder;
- builder = new NotificationCompat.Builder(getApplicationContext());
- builder.setContentIntent(appIntent);
- builder.setAutoCancel(false).setOngoing(true);
- builder.setContentTitle(getTstring(R.string.app_name));
- builder.setContentText(getTstring(R.string.notification_event_default));
- builder.setSmallIcon(R.drawable.ic_notify);
- NavitNotification = builder.build();
- }
- nm.notify(R.string.app_name, NavitNotification);// Show the notification
+ Navit.sStartupIntentTimestamp = System.currentTimeMillis();
+ Log.d(TAG, "**1**A " + sStartupIntent.getAction());
+ Log.d(TAG, "**1**D " + sStartupIntent.getDataString());
- if ((ContextCompat.checkSelfPermission(this,
- Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED)
- || (ContextCompat.checkSelfPermission(this,
- Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
- Log.d(TAG,"ask for permission(s)");
- ActivityCompat.requestPermissions(this,
- new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION},
- MY_PERMISSIONS_REQUEST_ALL);
- }
+ createNotificationChannel();
+ buildNotification();
+ verifyPermissions();
// get the local language -------------
- Locale locale = java.util.Locale.getDefault();
+ Locale locale = Locale.getDefault();
String lang = locale.getLanguage();
String langc = lang;
Log.d(TAG, "lang=" + lang);
int pos = lang.indexOf('_');
+ String navitLanguage;
if (pos != -1) {
langc = lang.substring(0, pos);
- NavitLanguage = langc + lang.substring(pos).toUpperCase(locale);
- Log.d(TAG, "substring lang " + NavitLanguage.substring(pos).toUpperCase(locale));
+ navitLanguage = langc + lang.substring(pos).toUpperCase(locale);
+ Log.d(TAG, "substring lang " + navitLanguage.substring(pos).toUpperCase(locale));
} else {
String country = locale.getCountry();
Log.d(TAG, "Country1 " + country);
Log.d(TAG, "Country2 " + country.toUpperCase(locale));
- NavitLanguage = langc + "_" + country.toUpperCase(locale);
+ navitLanguage = langc + "_" + country.toUpperCase(locale);
}
Log.d(TAG, "Language " + lang);
- SharedPreferences prefs = getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
- map_filename_path = prefs.getString("filenamePath",
- Environment.getExternalStorageDirectory().getPath() + "/navit/");
-
+ SharedPreferences prefs = getSharedPreferences(NavitAppConfig.NAVIT_PREFS,MODE_PRIVATE);
+ sNavitDataDir = getApplicationContext().getFilesDir().getPath();
+ sMapFilenamePath = prefs.getString("filenamePath", sNavitDataDir + '/');
+ Log.i(TAG,"NavitDataDir = " + sNavitDataDir);
+ Log.i(TAG,"mapFilenamePath = " + sMapFilenamePath);
// make sure the new path for the navitmap.bin file(s) exist!!
- File navit_maps_dir = new File(map_filename_path);
- navit_maps_dir.mkdirs();
+ File navitMapsDir = new File(sMapFilenamePath);
+ navitMapsDir.mkdirs();
// make sure the share dir exists
- File navit_data_share_dir = new File(NAVIT_DATA_SHARE_DIR);
- navit_data_share_dir.mkdirs();
-
- Display display_ = getWindowManager().getDefaultDisplay();
- int width_ = display_.getWidth();
- int height_ = display_.getHeight();
- metrics = new DisplayMetrics();
- display_.getMetrics(Navit.metrics);
- int densityDpi = (int)((Navit.metrics.density * 160) - .5f);
- Log.d(TAG, "Navit -> pixels x=" + width_ + " pixels y=" + height_);
- Log.d(TAG, "Navit -> dpi=" + densityDpi);
- Log.d(TAG, "Navit -> density=" + Navit.metrics.density);
- Log.d(TAG, "Navit -> scaledDensity=" + Navit.metrics.scaledDensity);
-
- ActivityResults = new NavitActivityResult[16];
+ File navitDataShareDir = new File(sNavitDataDir + "/share");
+ navitDataShareDir.mkdirs();
+
+ Display display = getWindowManager().getDefaultDisplay();
+ sMetrics = new DisplayMetrics();
+ display.getMetrics(sMetrics);
+ int densityDpi = (int)((sMetrics.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);
+
+ mActivityResults = new NavitActivityResult[16];
setVolumeControlStream(AudioManager.STREAM_MUSIC);
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
- wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"navit:DoNotDimScreen");
+ mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"navit:DoNotDimScreen");
- if (!extractRes(langc, NAVIT_DATA_DIR + "/locale/" + langc + "/LC_MESSAGES/navit.mo")) {
+ if (!extractRes(langc, sNavitDataDir + "/locale/" + langc + "/LC_MESSAGES/navit.mo")) {
Log.e(TAG, "Failed to extract language resource " + langc);
}
+ String myDisplayDensity;
if (densityDpi <= 120) {
- my_display_density = "ldpi";
+ myDisplayDensity = "ldpi";
} else if (densityDpi <= 160) {
- my_display_density = "mdpi";
+ myDisplayDensity = "mdpi";
} else if (densityDpi < 240) {
- my_display_density = "hdpi";
+ myDisplayDensity = "hdpi";
} else if (densityDpi < 320) {
- my_display_density = "xhdpi";
+ myDisplayDensity = "xhdpi";
} else if (densityDpi < 480) {
- my_display_density = "xxhdpi";
+ myDisplayDensity = "xxhdpi";
} else if (densityDpi < 640) {
- my_display_density = "xxxhdpi";
+ myDisplayDensity = "xxxhdpi";
} else {
Log.w(TAG, "found device of very high density (" + densityDpi + ")");
Log.w(TAG, "using xxxhdpi values");
- my_display_density = "xxxhdpi";
+ myDisplayDensity = "xxxhdpi";
}
- Log.i(TAG, "Device density detected: " + my_display_density);
+ Log.i(TAG, "Device density detected: " + myDisplayDensity);
try {
- AssetManager assetMgr = NavitResources.getAssets();
- String[] children = assetMgr.list("config/" + my_display_density);
+ AssetManager assetMgr = NavitAppConfig.sResources.getAssets();
+ String[] children = assetMgr.list("config/" + myDisplayDensity);
for (String child : children) {
Log.d(TAG, "Processing config file '" + child + "' from assets");
- if (!extractAsset("config/" + my_display_density + "/" + child, NAVIT_DATA_DIR + "/share/" + child)) {
- Log.e(TAG, "Failed to extract asset config/" + my_display_density + "/" + child);
+ if (!extractAsset("config/" + myDisplayDensity + "/" + child, sNavitDataDir + "/share/" + child)) {
+ Log.e(TAG, "Failed to extract asset config/" + myDisplayDensity + "/" + child);
}
}
} catch (IOException e) {
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);
+ showInfos();
+ }
- Log.d(TAG, "android.os.Build.VERSION.SDK_INT=" + Integer.valueOf(android.os.Build.VERSION.SDK));
- NavitMain(this, getApplication(), NavitLanguage, Integer.valueOf(android.os.Build.VERSION.SDK), my_display_density,
- NAVIT_DATA_DIR + "/bin/navit", map_filename_path, isLaunch);
- if (graphics != null)
- graphics.setActivity(this);
+ private void windowSetup() {
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
+ this.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ } else {
+ if (this.getActionBar() != null) {
+ this.getActionBar().hide();
+ }
+ }
+ }
- showInfos();
+ /* uses NAVIT_PACKAGE_NAME as id */
- Navit.mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ private void buildNotification() {
+ NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ PendingIntent appIntent = PendingIntent.getActivity(getApplicationContext(), 0, getIntent(), 0);
+
+ Notification navitNotification;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ Notification.Builder builder;
+ builder = new Notification.Builder(getApplicationContext(), NAVIT_PACKAGE_NAME);
+ builder.setContentIntent(appIntent);
+ builder.setAutoCancel(false).setOngoing(true);
+ builder.setContentTitle(getTstring(R.string.app_name));
+ builder.setContentText(getTstring(R.string.notification_event_default));
+ builder.setSmallIcon(R.drawable.ic_notify);
+ navitNotification = builder.build();
+ } else {
+ NotificationCompat.Builder builder;
+ builder = new NotificationCompat.Builder(getApplicationContext());
+ builder.setContentIntent(appIntent);
+ builder.setAutoCancel(false).setOngoing(true);
+ builder.setContentTitle(getTstring(R.string.app_name));
+ builder.setContentText(getTstring(R.string.notification_event_default));
+ builder.setSmallIcon(R.drawable.ic_notify);
+ navitNotification = builder.build();
+ }
+ notificationManager.notify(R.string.app_name, navitNotification);// Show the notification
+ }
+
+ public void onRestart() {
+ super.onRestart();
+ Log.d(TAG, "OnRestart");
+ }
+
+ public void onStart() {
+ super.onStart();
+ Log.d(TAG, "OnStart");
}
@Override
@@ -503,79 +421,59 @@ public class Navit extends Activity {
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
}
- //InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ //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";
- if (startup_intent != null) {
- if (System.currentTimeMillis() <= Navit.startup_intent_timestamp + 4000L) {
- Log.d(TAG, "**2**A " + startup_intent.getAction());
- Log.d(TAG, "**2**D " + startup_intent.getDataString());
- String navi_scheme = startup_intent.getScheme();
- if (navi_scheme != null && navi_scheme.equals("google.navigation")) {
- parseNavigationURI(startup_intent.getData().getSchemeSpecificPart());
+ if (sStartupIntent != null) {
+ if (System.currentTimeMillis() <= Navit.sStartupIntentTimestamp + 4000L) {
+ Log.d(TAG, "**2**A " + sStartupIntent.getAction());
+ Log.d(TAG, "**2**D " + sStartupIntent.getDataString());
+ String naviScheme = sStartupIntent.getScheme();
+ if (naviScheme != null && naviScheme.equals("google.navigation")) {
+ parseNavigationURI(sStartupIntent.getData().getSchemeSpecificPart());
}
} else {
Log.e(TAG, "timestamp for navigate_to expired! not using data");
}
}
- Log.d(TAG, "onResume");
-
- if (show_soft_keyboard_now_showing) {
- /* Calling showNativeKeyboard() directly won't work here, we need to use the message queue */
- View cf = getCurrentFocus();
- if (cf == null) {
- Log.e(TAG, "no view in focus, can't get a handler");
- } else {
- cf.getHandler().post(new SoftInputRestorer());
- }
- }
}
@Override
public void onPause() {
super.onPause();
Log.d(TAG, "onPause");
- if (show_soft_keyboard_now_showing) {
- Log.d(TAG, "onPause:hiding soft input");
- this.hideNativeKeyboard();
- show_soft_keyboard_now_showing = true;
- }
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
- switch (requestCode) {
- case MY_PERMISSIONS_REQUEST_ALL: {
- if (grantResults.length > 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED
- && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
- return;
- }
- AlertDialog.Builder infobox = new AlertDialog.Builder(this);
- infobox.setTitle(getTstring(R.string.permissions_info_box_title)); // TRANS
- infobox.setCancelable(false);
- infobox.setMessage(getTstring(R.string.permissions_not_granted));
- // TRANS
- infobox.setPositiveButton(getTstring(R.string.initial_info_box_OK),
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface arg0, int arg1) {
- exit();
- }
- });
- infobox.show();
+ if (requestCode == MY_PERMISSIONS_REQ_FINE_LOC) {
+ if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ return;
}
+ AlertDialog.Builder infobox = new AlertDialog.Builder(this);
+ infobox.setTitle(getTstring(R.string.permissions_info_box_title)); // TRANS
+ infobox.setCancelable(false);
+ infobox.setMessage(getTstring(R.string.permissions_not_granted));
+ // TRANS
+ infobox.setPositiveButton(getTstring(R.string.initial_info_box_OK),
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface arg0, int arg1) {
+ onDestroy();
+ }
+ });
+ infobox.show();
}
}
private void parseNavigationURI(String schemeSpecificPart) {
String[] naviData = schemeSpecificPart.split("&");
Pattern p = Pattern.compile("(.*)=(.*)");
- Map<String,String> params = new HashMap<String,String>();
- for (int count = 0; count < naviData.length; count++) {
- Matcher m = p.matcher(naviData[count]);
-
+ Map<String,String> params = new HashMap<>();
+ for (String naviDatum : naviData) {
+ Matcher m = p.matcher(naviDatum);
if (m.matches()) {
params.put(m.group(1), m.group(2));
}
@@ -586,8 +484,8 @@ public class Navit extends Activity {
// c: google.navigation:ll=48.25676,16.643
// b: google.navigation:q=48.25676,16.643
- Float lat;
- Float lon;
+ float lat;
+ float lon;
Bundle b = new Bundle();
String geoString = params.get("ll");
@@ -609,12 +507,12 @@ public class Navit extends Activity {
lon = Float.valueOf(geo[1]);
b.putFloat("lat", lat);
b.putFloat("lon", lon);
- Message msg = Message.obtain(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
+ Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_SET_DESTINATION.ordinal());
msg.setData(b);
msg.sendToTarget();
- Log.e(TAG, "target found (b): " + geoString);
+ Log.i(TAG, "target found (b): " + geoString);
} catch (NumberFormatException e) {
e.printStackTrace();
}
@@ -625,23 +523,16 @@ public class Navit extends Activity {
}
}
- public void setActivityResult(int requestCode, NavitActivityResult ActivityResult) {
- ActivityResults[requestCode] = ActivityResult;
+ public void setActivityResult(int requestCode, NavitActivityResult activityResult) {
+ mActivityResults[requestCode] = activityResult;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
- //Log.e("Navit","onPrepareOptionsMenu");
- // this gets called every time the menu is opened!!
- // change menu items here!
menu.clear();
- // group-id,item-id,sort order number
- //menu.add(1, 1, 100, getString(R.string.optionsmenu_zoom_in)); //TRANS
- //menu.add(1, 2, 200, getString(R.string.optionsmenu_zoom_out)); //TRANS
-
menu.add(1, 3, 300, getTstring(R.string.optionsmenu_download_maps)); //TRANS
menu.add(1, 5, 400, getTstring(R.string.optionsmenu_toggle_poi)); //TRANS
@@ -658,32 +549,15 @@ public class Navit extends Activity {
return true;
}
- // define callback id here
- private NavitGraphics N_NavitGraphics = null;
-
- // callback id gets set here when called from NavitGraphics
- public void setKeypressCallback(int kp_cb_id, NavitGraphics ng) {
- N_NavitGraphics = ng;
- }
-
- public void setMotionCallback(int mo_cb_id, NavitGraphics ng) {
- N_NavitGraphics = ng;
- }
-
- public NavitGraphics getNavitGraphics() {
- return N_NavitGraphics;
- }
-
-
- public void start_targetsearch_from_intent(String target_address) {
- if (target_address == null || target_address.equals("")) {
+ private void start_targetsearch_from_intent(String targetAddress) {
+ if (targetAddress == null || targetAddress.equals("")) {
// empty search string entered
Toast.makeText(getApplicationContext(), getTstring(R.string.address_search_not_found),
Toast.LENGTH_LONG).show(); //TRANS
} else {
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- search_intent.putExtra("search_string", target_address);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
+ Intent searchIntent = new Intent(this, NavitAddressSearchActivity.class);
+ searchIntent.putExtra("search_string", targetAddress);
+ this.startActivityForResult(searchIntent, NavitAddressSearch_id);
}
}
@@ -693,44 +567,44 @@ public class Navit extends Activity {
return true;
}
- public void runOptionsItem(int id) {
+ private void runOptionsItem(int id) {
switch (id) {
case 1 :
// zoom in
- Message.obtain(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_ZOOM_IN.ordinal()).sendToTarget();
+ Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_ZOOM_IN.ordinal()).sendToTarget();
// if we zoom, hide the bubble
Log.d(TAG, "onOptionsItemSelected -> zoom in");
break;
case 2 :
// zoom out
- Message.obtain(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_ZOOM_OUT.ordinal()).sendToTarget();
+ Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_ZOOM_OUT.ordinal()).sendToTarget();
// if we zoom, hide the bubble
Log.d(TAG, "onOptionsItemSelected -> zoom out");
break;
case 3 :
// map download menu
- Intent map_download_list_activity = new Intent(this, NavitDownloadSelectMapActivity.class);
- startActivityForResult(map_download_list_activity, Navit.NavitDownloaderSelectMap_id);
+ Intent mapDownloadListActivity = new Intent(this, NavitDownloadSelectMapActivity.class);
+ startActivityForResult(mapDownloadListActivity, Navit.NavitDownloaderSelectMap_id);
break;
case 5 :
// toggle the normal POI layers and labels (to avoid double POIs)
- Message msg = Message.obtain(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
+ Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
Bundle b = new Bundle();
b.putString("cmd", "toggle_layer(\"POI Symbols\");");
msg.setData(b);
msg.sendToTarget();
- msg = Message.obtain(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
+ msg = Message.obtain(NavitGraphics.sCallbackHandler, NavitGraphics.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(N_NavitGraphics.callback_handler, NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
+ msg = Message.obtain(NavitGraphics.sCallbackHandler, NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
b = new Bundle();
b.putString("cmd", "toggle_layer(\"Android-POI-Icons-full\");");
msg.setData(b);
@@ -739,8 +613,8 @@ public class Navit extends Activity {
break;
case 6 :
// ok startup address search activity
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
+ Intent searchIntent = new Intent(this, NavitAddressSearchActivity.class);
+ this.startActivityForResult(searchIntent, NavitAddressSearch_id);
break;
case 7 :
/* Backup / Restore */
@@ -752,8 +626,10 @@ public class Navit extends Activity {
case 99 :
// exit
this.onStop();
- this.exit();
+ this.onDestroy();
break;
+ default:
+ Log.e(TAG,"unhandled OptionsItem id = " + id);
}
}
@@ -761,74 +637,57 @@ public class Navit extends Activity {
/**
* Shows the Options menu.
*
- * Calling this method has the same effect as pressing the hardware Menu button, where present, or touching
- * the overflow button in the Action bar.
+ * <p>Calling this method has the same effect as pressing the hardware Menu button, or touching
+ * the overflow button in the Action bar.</p>
*/
- public void showMenu() {
+ void showMenu() {
openOptionsMenu();
}
/**
* Shows the native keyboard or other input method.
+ *
+ * @return 1 if keyboard is software, 0 if hardware
*/
- public int showNativeKeyboard() {
- /*
- * Apologies for the huge mess that this function is, but Android's soft input API is a big
- * nightmare. Its devs have mercifully given us an option to show or hide the keyboard, but
- * there is no reliable way to figure out if it is actually showing, let alone how much of the
- * screen it occupies, so our best bet is guesswork.
- */
+ int showNativeKeyboard() {
+ Log.d(TAG, "showNativeKeyboard");
Configuration config = getResources().getConfiguration();
if ((config.keyboard == Configuration.KEYBOARD_QWERTY)
&& (config.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO)) {
- /* physical keyboard present, exit */
+ /* physical keyboard present */
return 0;
}
/* Use SHOW_FORCED here, else keyboard won't show in landscape mode */
- mgr.showSoftInput(getCurrentFocus(), InputMethodManager.SHOW_FORCED);
- show_soft_keyboard_now_showing = true;
+ ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
+ .showSoftInput(getCurrentFocus(), InputMethodManager.SHOW_FORCED);
+ sShowSoftKeyboardShowing = true;
- /*
- * Crude way to estimate the height occupied by the keyboard: for AOSP on KitKat and Lollipop it
- * is about 62-63% of available screen width (in portrait mode) but no more than slightly above
- * 46% of height (in landscape mode).
- */
- Display display_ = getWindowManager().getDefaultDisplay();
- int width_ = display_.getWidth();
- int height_ = display_.getHeight();
- int maxHeight = height_ * 47 / 100;
- int inputHeight = width_ * 63 / 100;
- if (inputHeight > (maxHeight)) {
- inputHeight = maxHeight;
- }
-
- /* the receiver isn't going to fire before the UI thread becomes idle, well after this method returns */
- Log.d(TAG, "showNativeKeyboard:return (assuming true)");
- return inputHeight;
+ return 1;
}
/**
* Hides the native keyboard or other input method.
*/
- public void hideNativeKeyboard() {
- mgr.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
- show_soft_keyboard_now_showing = false;
+ void hideNativeKeyboard() {
+ ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE))
+ .hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
+ sShowSoftKeyboardShowing = false;
}
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
+ Toast.makeText(getApplicationContext(), getTstring(R.string.address_search_set_destination) + "\n"
+ + address, Toast.LENGTH_LONG).show(); //TRANS
- Message msg = Message.obtain(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
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();
}
@@ -837,7 +696,7 @@ public class Navit extends Activity {
switch (requestCode) {
case Navit.NavitDownloaderSelectMap_id :
if (resultCode == Activity.RESULT_OK) {
- Message msg = dialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD,
+ Message msg = mDialogs.obtainMessage(NavitDialogs.MSG_START_MAP_DOWNLOAD,
data.getIntExtra("map_index", -1), 0);
msg.sendToTarget();
}
@@ -849,8 +708,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(N_NavitGraphics.callback_handler,
- NavitGraphics.msg_type.CLB_SET_DESTINATION.ordinal());
+ Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_SET_DESTINATION.ordinal());
msg.setData(destination);
msg.sendToTarget();
}
@@ -864,10 +723,10 @@ public class Navit extends Activity {
} else {
newDir = newDir + "/";
}
- SharedPreferences prefs = this.getSharedPreferences(NAVIT_PREFS,MODE_PRIVATE);
- SharedPreferences.Editor prefs_editor = prefs.edit();
- prefs_editor.putString("filenamePath", newDir);
- prefs_editor.apply();
+ SharedPreferences prefs = this.getSharedPreferences(NavitAppConfig.NAVIT_PREFS,MODE_PRIVATE);
+ SharedPreferences.Editor prefsEditor = prefs.edit();
+ prefsEditor.putString("filenamePath", newDir);
+ prefsEditor.apply();
Toast.makeText(this, String.format(getTstring(R.string.map_location_changed),newDir),
Toast.LENGTH_LONG).show();
@@ -876,27 +735,28 @@ public class Navit extends Activity {
}
break;
default :
- if (ActivityResults[requestCode] != null)
- ActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
+ if (mActivityResults[requestCode] != null) {
+ mActivityResults[requestCode].onActivityResult(requestCode, resultCode, data);
+ }
break;
}
}
@Override
protected void onPrepareDialog(int id, Dialog dialog) {
- dialogs.prepareDialog(id);
+ mDialogs.prepareDialog(id);
super.onPrepareDialog(id, dialog);
}
protected Dialog onCreateDialog(int id) {
- return dialogs.createDialog(id);
+ return mDialogs.createDialog(id);
}
@Override
public boolean onSearchRequested() {
/* Launch the internal Search Activity */
- Intent search_intent = new Intent(this, NavitAddressSearchActivity.class);
- this.startActivityForResult(search_intent, NavitAddressSearch_id);
+ Intent searchIntent = new Intent(this, NavitAddressSearchActivity.class);
+ this.startActivityForResult(searchIntent, NavitAddressSearch_id);
return true;
}
@@ -913,62 +773,49 @@ public class Navit extends Activity {
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "OnDestroy");
+ NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
+ notificationManager.cancelAll();
+ NavitVehicle.removeListeners(this);
+ navitDestroy();
}
- public void fullscreen(int fullscreen) {
- int w, h;
- isFullscreen = (fullscreen != 0);
- if (isFullscreen) {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ public void onStop() {
+ super.onStop();
+ Log.d(TAG, "OnStop");
+ }
+
+
+ @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+ void fullscreen(int fullscreen) {
+
+ View decorView = getWindow().getDecorView();
+
+ mIsFullscreen = (fullscreen != 0);
+ if (mIsFullscreen) {
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- } else {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
+ int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+ decorView.setSystemUiVisibility(uiOptions);
+ }
- Display display_ = getWindowManager().getDefaultDisplay();
- if (Build.VERSION.SDK_INT < 17) {
- w = display_.getWidth();
- h = display_.getHeight();
} else {
- Point size = new Point();
- display_.getRealSize(size);
- w = size.x;
- h = size.y;
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ decorView.setSystemUiVisibility(0);
+ }
}
- Log.d(TAG, String.format("Toggle fullscreen, w=%d, h=%d", w, h));
- N_NavitGraphics.handleResize(w, h);
}
public void disableSuspend() {
- wl.acquire();
- wl.release();
- }
-
- private void exit() {
- nm.cancelAll();
- NavitVehicle.removeListener();
- NavitDestroy();
+ mWakeLock.acquire();
+ mWakeLock.release();
}
- public native void NavitMain(Navit x, Application application, String lang, int version,
- String display_density_string, String path, String path2, boolean isLaunch);
+ private native void navitMain(String lang, String path, String path2);
- public native void NavitDestroy();
+ public native void navitDestroy();
-
- private String getLocalizedString(String text) {
- return NavitGraphics.CallbackLocalizedString(text);
- }
-
-
- /*
- * this is used to load the 'navit' native library on
- * application startup. The library has already been unpacked at
- * installation time by the package manager.
- */
- static {
- System.loadLibrary("navit");
- }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitActivityResult.java b/navit/android/src/org/navitproject/navit/NavitActivityResult.java
index 7d3ef8cb4..fb785d1d3 100644
--- a/navit/android/src/org/navitproject/navit/NavitActivityResult.java
+++ b/navit/android/src/org/navitproject/navit/NavitActivityResult.java
@@ -3,5 +3,5 @@ package org.navitproject.navit;
import android.content.Intent;
public interface NavitActivityResult {
- public void onActivityResult(int requestCode, int resultCode, Intent data);
+ void onActivityResult(int requestCode, int resultCode, Intent data);
}
diff --git a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java b/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
index 5905433d6..3c0c489d1 100644
--- a/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
+++ b/navit/android/src/org/navitproject/navit/NavitAddressSearchActivity.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2008 Navit Team
*
@@ -19,6 +19,8 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
@@ -42,10 +44,10 @@ import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
-import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.widget.TextView;
import android.widget.Toast;
+
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
@@ -53,41 +55,41 @@ import java.util.Comparator;
import java.util.List;
import java.util.Locale;
+
public class NavitAddressSearchActivity extends Activity {
- public static final class NavitAddress {
- public NavitAddress(int type, float latitude, float longitude, String address) {
- result_type = type;
- lat = latitude;
- lon = longitude;
- addr = address;
+ static final class NavitAddress {
+ NavitAddress(int type, float latitude, float longitude, String address) {
+ mResultType = type;
+ mLat = latitude;
+ mLon = longitude;
+ mAddr = address;
}
- final int result_type;
- final float lat;
- final float lon;
- final String addr;
+ final int mResultType;
+ final float mLat;
+ final float mLon;
+ final String mAddr;
}
private static final String TAG = "NavitAddress";
private static final int ADDRESS_RESULT_PROGRESS_MAX = 10;
- private List<NavitAddress> Addresses_found = null;
- private List<NavitAddress> addresses_shown = null;
+ private List<NavitAddress> mAddressesFound = null;
+ private List<NavitAddress> mAddressesShown = null;
private String mAddressString = "";
private boolean mPartialSearch = false;
private String mCountry;
private ImageButton mCountryButton;
- private ProgressDialog search_results_wait = null;
- public RelativeLayout NavitAddressSearchActivity_layout;
- private int search_results_towns = 0;
- private int search_results_streets = 0;
- private int search_results_streets_hn = 0;
- private long search_handle = 0;
+ private ProgressDialog mSearchResultsWait = null;
+ private int mSearchResultsTowns = 0;
+ private int mSearchResultsStreets = 0;
+ private int mSearchResultsStreetsHn = 0;
+ private long mSearchHandle = 0;
// TODO remember settings
- private static String last_address_search_string = "";
- private static Boolean last_address_partial_match = false;
- private static String last_country = "";
+ private static String sLastAddressSearchString = "";
+ private static Boolean sLastAddressPartialMatch = false;
+ private static String sLastCountry = "";
private int getDrawableID(String resourceName) {
int drawableId = 0;
@@ -105,17 +107,18 @@ 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[] flag_icon_sizes = {24,32,48,64,96};
- int exact_size, nearest_size;
- exact_size = (int)(Navit.metrics.density * 24.0 - .5);
- nearest_size = flag_icon_sizes[0];
- for (int size: flag_icon_sizes) {
- nearest_size = size;
- if (exact_size <= size) {
+ int[] flagIconSizes = {24,32,48,64,96};
+ int exactSize;
+ int nearestSize;
+ exactSize = (int)(Navit.sMetrics.density * 24.0 - .5);
+ nearestSize = flagIconSizes[0];
+ for (int size: flagIconSizes) {
+ nearestSize = size;
+ if (exactSize <= size) {
break;
}
}
- mCountryButton.setImageResource(getDrawableID("country_" + mCountry + "_" + nearest_size + "_" + nearest_size));
+ mCountryButton.setImageResource(getDrawableID("country_" + mCountry + "_" + nearestSize + "_" + nearestSize));
}
@@ -125,17 +128,17 @@ public class NavitAddressSearchActivity extends Activity {
Bundle extras = getIntent().getExtras();
if (extras != null) {
- String search_string = extras.getString(("search_string"));
- if (search_string != null) {
+ String searchString = extras.getString(("search_string"));
+ if (searchString != null) {
mPartialSearch = true;
- mAddressString = search_string;
+ mAddressString = searchString;
executeSearch();
return;
}
}
- mPartialSearch = last_address_partial_match;
- mAddressString = last_address_search_string;
+ mPartialSearch = sLastAddressPartialMatch;
+ mAddressString = sLastAddressSearchString;
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
LinearLayout panel = new LinearLayout(this);
@@ -143,15 +146,15 @@ public class NavitAddressSearchActivity extends Activity {
panel.setOrientation(LinearLayout.VERTICAL);
// address: label and text field
- SharedPreferences settings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
+ SharedPreferences settings = getSharedPreferences(NavitAppConfig.NAVIT_PREFS, MODE_PRIVATE);
mCountry = settings.getString(("DefaultCountry"), null);
if (mCountry == null) {
Locale defaultLocale = Locale.getDefault();
mCountry = defaultLocale.getCountry().toLowerCase(defaultLocale);
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putString("DefaultCountry", mCountry);
- edit_settings.apply();
+ SharedPreferences.Editor editSettings = settings.edit();
+ editSettings.putString("DefaultCountry", mCountry);
+ editSettings.apply();
}
mCountryButton = new ImageButton(this);
@@ -165,33 +168,33 @@ public class NavitAddressSearchActivity extends Activity {
});
// address: label and text field
- TextView addr_view = new TextView(this);
- addr_view.setText(Navit.getInstance().getTstring(R.string.address_enter_destination)); // TRANS
- addr_view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);
- addr_view.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- addr_view.setPadding(4, 4, 4, 4);
+ TextView addrView = new TextView(this);
+ addrView.setText(getTstring(R.string.address_enter_destination)); // TRANS
+ addrView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f);
+ addrView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
+ addrView.setPadding(4, 4, 4, 4);
// partial match checkbox
final CheckBox checkboxPartialMatch = new CheckBox(this);
- checkboxPartialMatch.setText(Navit.getInstance().getTstring(R.string.address_partial_match)); // TRANS
- checkboxPartialMatch.setChecked(last_address_partial_match);
+ checkboxPartialMatch.setText(getTstring(R.string.address_partial_match)); // TRANS
+ checkboxPartialMatch.setChecked(sLastAddressPartialMatch);
checkboxPartialMatch.setGravity(Gravity.CENTER);
final EditText address_string = new EditText(this);
- address_string.setText(last_address_search_string);
+ address_string.setText(sLastAddressSearchString);
address_string.setSelectAllOnFocus(true);
// search button
final Button btnSearch = new Button(this);
- btnSearch.setText(Navit.getInstance().getTstring(R.string.address_search_button)); // TRANS
+ btnSearch.setText(getTstring(R.string.address_search_button)); // TRANS
btnSearch.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
btnSearch.setGravity(Gravity.CENTER);
btnSearch.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mPartialSearch = checkboxPartialMatch.isChecked();
mAddressString = address_string.getText().toString();
- last_address_partial_match = mPartialSearch;
- last_address_search_string = mAddressString;
+ sLastAddressPartialMatch = mPartialSearch;
+ sLastAddressSearchString = mAddressString;
executeSearch();
}
});
@@ -204,19 +207,19 @@ public class NavitAddressSearchActivity extends Activity {
if (addressCount > 0) {
String[] strAddresses = new String[addressCount];
for (int addrIndex = 0; addrIndex < addressCount; addrIndex++) {
- strAddresses[addrIndex] = addresses.get(addrIndex).addr;
+ strAddresses[addrIndex] = addresses.get(addrIndex).mAddr;
}
ArrayAdapter<String> addressList =
- new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strAddresses);
+ new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, strAddresses);
lastAddresses.setAdapter(addressList);
lastAddresses.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
NavitAddress addressSelected = addresses.get(arg2);
Intent resultIntent = new Intent();
- resultIntent.putExtra("lat", addressSelected.lat);
- resultIntent.putExtra("lon", addressSelected.lon);
- resultIntent.putExtra("q", addressSelected.addr);
+ resultIntent.putExtra("lat", addressSelected.mLat);
+ resultIntent.putExtra("lon", addressSelected.mLon);
+ resultIntent.putExtra("q", addressSelected.mAddr);
setResult(Activity.RESULT_OK, resultIntent);
finish();
@@ -232,7 +235,7 @@ public class NavitAddressSearchActivity extends Activity {
searchSettingsLayout.addView(mCountryButton);
searchSettingsLayout.addView(checkboxPartialMatch);
- panel.addView(addr_view);
+ panel.addView(addrView);
panel.addView(address_string);
panel.addView(searchSettingsLayout);
panel.addView(btnSearch);
@@ -242,32 +245,31 @@ public class NavitAddressSearchActivity extends Activity {
}
private void requestCountryDialog() {
- final String[][] all_countries = NavitGraphics.GetAllCountries();
+ final String[][] all_countries = NavitGraphics.getAllCountries();
- Comparator<String[]> country_comperator = new Comparator<String[]>() {
+ Comparator<String[]> countryComparator = new Comparator<String[]>() {
public int compare(String[] object1, String[] object2) {
return object1[1].compareTo(object2[1]);
}
};
- Arrays.sort(all_countries, country_comperator);
+ Arrays.sort(all_countries, countryComparator);
AlertDialog.Builder mapModeChooser = new AlertDialog.Builder(this);
// ToDo also show icons and country code
- String[] country_name = new String[all_countries.length];
+ String[] countryName = new String[all_countries.length];
- for (int country_index = 0; country_index < all_countries.length; country_index++) {
- country_name[country_index] = all_countries[country_index][1];
+ for (int countryIndex = 0; countryIndex < all_countries.length; countryIndex++) {
+ countryName[countryIndex] = all_countries[countryIndex][1];
}
- mapModeChooser.setItems(country_name, new DialogInterface.OnClickListener() {
+ mapModeChooser.setItems(countryName, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
- SharedPreferences settings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
+ SharedPreferences settings = getSharedPreferences(NavitAppConfig.NAVIT_PREFS, MODE_PRIVATE);
mCountry = all_countries[item][0];
- SharedPreferences.Editor edit_settings = settings.edit();
- edit_settings.putString("DefaultCountry", mCountry);
- edit_settings.apply();
-
+ SharedPreferences.Editor editSettings = settings.edit();
+ editSettings.putString("DefaultCountry", mCountry);
+ editSettings.apply();
setCountryButtonImage();
}
});
@@ -277,36 +279,35 @@ public class NavitAddressSearchActivity extends Activity {
d.show();
}
- /**
- * start a search on the map
- */
- public void receiveAddress(int type, float latitude, float longitude, String address) {
- Log.e(TAG, "(" + String.valueOf(latitude) + ", " + String.valueOf(longitude) + ") " + address);
+ //start a search on the map
+ void receiveAddress(int type, float latitude, float longitude, String address) {
+ Log.d(TAG, "(" + latitude + ", " + longitude + ") " + address);
switch (type) {
case 0:
- search_results_towns++;
+ mSearchResultsTowns++;
break;
case 1:
- search_results_streets++;
+ mSearchResultsStreets++;
break;
case 2:
- search_results_streets_hn++;
+ mSearchResultsStreetsHn++;
break;
-
+ default:
+ Log.e(TAG,"Unexpected value: " + type);
}
- search_results_wait.setMessage(Navit.getInstance().getTstring(R.string.address_search_towns) + ":"
- + search_results_towns + " "
- + Navit.getInstance().getTstring(R.string.address_search_streets) + ":" + search_results_streets + "/"
- + search_results_streets_hn);
+ mSearchResultsWait.setMessage(getTstring(R.string.address_search_towns) + ":"
+ + mSearchResultsTowns + " "
+ + getTstring(R.string.address_search_streets) + ":" + mSearchResultsStreets + "/"
+ + mSearchResultsStreetsHn);
- search_results_wait.setProgress(Addresses_found.size() % (ADDRESS_RESULT_PROGRESS_MAX + 1));
+ mSearchResultsWait.setProgress(mAddressesFound.size() % (ADDRESS_RESULT_PROGRESS_MAX + 1));
- Addresses_found.add(new NavitAddress(type, latitude, longitude, address));
+ mAddressesFound.add(new NavitAddress(type, latitude, longitude, address));
}
- public void finishAddressSearch() {
- if (Addresses_found.isEmpty()) {
+ void finishAddressSearch() {
+ if (mAddressesFound.isEmpty()) {
// TRANS
Toast.makeText(getApplicationContext(),
getString(R.string.address_search_not_found) + "\n" + mAddressString, Toast.LENGTH_LONG).show();
@@ -316,14 +317,14 @@ public class NavitAddressSearchActivity extends Activity {
ListView addressesFound = new ListView(this);
addressesFound.setFastScrollEnabled(true);
ArrayAdapter<String> addressList =
- new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
+ new ArrayAdapter<>(this, android.R.layout.simple_list_item_1);
- addresses_shown = new ArrayList<NavitAddress>();
+ mAddressesShown = new ArrayList<>();
- for (NavitAddress currentAddress : Addresses_found) {
- if (currentAddress.result_type != 0 || search_results_streets == 0) {
- addressList.add(currentAddress.addr);
- addresses_shown.add(currentAddress);
+ for (NavitAddress currentAddress : mAddressesFound) {
+ if (currentAddress.mResultType != 0 || mSearchResultsStreets == 0) {
+ addressList.add(currentAddress.mAddr);
+ mAddressesShown.add(currentAddress);
}
}
@@ -331,12 +332,12 @@ public class NavitAddressSearchActivity extends Activity {
addressesFound.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- NavitAddress addressSelected = addresses_shown.get(arg2);
+ NavitAddress addressSelected = mAddressesShown.get(arg2);
Intent resultIntent = new Intent();
- resultIntent.putExtra("lat", addressSelected.lat);
- resultIntent.putExtra("lon", addressSelected.lon);
- resultIntent.putExtra("q", addressSelected.addr);
+ resultIntent.putExtra("lat", addressSelected.mLat);
+ resultIntent.putExtra("lon", addressSelected.mLon);
+ resultIntent.putExtra("q", addressSelected.mAddr);
setResult(Activity.RESULT_OK, resultIntent);
finish();
@@ -344,39 +345,39 @@ public class NavitAddressSearchActivity extends Activity {
});
setContentView(addressesFound);
- search_results_wait.dismiss();
+ mSearchResultsWait.dismiss();
}
- public native long CallbackStartAddressSearch(int partial_match, String country, String s);
+ native long callbackStartAddressSearch(int partialMatch, String country, String s);
- public native void CallbackCancelAddressSearch(long handle);
+ native void callbackCancelAddressSearch(long handle);
@Override
protected Dialog onCreateDialog(int id) {
- search_results_wait = new ProgressDialog(this);
- search_results_wait.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- search_results_wait.setTitle("Loading search results");
- search_results_wait.setMessage("--");
- search_results_wait.setCancelable(true);
- search_results_wait.setProgress(0);
- search_results_wait.setMax(10);
-
- Addresses_found = new ArrayList<NavitAddress>();
- search_results_towns = 0;
- search_results_streets = 0;
- search_results_streets_hn = 0;
-
- search_handle = CallbackStartAddressSearch(mPartialSearch ? 1 : 0, mCountry, mAddressString);
-
- search_results_wait.setOnCancelListener(new DialogInterface.OnCancelListener() {
+ mSearchResultsWait = new ProgressDialog(this);
+ mSearchResultsWait.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mSearchResultsWait.setTitle("Loading search results");
+ mSearchResultsWait.setMessage("--");
+ mSearchResultsWait.setCancelable(true);
+ mSearchResultsWait.setProgress(0);
+ mSearchResultsWait.setMax(10);
+
+ mAddressesFound = new ArrayList<>();
+ mSearchResultsTowns = 0;
+ mSearchResultsStreets = 0;
+ mSearchResultsStreetsHn = 0;
+
+ mSearchHandle = callbackStartAddressSearch(mPartialSearch ? 1 : 0, mCountry, mAddressString);
+
+ mSearchResultsWait.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
- CallbackCancelAddressSearch(search_handle);
- search_handle = 0;
- search_results_wait.dismiss();
+ callbackCancelAddressSearch(mSearchHandle);
+ mSearchHandle = 0;
+ mSearchResultsWait.dismiss();
}
});
- return search_results_wait;
+ return mSearchResultsWait;
}
private void executeSearch() {
diff --git a/navit/android/src/org/navitproject/navit/NavitAppConfig.java b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
index 22c310f70..322fcc9c7 100755
--- a/navit/android/src/org/navitproject/navit/NavitAppConfig.java
+++ b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
@@ -2,6 +2,7 @@ package org.navitproject.navit;
import android.app.Application;
import android.content.SharedPreferences;
+import android.content.res.Resources;
import java.util.ArrayList;
import java.util.List;
@@ -10,34 +11,36 @@ import org.navitproject.navit.NavitAddressSearchActivity.NavitAddress;
public class NavitAppConfig extends Application {
+ public static final String NAVIT_PREFS = "NavitPrefs";
private static final int MAX_LAST_ADDRESSES = 10;
- private static final String TAG = "Navit";
-
- private List<NavitAddress> mLastAddresses = null;
+ static Resources sResources;
+ private List<NavitAddress> mLastAddresses = null;
private int mLastAddressField;
private SharedPreferences mSettings;
+
@Override
public void onCreate() {
- mSettings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
super.onCreate();
+ mSettings = getSharedPreferences(NAVIT_PREFS, MODE_PRIVATE);
+ sResources = getResources();
}
- public List<NavitAddress> getLastAddresses() {
+ List<NavitAddress> getLastAddresses() {
if (mLastAddresses == null) {
- mLastAddresses = new ArrayList<NavitAddress>();
+ mLastAddresses = new ArrayList<>();
int mLastAddressField = mSettings.getInt("LastAddress", -1);
if (mLastAddressField >= 0) {
int index = mLastAddressField;
do {
- String addr_str = mSettings.getString("LastAddress_" + String.valueOf(index), "");
+ String addrStr = mSettings.getString("LastAddress_" + index, "");
- if (addr_str.length() > 0) {
+ if (addrStr.length() > 0) {
mLastAddresses.add(new NavitAddress(
1,
- mSettings.getFloat("LastAddress_Lat_" + String.valueOf(index), 0),
- mSettings.getFloat("LastAddress_Lon_" + String.valueOf(index), 0),
- addr_str));
+ mSettings.getFloat("LastAddress_Lat_" + index, 0),
+ mSettings.getFloat("LastAddress_Lon_" + index, 0),
+ addrStr));
}
if (--index < 0) {
@@ -50,7 +53,7 @@ public class NavitAppConfig extends Application {
return mLastAddresses;
}
- public void addLastAddress(NavitAddress newAddress) {
+ void addLastAddress(NavitAddress newAddress) {
getLastAddresses();
mLastAddresses.add(newAddress);
@@ -66,10 +69,33 @@ public class NavitAppConfig extends Application {
SharedPreferences.Editor editSettings = mSettings.edit();
editSettings.putInt("LastAddress", mLastAddressField);
- editSettings.putString("LastAddress_" + String.valueOf(mLastAddressField), newAddress.addr);
- editSettings.putFloat("LastAddress_Lat_" + String.valueOf(mLastAddressField), newAddress.lat);
- editSettings.putFloat("LastAddress_Lon_" + String.valueOf(mLastAddressField), newAddress.lon);
+ editSettings.putString("LastAddress_" + mLastAddressField, newAddress.mAddr);
+ editSettings.putFloat("LastAddress_Lat_" + mLastAddressField, newAddress.mLat);
+ editSettings.putFloat("LastAddress_Lon_" + mLastAddressField, newAddress.mLon);
editSettings.apply();
}
+
+ /**
+ * Translates a string from its id
+ * in R.strings
+ *
+ * @param riD resource identifier
+ * @return translated string
+ */
+ static String getTstring(int riD) {
+
+ return callbackLocalizedString(sResources.getString(riD));
+ }
+
+ static native String callbackLocalizedString(String s);
+
+ /*
+ * this is used to load the 'navit' native library on
+ * application startup. The library has already been unpacked at
+ * installation time by the package manager.
+ */
+ static {
+ System.loadLibrary("navit");
+ }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitBackupTask.java b/navit/android/src/org/navitproject/navit/NavitBackupTask.java
index c3fbe0517..567acb137 100644
--- a/navit/android/src/org/navitproject/navit/NavitBackupTask.java
+++ b/navit/android/src/org/navitproject/navit/NavitBackupTask.java
@@ -1,5 +1,7 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
@@ -11,6 +13,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
+
public class NavitBackupTask extends AsyncTask<Void, Void, String> {
private Navit mActivity;
@@ -28,7 +31,7 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
/* Create a Wait Progress Dialog to inform the User that we are working */
mDialog = new ProgressDialog(mActivity);
mDialog.setIndeterminate(true);
- mDialog.setMessage(mActivity.getTstring(R.string.backing_up));
+ mDialog.setMessage(getTstring(R.string.backing_up));
mDialog.show();
}
@@ -44,7 +47,7 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
/* Create the Main Backup Directory if it doesn't exist */
if (!mainBackupDir.isDirectory()) {
if (!mainBackupDir.mkdirs()) {
- return mActivity.getTstring(R.string.failed_to_create_backup_directory);
+ return getTstring(R.string.failed_to_create_backup_directory);
}
}
@@ -70,29 +73,29 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
/* Create the Backup Directory if it doesn't exist */
if (!backupDir.isDirectory()) {
if (!backupDir.mkdirs()) {
- return mActivity.getTstring(R.string.failed_to_create_backup_directory);
+ return getTstring(R.string.failed_to_create_backup_directory);
}
}
ObjectOutputStream preferencesOOs = null;
try {
/* Backup Files in home */
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/bookmark.txt",
+ NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/bookmark.txt",
backupDir.getPath() + "/bookmark.txt");
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/destination.txt",
+ NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/destination.txt",
backupDir.getPath() + "/destination.txt");
- mActivity.copyFileIfExists(Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt",
+ NavitUtils.copyFileIfExists(Navit.sNavitDataDir + "/home/gui_internal.txt",
backupDir.getPath() + "/gui_internal.txt");
/* Backup Shared Preferences */
preferencesOOs = new ObjectOutputStream(
new FileOutputStream(backupDir.getPath() + "/preferences.bak"));
preferencesOOs.writeObject(
- mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE)
+ mActivity.getSharedPreferences(NavitAppConfig.NAVIT_PREFS, Context.MODE_PRIVATE)
.getAll());
} catch (IOException e) {
e.printStackTrace();
- return mActivity.getTstring(R.string.backup_failed);
+ return getTstring(R.string.backup_failed);
} finally {
/* Close Stream to prevent Resource Leaks */
try {
@@ -101,7 +104,7 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
}
} catch (IOException e) {
e.printStackTrace();
- return mActivity.getTstring(R.string.backup_failed);
+ return getTstring(R.string.backup_failed);
}
}
@@ -121,14 +124,14 @@ public class NavitBackupTask extends AsyncTask<Void, Void, String> {
return;
}
- Toast.makeText(mActivity, mActivity.getTstring(R.string.backup_successful),
+ Toast.makeText(mActivity, getTstring(R.string.backup_successful),
Toast.LENGTH_LONG).show();
}
@Override
protected void onCancelled() {
super.onCancelled();
- Toast.makeText(mActivity, mActivity.getTstring(R.string.backup_failed), Toast.LENGTH_LONG)
+ Toast.makeText(mActivity, getTstring(R.string.backup_failed), Toast.LENGTH_LONG)
.show();
mDialog.dismiss();
}
diff --git a/navit/android/src/org/navitproject/navit/NavitCamera.java b/navit/android/src/org/navitproject/navit/NavitCamera.java
index 709686b97..1df26081a 100644
--- a/navit/android/src/org/navitproject/navit/NavitCamera.java
+++ b/navit/android/src/org/navitproject/navit/NavitCamera.java
@@ -25,58 +25,73 @@ import android.view.SurfaceView;
import java.io.IOException;
+class NavitCamera extends SurfaceView implements SurfaceHolder.Callback {
-
-public class NavitCamera extends SurfaceView implements SurfaceHolder.Callback {
- SurfaceHolder mHolder;
- Camera mCamera;
-
-
+ private Camera mCamera;
+ private static final String TAG = "NavitCamera";
NavitCamera(Context context) {
super(context);
- mHolder = getHolder();
- mHolder.addCallback(this);
- mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- Log.e("NavitCamera","Creator");
-
-
+ if (android.support.v4.content.ContextCompat.checkSelfPermission(context,
+ android.Manifest.permission.CAMERA)
+ != android.content.pm.PackageManager.PERMISSION_GRANTED) {
+ Log.e(TAG,"No permission to access camera");
+ return;
+ }
+ SurfaceHolder holder;
+ holder = getHolder();
+ holder.addCallback(this);
+ holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+ Log.v(TAG,"Creator");
}
+ /**
+ * {@inheritDoc}
+ *
+ * <p>acquire the camera and tell it where to draw.</p>
+ */
public void surfaceCreated(SurfaceHolder holder) {
- // The Surface has been created, acquire the camera and tell it where
- // to draw.
- try {
- mCamera = Camera.open();
- mCamera.setPreviewDisplay(holder);
- } catch (IOException exception) {
- mCamera.release();
- mCamera = null;
- // TODO: add more exception handling logic here
+ if (mCamera != null) {
+ try {
+ mCamera = Camera.open();
+ mCamera.setPreviewDisplay(holder);
+ } catch (IOException exception) {
+ mCamera.release();
+ mCamera = null;
+ Log.e(TAG, "IOException");
+ }
+ Log.i(TAG, "surfaceCreated");
+ } else {
+ Log.e(TAG, "null camera");
}
- Log.e("NavitCamera","surfaceCreated");
}
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>stop the preview and release the camera.</p>
+ */
public void surfaceDestroyed(SurfaceHolder holder) {
- // Surface will be destroyed when we return, so stop the preview.
- // Because the CameraDevice object is not a shared resource, it's very
- // important to release it when the activity is paused.
mCamera.stopPreview();
mCamera = null;
- Log.e("NavitCamera","surfaceDestroyed");
+ Log.e(TAG,"surfaceDestroyed");
}
+
+ /**
+ * {@inheritDoc}
+ *
+ * <p>set up the camera with the new parameters.</p>
+ */
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
- // Now that the size is known, set up the camera parameters and begin
- // the preview.
- Log.e("NavitCamera","surfaceChanged " + w + "x" + h);
+ Log.e(TAG,"surfaceChanged " + w + "x " + h);
mCamera.stopPreview();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
-
}
diff --git a/navit/android/src/org/navitproject/navit/NavitDialogs.java b/navit/android/src/org/navitproject/navit/NavitDialogs.java
index 41cac61da..8a9d6de65 100644
--- a/navit/android/src/org/navitproject/navit/NavitDialogs.java
+++ b/navit/android/src/org/navitproject/navit/NavitDialogs.java
@@ -1,5 +1,7 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
@@ -14,11 +16,12 @@ import android.widget.ArrayAdapter;
import android.widget.Toast;
import java.io.File;
+
public class NavitDialogs extends Handler {
// Dialogs
- public static final int DIALOG_MAPDOWNLOAD = 1;
- public static final int DIALOG_BACKUP_RESTORE = 2;
+ static final int DIALOG_MAPDOWNLOAD = 1;
+ static final int DIALOG_BACKUP_RESTORE = 2;
// dialog messages
static final int MSG_MAP_DOWNLOAD_FINISHED = 0;
static final int MSG_PROGRESS_BAR = 1;
@@ -27,30 +30,30 @@ public class NavitDialogs extends Handler {
static final int MSG_START_MAP_DOWNLOAD = 7;
private static final int DIALOG_SELECT_BACKUP = 3;
private static final int MSG_REMOVE_DIALOG_GENERIC = 99;
- private static Handler mHandler;
- private final String TAG = this.getClass().getName();
- private ProgressDialog mapdownloader_dialog = null;
- private NavitMapDownloader mapdownloader = null;
- private Navit mActivity;
+ private static Handler sHandler;
+ private static final String TAG = "NavitDialogs";
+ private ProgressDialog mMapdownloaderDialog = null;
+ private NavitMapDownloader mMapdownloader = null;
+ private final Navit mActivity;
NavitDialogs(Navit activity) {
super();
mActivity = activity;
- mHandler = this;
+ sHandler = this;
}
- static public void sendDialogMessage(int what, String title, String text, int dialog_num,
+ static void sendDialogMessage(int what, String title, String text, int dialogNum,
int value1, int value2) {
- Message msg = mHandler.obtainMessage(what);
Bundle data = new Bundle();
data.putString("title", title);
data.putString("text", text);
data.putInt("value1", value1);
data.putInt("value2", value2);
- data.putInt("dialog_num", dialog_num);
+ data.putInt("dialog_num", dialogNum);
+ Message msg = sHandler.obtainMessage(what);
msg.setData(data);
- mHandler.sendMessage(msg);
+ sHandler.sendMessage(msg);
}
@Override
@@ -61,32 +64,32 @@ public class NavitDialogs extends Handler {
mActivity.dismissDialog(DIALOG_MAPDOWNLOAD);
mActivity.removeDialog(DIALOG_MAPDOWNLOAD);
if (msg.getData().getInt("value1") == 1) {
- Message msg_out = Message.obtain(Navit.getInstance().getNavitGraphics().callback_handler,
- NavitGraphics.msg_type.CLB_LOAD_MAP.ordinal());
- msg_out.setData(msg.getData());
- msg_out.sendToTarget();
-
- msg_out = Message
- .obtain(Navit.getInstance().getNavitGraphics().callback_handler,
- NavitGraphics.msg_type.CLB_CALL_CMD.ordinal());
+ Message msgOut = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_LOAD_MAP.ordinal());
+ msgOut.setData(msg.getData());
+ msgOut.sendToTarget();
+
+ msgOut = Message
+ .obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_CALL_CMD.ordinal());
Bundle b = new Bundle();
int mi = msg.getData().getInt("value2");
- double lon = (Double.parseDouble(NavitMapDownloader.osm_maps[mi].lon1) + Double
- .parseDouble(NavitMapDownloader.osm_maps[mi].lon2)) / 2.0;
- double lat = (Double.parseDouble(NavitMapDownloader.osm_maps[mi].lat1) + Double
- .parseDouble(NavitMapDownloader.osm_maps[mi].lat2)) / 2.0;
+ double lon = (Double.parseDouble(NavitMapDownloader.osm_maps[mi].mLon1) + Double
+ .parseDouble(NavitMapDownloader.osm_maps[mi].mLon2)) / 2.0;
+ double lat = (Double.parseDouble(NavitMapDownloader.osm_maps[mi].mLat1) + Double
+ .parseDouble(NavitMapDownloader.osm_maps[mi].mLat2)) / 2.0;
b.putString("cmd", "set_center(\"" + lon + " " + lat + "\",1); zoom=256");
- msg_out.setData(b);
- msg_out.sendToTarget();
+ msgOut.setData(b);
+ msgOut.sendToTarget();
}
break;
}
case MSG_PROGRESS_BAR:
// change progressbar values
- mapdownloader_dialog.setMax(msg.getData().getInt("value1"));
- mapdownloader_dialog.setProgress(msg.getData().getInt("value2"));
- mapdownloader_dialog.setTitle(msg.getData().getString(("title")));
- mapdownloader_dialog.setMessage(msg.getData().getString(("text")));
+ mMapdownloaderDialog.setMax(msg.getData().getInt("value1"));
+ mMapdownloaderDialog.setProgress(msg.getData().getInt("value2"));
+ mMapdownloaderDialog.setTitle(msg.getData().getString(("title")));
+ mMapdownloaderDialog.setMessage(msg.getData().getString(("text")));
break;
case MSG_TOAST:
Toast.makeText(mActivity, msg.getData().getString(("text")), Toast.LENGTH_SHORT).show();
@@ -95,14 +98,14 @@ public class NavitDialogs extends Handler {
Toast.makeText(mActivity, msg.getData().getString(("text")), Toast.LENGTH_LONG).show();
break;
case MSG_START_MAP_DOWNLOAD: {
- int download_map_id = msg.arg1;
- Log.d(TAG, "PRI id=" + download_map_id);
+ int downloadMapId = msg.arg1;
+ Log.d(TAG, "PRI id=" + downloadMapId);
// set map id to download
// show the map download progressbar, and download the map
- if (download_map_id > -1) {
- mapdownloader = new NavitMapDownloader(download_map_id);
+ if (downloadMapId > -1) {
+ mMapdownloader = new NavitMapDownloader(downloadMapId);
mActivity.showDialog(NavitDialogs.DIALOG_MAPDOWNLOAD);
- mapdownloader.start();
+ mMapdownloader.start();
}
}
break;
@@ -111,6 +114,8 @@ public class NavitDialogs extends Handler {
mActivity.dismissDialog(msg.getData().getInt("dialog_num"));
mActivity.removeDialog(msg.getData().getInt("dialog_num"));
break;
+ default:
+ Log.e(TAG,"Unexpected value: " + msg.what);
}
}
@@ -119,53 +124,45 @@ public class NavitDialogs extends Handler {
switch (id) {
case DIALOG_MAPDOWNLOAD:
- mapdownloader_dialog = new ProgressDialog(mActivity);
- mapdownloader_dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- mapdownloader_dialog.setTitle("--");
- mapdownloader_dialog.setMessage("--");
- mapdownloader_dialog.setCancelable(true);
- mapdownloader_dialog.setProgress(0);
- mapdownloader_dialog.setMax(200);
+ mMapdownloaderDialog = new ProgressDialog(mActivity);
+ mMapdownloaderDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+ mMapdownloaderDialog.setTitle("--");
+ mMapdownloaderDialog.setMessage("--");
+ mMapdownloaderDialog.setCancelable(true);
+ mMapdownloaderDialog.setProgress(0);
+ mMapdownloaderDialog.setMax(200);
DialogInterface.OnDismissListener onDismissListener = new DialogInterface.OnDismissListener() {
public void onDismiss(DialogInterface dialog) {
- Log.e(TAG, "onDismiss: mapdownloader_dialog");
- if (mapdownloader != null) {
- mapdownloader.stop_thread();
+ Log.e(TAG, "onDismiss: mMapdownloaderDialog");
+ if (mMapdownloader != null) {
+ mMapdownloader.stop_thread();
}
}
};
- mapdownloader_dialog.setOnDismissListener(onDismissListener);
+ mMapdownloaderDialog.setOnDismissListener(onDismissListener);
// show license for OSM maps
Toast.makeText(mActivity.getApplicationContext(),
- Navit.getInstance().getString(R.string.osm_copyright),
- Toast.LENGTH_LONG).show();
- return mapdownloader_dialog;
+ R.string.osm_copyright, Toast.LENGTH_LONG).show();
+ return mMapdownloaderDialog;
case DIALOG_BACKUP_RESTORE:
/* Create a Dialog that Displays Options wether to Backup or Restore */
- builder.setTitle(mActivity.getTstring(R.string.choose_an_action)).
- setCancelable(true).
- setItems(R.array.dialog_backup_restore_items,
- new DialogInterface.OnClickListener() {
+ builder.setTitle(getTstring(R.string.choose_an_action))
+ .setCancelable(true)
+ .setItems(R.array.dialog_backup_restore_items,
+ new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
/* Notify User if no SD Card present */
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
- Toast.makeText(mActivity, mActivity
- .getTstring(R.string.please_insert_an_sd_card),
+ Toast.makeText(mActivity, getTstring(R.string.please_insert_an_sd_card),
Toast.LENGTH_LONG).show();
}
-
- switch (which) {
- case 0:
- /* Backup */
- new NavitBackupTask(mActivity).execute();
- break;
- case 1:
- /* Restore */
- mActivity.showDialog(DIALOG_SELECT_BACKUP);
- break;
+ if (which == 0) { /* Backup */
+ new NavitBackupTask(mActivity).execute();
+ } else if (which == 1) { /* Restore */
+ mActivity.showDialog(DIALOG_SELECT_BACKUP);
}
}
});
@@ -183,13 +180,13 @@ public class NavitDialogs extends Handler {
if (backups == null || backups.length == 0) {
/* No Backups were found */
- builder.setTitle(mActivity.getTstring(R.string.no_backup_found));
- builder.setNegativeButton(mActivity.getTstring(android.R.string.cancel), null);
+ builder.setTitle(getTstring(R.string.no_backup_found));
+ builder.setNegativeButton(getTstring(android.R.string.cancel), null);
return builder.create();
}
- builder.setTitle(mActivity.getTstring(R.string.select_backup));
- final ArrayAdapter<String> adapter = new ArrayAdapter<String>(mActivity,
+ builder.setTitle(getTstring(R.string.select_backup));
+ final ArrayAdapter<String> adapter = new ArrayAdapter<>(mActivity,
android.R.layout.simple_spinner_item, backups);
builder.setAdapter(adapter, new OnClickListener() {
@@ -198,15 +195,17 @@ public class NavitDialogs extends Handler {
new NavitRestoreTask(mActivity, adapter.getItem(which)).execute();
}
});
- builder.setNegativeButton(mActivity.getTstring(android.R.string.cancel), null);
+ builder.setNegativeButton(getTstring(android.R.string.cancel), null);
return builder.create();
+ default:
+ Log.e(TAG,"Unexpected value: " + id);
}
// should never get here!!
return null;
}
- public void prepareDialog(int id) {
+ void prepareDialog(int id) {
/* Remove the Dialog to force Android to rerun onCreateDialog */
if (id == DIALOG_SELECT_BACKUP) {
diff --git a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java b/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
index bb66a8df7..8f816df60 100644
--- a/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
+++ b/navit/android/src/org/navitproject/navit/NavitDownloadSelectMapActivity.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system. Copyright (C) 2005-2008 Navit Team
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
@@ -15,6 +15,8 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
@@ -37,58 +39,59 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+
public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
private static final String MAP_BULLETPOINT = " * ";
- private static SimpleExpandableListAdapter adapter = null;
- private static ArrayList<HashMap<String, String>> downloaded_maps_childs = null;
- private static ArrayList<HashMap<String, String>> maps_current_position_childs = null;
- private static boolean currentLocationKnown = false;
- private final String TAG = this.getClass().getName();
+ private static SimpleExpandableListAdapter sAdapter = null;
+ private static ArrayList<HashMap<String, String>> sDownloadedMapsChilds = null;
+ private static ArrayList<HashMap<String, String>> sMapsCurrentPositionChilds = null;
+ private static boolean sCurrentLocationKnown = false;
+ private static final String TAG = "DownloadSelectMapAct";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (adapter == null) {
- adapter = createAdapter();
+ if (sAdapter == null) {
+ sAdapter = createAdapter();
}
updateDownloadedMaps();
- updateMapsForLocation(NavitMapDownloader.osm_maps);
- setListAdapter(adapter);
+ updateMapsForLocation();
+ setListAdapter(sAdapter);
try {
- setTitle(String.valueOf(getFreeSpace() / 1024 / 1024) + "MB available");
+ setTitle(getFreeSpace() / 1024 / 1024 + "MB available");
} catch (Exception e) {
Log.e(TAG, "Exception " + e.getClass().getName()
+ " during getFreeSpace, reporting 'no sdcard present'");
NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null,
String.format(
- (Navit.getInstance().getTstring(R.string.map_location_unavailable)),
- Navit.map_filename_path),
+ (getTstring(R.string.map_location_unavailable)),
+ Navit.sMapFilenamePath),
-1, 0, 0);
finish();
}
}
private long getFreeSpace() {
- StatFs fsInfo = new StatFs(Navit.map_filename_path);
+ StatFs fsInfo = new StatFs(Navit.sMapFilenamePath);
return (long) fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
}
private void updateDownloadedMaps() {
- downloaded_maps_childs.clear();
+ sDownloadedMapsChilds.clear();
for (NavitMap map : NavitMapDownloader.getAvailableMaps()) {
- HashMap<String, String> child = new HashMap<String, String>();
- child.put("map_name", map.mapName + " " + (map.size() / 1024 / 1024) + "MB");
+ HashMap<String, String> child = new HashMap<>();
+ child.put("map_name", map.mMapName + " " + (map.size() / 1024 / 1024) + "MB");
child.put("map_location", map.getLocation());
- downloaded_maps_childs.add(child);
+ sDownloadedMapsChilds.add(child);
}
}
- private void updateMapsForLocation(NavitMapDownloader.osm_map_values[] osm_maps) {
- Location currentLocation = NavitVehicle.lastLocation;
- if (maps_current_position_childs.size() == 0 || (currentLocation != null
- && !currentLocationKnown)) {
+ private void updateMapsForLocation() {
+ Location currentLocation = NavitVehicle.sLastLocation;
+ if (sMapsCurrentPositionChilds.size() == 0 || (currentLocation != null
+ && !sCurrentLocationKnown)) {
if (currentLocation == null) {
LocationManager mapLocationManager = (LocationManager) getSystemService(
Context.LOCATION_SERVICE);
@@ -114,22 +117,23 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
}
}
} else {
- currentLocationKnown = true;
+ sCurrentLocationKnown = true;
}
if (currentLocation != null) {
// if this map contains data to our current position, add it to
// the MapsOfCurrentLocation-list
- for (int currentMapIndex = 0; currentMapIndex < osm_maps.length;
+ for (int currentMapIndex = 0; currentMapIndex < NavitMapDownloader.osm_maps.length;
currentMapIndex++) {
- if (osm_maps[currentMapIndex].isInMap(currentLocation)) {
- HashMap<String, String> currentPositionMapChild = new HashMap<String, String>();
- currentPositionMapChild.put("map_name", osm_maps[currentMapIndex].map_name + " "
- + (osm_maps[currentMapIndex].est_size_bytes / 1024 / 1024)
+ if (NavitMapDownloader.osm_maps[currentMapIndex].isInMap(currentLocation)) {
+ HashMap<String, String> currentPositionMapChild = new HashMap<>();
+ currentPositionMapChild.put("map_name", NavitMapDownloader.osm_maps[currentMapIndex].mMapName
+ + " "
+ + (NavitMapDownloader.osm_maps[currentMapIndex].mEstSizeBytes / 1024 / 1024)
+ "MB");
currentPositionMapChild.put("map_index", String.valueOf(currentMapIndex));
- maps_current_position_childs.add(currentPositionMapChild);
+ sMapsCurrentPositionChilds.add(currentPositionMapChild);
}
}
}
@@ -138,45 +142,41 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
private SimpleExpandableListAdapter createAdapter() {
- NavitMapDownloader.osm_map_values[] osm_maps = NavitMapDownloader.osm_maps;
-
- ArrayList<HashMap<String, String>> resultGroups = new ArrayList<HashMap<String, String>>();
- ArrayList<ArrayList<HashMap<String, String>>> resultChilds =
- new ArrayList<ArrayList<HashMap<String, String>>>();
+ ArrayList<HashMap<String, String>> resultGroups = new ArrayList<>();
// add already downloaded maps (group and empty child list
- HashMap<String, String> downloaded_maps_hash = new HashMap<String, String>();
- downloaded_maps_hash
- .put("category_name", Navit.getInstance().getTstring(R.string.maps_installed));
- resultGroups.add(downloaded_maps_hash);
- downloaded_maps_childs = new ArrayList<HashMap<String, String>>();
- resultChilds.add(downloaded_maps_childs);
+ HashMap<String, String> downloadedMapsHash = new HashMap<>();
+ downloadedMapsHash.put("category_name", getTstring(R.string.maps_installed));
+ resultGroups.add(downloadedMapsHash);
+ sDownloadedMapsChilds = new ArrayList<>();
+ ArrayList<ArrayList<HashMap<String, String>>> resultChilds = new ArrayList<>();
+ resultChilds.add(sDownloadedMapsChilds);
- ArrayList<HashMap<String, String>> secList = new ArrayList<HashMap<String, String>>();
- maps_current_position_childs = new ArrayList<HashMap<String, String>>();
+ ArrayList<HashMap<String, String>> secList = new ArrayList<>();
+ sMapsCurrentPositionChilds = new ArrayList<>();
// maps containing the current location
- HashMap<String, String> matching_maps = new HashMap<String, String>();
- matching_maps.put("category_name",
- Navit.getInstance().getTstring(R.string.maps_for_current_location));
- resultGroups.add(matching_maps);
- resultChilds.add(maps_current_position_childs);
-
+ HashMap<String, String> matchingMaps = new HashMap<>();
+ matchingMaps.put("category_name",
+ getTstring(R.string.maps_for_current_location));
+ resultGroups.add(matchingMaps);
+ resultChilds.add(sMapsCurrentPositionChilds);
+ NavitMapDownloader.OsmMapValues[] osmMaps = NavitMapDownloader.osm_maps;
// add all maps
- for (int currentMapIndex = 0; currentMapIndex < osm_maps.length; currentMapIndex++) {
- if (osm_maps[currentMapIndex].level == 0) {
+ for (int currentMapIndex = 0; currentMapIndex < osmMaps.length; currentMapIndex++) {
+ if (osmMaps[currentMapIndex].mLevel == 0) {
if (secList.size() > 0) {
resultChilds.add(secList);
}
- secList = new ArrayList<HashMap<String, String>>();
- HashMap<String, String> map_info_hash = new HashMap<String, String>();
- map_info_hash.put("category_name", osm_maps[currentMapIndex].map_name);
- resultGroups.add(map_info_hash);
+ secList = new ArrayList<>();
+ HashMap<String, String> mapInfoHash = new HashMap<>();
+ mapInfoHash.put("category_name", osmMaps[currentMapIndex].mMapName);
+ resultGroups.add(mapInfoHash);
}
- HashMap<String, String> child = new HashMap<String, String>();
- child.put("map_name", (osm_maps[currentMapIndex].level > 1 ? MAP_BULLETPOINT : "")
- + osm_maps[currentMapIndex].map_name + " "
- + (osm_maps[currentMapIndex].est_size_bytes / 1024 / 1024) + "MB");
+ HashMap<String, String> child = new HashMap<>();
+ child.put("map_name", (osmMaps[currentMapIndex].mLevel > 1 ? MAP_BULLETPOINT : "")
+ + osmMaps[currentMapIndex].mMapName + " "
+ + (osmMaps[currentMapIndex].mEstSizeBytes / 1024 / 1024) + "MB");
child.put("map_index", String.valueOf(currentMapIndex));
secList.add(child);
@@ -197,14 +197,14 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
Log.d(TAG, "p:" + groupPosition + ", child_pos:" + childPosition);
@SuppressWarnings("unchecked")
- HashMap<String, String> child = (HashMap<String, String>) adapter.getChild(groupPosition, childPosition);
+ HashMap<String, String> child = (HashMap<String, String>) sAdapter.getChild(groupPosition, childPosition);
- String map_index = child.get("map_index");
- if (map_index != null) {
- int mi = Integer.parseInt(map_index);
- if (NavitMapDownloader.osm_maps[mi].est_size_bytes / 1024 / 1024 / 950 >= 4) {
+ String mapIndex = child.get("map_index");
+ if (mapIndex != null) {
+ int mi = Integer.parseInt(mapIndex);
+ if (NavitMapDownloader.osm_maps[mi].mEstSizeBytes / 1024 / 1024 / 950 >= 4) {
NavitDialogs.sendDialogMessage(NavitDialogs.MSG_TOAST_LONG, null,
- Navit.getInstance().getTstring(R.string.map_download_oversize),
+ getTstring(R.string.map_download_oversize),
-1, 0, 0);
return true;
}
@@ -219,25 +219,25 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
return true;
}
- private void askForMapDeletion(final String map_location) {
+ private void askForMapDeletion(final String mapLocation) {
AlertDialog.Builder deleteMapBox = new AlertDialog.Builder(this);
- deleteMapBox.setTitle(Navit.getInstance().getTstring(R.string.map_delete));
+ deleteMapBox.setTitle(getTstring(R.string.map_delete));
deleteMapBox.setCancelable(true);
- NavitMap maptoDelete = new NavitMap(map_location);
+ NavitMap maptoDelete = new NavitMap(mapLocation);
deleteMapBox.setMessage(
- maptoDelete.mapName + " " + String.valueOf(maptoDelete.size() / 1024 / 1024)
+ maptoDelete.mMapName + " " + maptoDelete.size() / 1024 / 1024
+ "MB");
// TRANS
- deleteMapBox.setPositiveButton(Navit.getInstance().getTstring(R.string.yes),
+ deleteMapBox.setPositiveButton(getTstring(R.string.yes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Log.d(TAG, "Delete Map");
- Message msg = Message.obtain(Navit.getInstance().getNavitGraphics().callback_handler,
- NavitGraphics.msg_type.CLB_DELETE_MAP.ordinal());
+ Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_DELETE_MAP.ordinal());
Bundle b = new Bundle();
- b.putString("title", map_location);
+ b.putString("title", mapLocation);
msg.setData(b);
msg.sendToTarget();
finish();
@@ -245,7 +245,7 @@ public class NavitDownloadSelectMapActivity extends ExpandableListActivity {
});
// TRANS
- deleteMapBox.setNegativeButton((Navit.getInstance().getTstring(R.string.no)),
+ deleteMapBox.setNegativeButton((getTstring(R.string.no)),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Log.d(TAG, "don't delete map");
diff --git a/navit/android/src/org/navitproject/navit/NavitGraphics.java b/navit/android/src/org/navitproject/navit/NavitGraphics.java
index 22b9e8ca3..67fe2615e 100644
--- a/navit/android/src/org/navitproject/navit/NavitGraphics.java
+++ b/navit/android/src/org/navitproject/navit/NavitGraphics.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2008 Navit Team
*
@@ -19,10 +19,15 @@
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;
import android.graphics.Bitmap;
@@ -32,9 +37,11 @@ import android.graphics.Paint;
import android.graphics.Path;
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.support.annotation.RequiresApi;
import android.support.v4.view.ViewConfigurationCompat;
import android.util.Log;
import android.view.ContextMenu;
@@ -46,201 +53,223 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowInsets;
+import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
-import java.io.File;
-import java.lang.reflect.Method;
+
import java.util.ArrayList;
+import java.util.List;
-public class NavitGraphics {
+class NavitGraphics {
private static final String TAG = "NavitGraphics";
- private final NavitGraphics parent_graphics;
- private final ArrayList<NavitGraphics> overlays = new ArrayList<NavitGraphics>();
- private int bitmap_w;
- private int bitmap_h;
- private int pos_x;
- private int pos_y;
- private int pos_wraparound;
- private int overlay_disabled;
- private int bgcolor;
- private float trackball_x;
- private float trackball_y;
- private int padding_left = 0;
- private int padding_right = 0;
- private int padding_top = 0;
- private int padding_bottom = 0;
- private View view;
- private SystemBarTintView leftTintView;
- private SystemBarTintView rightTintView;
- private SystemBarTintView topTintView;
- private SystemBarTintView bottomTintView;
- private FrameLayout frameLayout;
- private RelativeLayout relativelayout;
- private NavitCamera camera = null;
- private Navit activity;
- private static Boolean in_map = false;
- // for menu key
- private static final long time_for_long_press = 300L;
-
-
- private Handler timer_handler = new Handler();
-
- public void setBackgroundColor(int bgcolor) {
- this.bgcolor = bgcolor;
- if (leftTintView != null) {
- leftTintView.setBackgroundColor(bgcolor);
+ private static final long TIME_FOR_LONG_PRESS = 300L;
+ private final NavitGraphics mParentGraphics;
+ private final ArrayList<NavitGraphics> mOverlays = new ArrayList<>();
+ private int mBitmapWidth;
+ private int mBitmapHeight;
+ private int mPosX;
+ private int mPosY;
+ private int mPosWraparound;
+ private int mOverlayDisabled;
+ private int mBgColor;
+ private float mTrackballX;
+ private float mTrackballY;
+ private int mPaddingLeft;
+ private int mPaddingRight;
+ private int mPaddingTop;
+ private int mPaddingBottom;
+ private View mView;
+ static final Handler sCallbackHandler = new CallBackHandler();
+ private SystemBarTintView mLeftTintView;
+ private SystemBarTintView mRightTintView;
+ private SystemBarTintView mTopTintView;
+ private SystemBarTintView mBottomTintView;
+ private FrameLayout mFrameLayout;
+ private RelativeLayout mRelativeLayout;
+ private NavitCamera mCamera;
+ private Navit mActivity;
+ private static boolean sInMap;
+ private boolean mTinting;
+
+
+ void setBackgroundColor(int bgcolor) {
+ this.mBgColor = bgcolor;
+ if (mLeftTintView != null) {
+ mLeftTintView.setBackgroundColor(bgcolor);
}
- if (rightTintView != null) {
- rightTintView.setBackgroundColor(bgcolor);
+ if (mRightTintView != null) {
+ mRightTintView.setBackgroundColor(bgcolor);
}
- if (topTintView != null) {
- topTintView.setBackgroundColor(bgcolor);
+ if (mTopTintView != null) {
+ mTopTintView.setBackgroundColor(bgcolor);
}
- if (bottomTintView != null) {
- bottomTintView.setBackgroundColor(bgcolor);
+ if (mBottomTintView != null) {
+ mBottomTintView.setBackgroundColor(bgcolor);
}
}
- private void SetCamera(int use_camera) {
- if (use_camera != 0 && camera == null) {
- // activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
+ private void setCamera(int useCamera) {
+ if (useCamera != 0 && mCamera == null) {
+ // mActivity.requestWindowFeature(Window.FEATURE_NO_TITLE);
addCamera();
addCameraView();
}
}
/**
- * @brief Adds a camera.
+ * Adds a camera.
*
- * This method does not create the view for the camera. This must be done separately by calling
- * {@link #addCameraView()}.
+ * <p>This method does not create the view for the camera. This must be done separately by calling
+ * {@link #addCameraView()}.</p>
*/
private void addCamera() {
- camera = new NavitCamera(activity);
+ mCamera = new NavitCamera(mActivity);
}
- /**
- * @brief Adds a view for the camera.
- *
- * If {@link #camera} is null, this method is a no-op.
- */
private void addCameraView() {
- if (camera != null) {
- relativelayout.addView(camera);
- relativelayout.bringChildToFront(view);
+ if (mCamera != null) {
+ mRelativeLayout.addView(mCamera);
+ mRelativeLayout.bringChildToFront(mView);
}
}
private Rect get_rect() {
Rect ret = new Rect();
- ret.left = pos_x;
- ret.top = pos_y;
- if (pos_wraparound != 0) {
+ ret.left = mPosX;
+ ret.top = mPosY;
+ if (mPosWraparound != 0) {
if (ret.left < 0) {
- ret.left += parent_graphics.bitmap_w;
+ ret.left += mParentGraphics.mBitmapWidth;
}
if (ret.top < 0) {
- ret.top += parent_graphics.bitmap_h;
+ ret.top += mParentGraphics.mBitmapHeight;
}
}
- ret.right = ret.left + bitmap_w;
- ret.bottom = ret.top + bitmap_h;
- if (pos_wraparound != 0) {
- if (bitmap_w < 0) {
- ret.right = ret.left + bitmap_w + parent_graphics.bitmap_w;
+ ret.right = ret.left + mBitmapWidth;
+ ret.bottom = ret.top + mBitmapHeight;
+ if (mPosWraparound != 0) {
+ if (mBitmapWidth < 0) {
+ ret.right = ret.left + mBitmapWidth + mParentGraphics.mBitmapWidth;
}
- if (bitmap_h < 0) {
- ret.bottom = ret.top + bitmap_h + parent_graphics.bitmap_h;
+ if (mBitmapHeight < 0) {
+ ret.bottom = ret.top + mBitmapHeight + mParentGraphics.mBitmapHeight;
}
}
return ret;
}
private class NavitView extends View implements Runnable, MenuItem.OnMenuItemClickListener {
- int touch_mode = NONE;
- float oldDist = 0;
+ int mTouchMode = NONE;
+ float mOldDist = 0;
static final int NONE = 0;
static final int DRAG = 1;
static final int ZOOM = 2;
static final int PRESSED = 3;
- Method eventGetX = null;
- Method eventGetY = null;
+ PointF mPressedPosition = null;
- PointF mPressedPosition = null;
-
- public NavitView(Context context) {
+ NavitView(Context context) {
super(context);
- try {
- eventGetX = android.view.MotionEvent.class.getMethod("getX", int.class);
- eventGetY = android.view.MotionEvent.class.getMethod("getY", int.class);
- } catch (Exception e) {
- Log.e(TAG, "Multitouch zoom not supported");
+ }
+
+ public void onWindowFocusChanged(boolean hasWindowFocus) {
+ Log.v(TAG,"onWindowFocusChanged = " + hasWindowFocus);
+ // beter aanroepen in Navit of appconfig ?
+ if (Navit.sShowSoftKeyboardShowing && hasWindowFocus) {
+ InputMethodManager imm = (InputMethodManager) mActivity
+ .getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.showSoftInput(this,InputMethodManager.SHOW_FORCED);
+ }
+ if (Navit.sShowSoftKeyboardShowing && !hasWindowFocus) {
+ InputMethodManager imm = (InputMethodManager) mActivity
+ .getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(this.getWindowToken(), 0);
}
}
- @Override
- @TargetApi(20)
- public WindowInsets onApplyWindowInsets (WindowInsets insets) {
- /*
- * We're skipping the top inset here because it appears to have a bug on most Android versions tested,
- * causing it to report between 24 and 64 dip more than what is actually occupied by the system UI.
- * The top inset is retrieved in handleResize(), with logic depending on the platform version.
- */
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT_WATCH) {
- padding_left = insets.getSystemWindowInsetLeft();
- padding_right = insets.getSystemWindowInsetRight();
- padding_bottom = insets.getSystemWindowInsetBottom();
+
+ @TargetApi(21)
+ public WindowInsets onApplyWindowInsets(WindowInsets insets) {
+ Log.d(TAG,"onApplyWindowInsets");
+ if (mTinting) {
+ mPaddingLeft = insets.getSystemWindowInsetLeft();
+ mPaddingRight = insets.getSystemWindowInsetRight();
+ mPaddingBottom = insets.getSystemWindowInsetBottom();
+ mPaddingTop = insets.getSystemWindowInsetTop();
+ Log.v(TAG, String.format("Padding -1a- left=%d top=%d right=%d bottom=%d",
+ mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom));
+ int width = this.getWidth();
+ int height = this.getHeight();
+ if (width > 0 && height > 0) {
+ adjustSystemBarsTintingViews();
+ sizeChangedCallback(mSizeChangedCallbackID, width, height);
+ }
}
- return super.onApplyWindowInsets(insets);
+ return insets;
}
+ private static final int MENU_DRIVE_HERE = 1;
+ private static final int MENU_VIEW = 2;
+ private static final int MENU_CANCEL = 3;
+
@Override
protected void onCreateContextMenu(ContextMenu menu) {
super.onCreateContextMenu(menu);
-
- String clickCoord = getCoordForPoint(0, (int)mPressedPosition.x, (int)mPressedPosition.y);
- menu.setHeaderTitle(activity.getTstring(R.string.position_popup_title) + " " + clickCoord);
- menu.add(1, 1, NONE, activity.getTstring(R.string.position_popup_drive_here))
+ String clickCoord = getCoordForPoint((int)mPressedPosition.x, (int)mPressedPosition.y, false);
+ menu.setHeaderTitle(NavitAppConfig.getTstring(R.string.position_popup_title) + " " + clickCoord);
+ menu.add(1, MENU_DRIVE_HERE, NONE, NavitAppConfig.getTstring(R.string.position_popup_drive_here))
.setOnMenuItemClickListener(this);
- menu.add(1, 2, NONE, activity.getTstring(R.string.cancel)).setOnMenuItemClickListener(this);
+ Uri intentUri = Uri.parse("geo:" + getCoordForPoint((int)mPressedPosition.x,
+ (int)mPressedPosition.y, true));
+ Intent mContextMenuMapViewIntent = new Intent(Intent.ACTION_VIEW, intentUri);
+
+ PackageManager packageManager = this.getContext().getPackageManager();
+ List<ResolveInfo> activities = packageManager.queryIntentActivities(mContextMenuMapViewIntent,
+ PackageManager.MATCH_DEFAULT_ONLY);
+ boolean isIntentSafe = (activities.size() > 0); // at least one candidate receiver
+ if (isIntentSafe) { // add view with external app option
+ menu.add(1, MENU_VIEW, NONE, NavitAppConfig.getTstring(R.string.position_popup_view))
+ .setOnMenuItemClickListener(this);
+ } else {
+ Log.w(TAG, "No application available to handle ACTION_VIEW intent, option not displayed");
+ }
+ menu.add(1, MENU_CANCEL, NONE, getTstring(R.string.cancel)).setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item) {
- switch (item.getItemId()) {
- case 1:
- Message msg = Message.obtain(callback_handler, msg_type.CLB_SET_DISPLAY_DESTINATION.ordinal(),
- (int)mPressedPosition.x, (int)mPressedPosition.y);
- msg.sendToTarget();
- break;
+ int itemId = item.getItemId();
+ if (itemId == MENU_DRIVE_HERE) {
+ Message msg = Message.obtain(sCallbackHandler, MsgType.CLB_SET_DISPLAY_DESTINATION.ordinal(),
+ (int) mPressedPosition.x, (int) mPressedPosition.y);
+ msg.sendToTarget();
+ } else if (itemId == MENU_VIEW) {
+ Uri intentUri = Uri.parse("geo:" + getCoordForPoint((int) mPressedPosition.x,
+ (int) mPressedPosition.y, true));
+ Intent mContextMenuMapViewIntent = new Intent(Intent.ACTION_VIEW, intentUri);
+ if (mContextMenuMapViewIntent.resolveActivity(this.getContext().getPackageManager()) != null) {
+ this.getContext().startActivity(mContextMenuMapViewIntent);
+ } else {
+ Log.w(TAG, "ACTION_VIEW intent is not handled by any application, discarding...");
+ }
}
- return false;
+ return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
- canvas.drawBitmap(draw_bitmap, pos_x, pos_y, null);
- if (overlay_disabled == 0) {
+ canvas.drawBitmap(mDrawBitmap, mPosX, mPosY, null);
+ if (mOverlayDisabled == 0) {
// assume we ARE in map view mode!
- in_map = true;
- for (NavitGraphics overlay : overlays) {
- if (overlay.overlay_disabled == 0) {
+ sInMap = true;
+ for (NavitGraphics overlay : mOverlays) {
+ if (overlay.mOverlayDisabled == 0) {
Rect r = overlay.get_rect();
- canvas.drawBitmap(overlay.draw_bitmap, r.left, r.top, null);
- }
- }
- } else {
- if (Navit.show_soft_keyboard) {
- if (Navit.mgr != null) {
- Navit.mgr.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT);
- Navit.show_soft_keyboard_now_showing = true;
- // clear the variable now, keyboard will stay on screen until backbutton pressed
- Navit.show_soft_keyboard = false;
+ canvas.drawBitmap(overlay.mDrawBitmap, r.left, r.top, null);
}
}
}
@@ -249,33 +278,23 @@ public 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.d(TAG, "onSizeChanged density=" + Navit.metrics.density);
- Log.d(TAG, "onSizeChanged scaledDensity=" + Navit.metrics.scaledDensity);
+ 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);
+ mBitmapWidth = w;
+ mBitmapHeight = h;
handleResize(w, h);
+ sizeChangedCallback(mSizeChangedCallbackID, w, h);
}
- void do_longpress_action() {
- Log.d(TAG, "do_longpress_action enter");
-
- activity.openContextMenu(this);
+ void doLongpressAction() {
+ Log.d(TAG, "doLongpressAction enter");
+ mActivity.openContextMenu(this);
}
- private int getActionField(String fieldname, Object obj) {
- int ret_value = -999;
- try {
- java.lang.reflect.Field field = android.view.MotionEvent.class.getField(fieldname);
- try {
- ret_value = field.getInt(obj);
- } catch (Exception e) {
- e.printStackTrace();
- }
- } catch (NoSuchFieldException ex) {
- ex.printStackTrace();
- }
- return ret_value;
- }
@SuppressLint("ClickableViewAccessibility")
@Override
@@ -283,220 +302,153 @@ public class NavitGraphics {
super.onTouchEvent(event);
int x = (int) event.getX();
int y = (int) event.getY();
-
- int _ACTION_POINTER_UP_ = getActionField("ACTION_POINTER_UP", event);
- int _ACTION_POINTER_DOWN_ = getActionField("ACTION_POINTER_DOWN", event);
- int _ACTION_MASK_ = getActionField("ACTION_MASK", event);
-
- int switch_value = event.getAction();
- if (_ACTION_MASK_ != -999) {
- switch_value = (event.getAction() & _ACTION_MASK_);
- }
-
- if (switch_value == MotionEvent.ACTION_DOWN) {
- touch_mode = PRESSED;
- if (!in_map) {
- ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
+ int switchValue = (event.getActionMasked());
+ Log.d(TAG, "ACTION_ value = " + switchValue);
+
+ if (switchValue == MotionEvent.ACTION_DOWN) {
+ mTouchMode = PRESSED;
+ Log.d(TAG, "ACTION_DOWN mode PRESSED");
+ if (!sInMap) {
+ buttonCallback(mButtonCallbackID, 1, 1, x, y); // down
}
mPressedPosition = new PointF(x, y);
- postDelayed(this, time_for_long_press);
- } else if ((switch_value == MotionEvent.ACTION_UP) || (switch_value == _ACTION_POINTER_UP_)) {
- Log.d(TAG, "ACTION_UP");
+ postDelayed(this, TIME_FOR_LONG_PRESS);
- switch (touch_mode) {
+ } else if (switchValue == MotionEvent.ACTION_POINTER_DOWN) {
+ mOldDist = spacing(event);
+ if (mOldDist > 2f) {
+ mTouchMode = ZOOM;
+ Log.d(TAG, "ACTION_DOWN mode ZOOM started");
+ }
+ } else if (switchValue == MotionEvent.ACTION_UP) {
+ Log.d(TAG, "ACTION_UP");
+ switch (mTouchMode) {
case DRAG:
Log.d(TAG, "onTouch move");
-
- MotionCallback(MotionCallbackID, x, y);
- ButtonCallback(ButtonCallbackID, 0, 1, x, y); // up
-
- break;
- case ZOOM:
- float newDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- float scale = 0;
- if (newDist > 10f) {
- scale = newDist / oldDist;
- }
-
- if (scale > 1.3) {
- // zoom in
- CallbackMessageChannel(1, null);
- } else if (scale < 0.8) {
- // zoom out
- CallbackMessageChannel(2, null);
- }
+ motionCallback(mMotionCallbackID, x, y);
+ buttonCallback(mButtonCallbackID, 0, 1, x, y); // up
break;
case PRESSED:
- if (in_map) {
- ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
+ if (sInMap) {
+ buttonCallback(mButtonCallbackID, 1, 1, x, y); // down
}
- ButtonCallback(ButtonCallbackID, 0, 1, x, y); // up
-
+ buttonCallback(mButtonCallbackID, 0, 1, x, y); // up
break;
+ default:
+ Log.i(TAG, "Unexpected touchmode: " + mTouchMode);
}
- touch_mode = NONE;
- } else if (switch_value == MotionEvent.ACTION_MOVE) {
- switch (touch_mode) {
+ mTouchMode = NONE;
+ } else if (switchValue == MotionEvent.ACTION_MOVE) {
+ switch (mTouchMode) {
case DRAG:
- MotionCallback(MotionCallbackID, x, y);
+ motionCallback(mMotionCallbackID, x, y);
break;
case ZOOM:
- float newDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- float scale = newDist / oldDist;
- Log.d(TAG, "New scale = " + scale);
- if (scale > 1.2) {
- // zoom in
- CallbackMessageChannel(1, "");
- oldDist = newDist;
- } else if (scale < 0.8) {
- oldDist = newDist;
- // zoom out
- CallbackMessageChannel(2, "");
- }
+ doZoom(event);
break;
case PRESSED:
Log.d(TAG, "Start drag mode");
if (spacing(mPressedPosition, new PointF(event.getX(), event.getY())) > 20f) {
- ButtonCallback(ButtonCallbackID, 1, 1, x, y); // down
- touch_mode = DRAG;
+ buttonCallback(mButtonCallbackID, 1, 1, x, y); // down
+ mTouchMode = DRAG;
}
break;
- }
- } else if (switch_value == _ACTION_POINTER_DOWN_) {
- oldDist = spacing(getFloatValue(event, 0), getFloatValue(event, 1));
- if (oldDist > 2f) {
- touch_mode = ZOOM;
+ default:
+ Log.i(TAG, "Unexpected touchmode: " + mTouchMode);
}
}
return true;
}
+ private void doZoom(MotionEvent event) {
+ if (event.findPointerIndex(0) == -1 || event.findPointerIndex(1) == -1) {
+ Log.e(TAG,"missing pointer");
+ return;
+ }
+ float newDist = spacing(event);
+ float scale;
+ if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
+ scale = newDist / mOldDist;
+ Log.v(TAG, "New scale = " + scale);
+ if (scale > 1.2) {
+ // zoom in
+ callbackMessageChannel(1, "");
+ mOldDist = newDist;
+ } else if (scale < 0.8) {
+ mOldDist = newDist;
+ // zoom out
+ callbackMessageChannel(2, "");
+ }
+ }
+ }
+
+ private float spacing(MotionEvent event) {
+ float x = event.getX(0) - event.getX(1);
+ float y = event.getY(0) - event.getY(1);
+ return (float) Math.sqrt(x * x + y * y);
+ }
+
private float spacing(PointF a, PointF b) {
float x = a.x - b.x;
float y = a.y - b.y;
return (float)Math.sqrt(x * x + y * y);
}
- private PointF getFloatValue(Object instance, Object argument) {
- PointF pos = new PointF(0,0);
-
- if (eventGetX != null && eventGetY != null) {
- try {
- Float x = (java.lang.Float) eventGetX.invoke(instance, argument);
- Float y = (java.lang.Float) eventGetY.invoke(instance, argument);
- pos.set(x, y);
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- return pos;
- }
-
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
- int i;
- String s = null;
- long interval_for_long_press = 200L;
- i = event.getUnicodeChar();
- if (i == 0) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_DEL:
- s = String.valueOf((char) 8);
- break;
- case KeyEvent.KEYCODE_MENU:
- if (!in_map) {
- // if last menukeypress is less than 0.2 seconds away then count longpress
- if ((System.currentTimeMillis() - Navit.last_pressed_menu_key) < interval_for_long_press) {
- Navit.time_pressed_menu_key = Navit.time_pressed_menu_key
- + (System.currentTimeMillis() - Navit.last_pressed_menu_key);
- // on long press let softkeyboard popup
- if (Navit.time_pressed_menu_key > time_for_long_press) {
- Navit.show_soft_keyboard = true;
- Navit.time_pressed_menu_key = 0L;
- // need to draw to get the keyboard showing
- this.postInvalidate();
- }
- } else {
- Navit.time_pressed_menu_key = 0L;
- }
- Navit.last_pressed_menu_key = System.currentTimeMillis();
- // if in menu view:
- // use as OK (Enter) key
- // dont use menu key here (use it in onKeyUp)
- return true;
- } else {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 1);
- return true;
- }
- case KeyEvent.KEYCODE_SEARCH:
- /* Handle event in Main Activity if map is shown */
- if (in_map) {
- return false;
- }
-
- s = String.valueOf((char) 19);
- break;
- case KeyEvent.KEYCODE_BACK:
- s = String.valueOf((char) 27);
- break;
- case KeyEvent.KEYCODE_CALL:
- s = String.valueOf((char) 3);
- break;
- case KeyEvent.KEYCODE_VOLUME_UP:
- if (!in_map) {
- // if in menu view:
- // use as UP key
- s = String.valueOf((char) 16);
- } else {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 21);
- return false;
- }
- break;
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- if (!in_map) {
- // if in menu view:
- // use as DOWN key
- s = String.valueOf((char) 14);
- } else {
- // if on map view:
- // volume DOWN
- //s = java.lang.String.valueOf((char) 4);
- return false;
- }
- break;
- case KeyEvent.KEYCODE_DPAD_CENTER:
- s = String.valueOf((char) 13);
- break;
- case KeyEvent.KEYCODE_DPAD_DOWN:
- s = String.valueOf((char) 14);
- break;
- case KeyEvent.KEYCODE_DPAD_LEFT:
- s = String.valueOf((char) 2);
- break;
- case KeyEvent.KEYCODE_DPAD_RIGHT:
- s = String.valueOf((char) 6);
- break;
- case KeyEvent.KEYCODE_DPAD_UP:
- s = String.valueOf((char) 16);
- break;
- }
- } else if (i == 10) {
- s = java.lang.String.valueOf((char) 13);
+ Log.d(TAG,"onkeydown = " + keyCode);
+ String keyStr = null;
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_ENTER:
+ case KeyEvent.KEYCODE_DPAD_CENTER:
+ keyStr = String.valueOf((char) 13);
+ break;
+ case KeyEvent.KEYCODE_DEL:
+ keyStr = String.valueOf((char) 8);
+ break;
+ //case KeyEvent.KEYCODE_MENU:
+ // if (!sInMap) {
+ // this.postInvalidate();
+ // return true;
+ // }
+ // break;
+ case KeyEvent.KEYCODE_SEARCH:
+ /* Handle event in Main Activity if map is shown */
+ if (!sInMap) {
+ keyStr = String.valueOf((char) 19);
+ }
+ break;
+ case KeyEvent.KEYCODE_BACK:
+ keyStr = String.valueOf((char) 27);
+ break;
+ case KeyEvent.KEYCODE_CALL:
+ keyStr = String.valueOf((char) 3);
+ break;
+ case KeyEvent.KEYCODE_DPAD_DOWN:
+ keyStr = String.valueOf((char) 14);
+ break;
+ case KeyEvent.KEYCODE_DPAD_LEFT:
+ keyStr = String.valueOf((char) 2);
+ break;
+ case KeyEvent.KEYCODE_DPAD_RIGHT:
+ keyStr = String.valueOf((char) 6);
+ break;
+ case KeyEvent.KEYCODE_DPAD_UP:
+ keyStr = String.valueOf((char) 16);
+ break;
+ default:
+ Log.v(TAG, "keycode: " + keyCode);
}
-
- if (s != null) {
- KeypressCallback(KeypressCallbackID, s);
+ if (keyStr != null) {
+ keypressCallback(mKeypressCallbackID, keyStr);
+ return true;
}
- return true;
+ return false;
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
+ Log.d(TAG,"onkeyUp = " + keyCode);
int i;
String s = null;
i = event.getUnicodeChar();
@@ -504,44 +456,39 @@ public class NavitGraphics {
if (i == 0) {
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
- return (!in_map);
case KeyEvent.KEYCODE_VOLUME_DOWN:
- return (!in_map);
+ return (!sInMap);
case KeyEvent.KEYCODE_SEARCH:
/* Handle event in Main Activity if map is shown */
- if (in_map) {
+ if (sInMap) {
return false;
}
break;
case KeyEvent.KEYCODE_BACK:
- if (Navit.show_soft_keyboard_now_showing) {
- Navit.show_soft_keyboard_now_showing = false;
+ if (Navit.sShowSoftKeyboardShowing) {
+ Navit.sShowSoftKeyboardShowing = false;
}
//s = java.lang.String.valueOf((char) 27);
return true;
case KeyEvent.KEYCODE_MENU:
- if (!in_map) {
- if (Navit.show_soft_keyboard_now_showing) {
- // if soft keyboard showing on screen, dont use menu button as select key
- } else {
+ if (!sInMap) {
+ if (!Navit.sShowSoftKeyboardShowing) {
// if in menu view:
// use as OK (Enter) key
s = String.valueOf((char) 13);
- }
+ } // if soft keyboard showing on screen, dont use menu button as select key
} else {
- // if on map view:
- // volume UP
- //s = java.lang.String.valueOf((char) 1);
return false;
}
break;
+ default:
+ Log.v(TAG, "keycode: " + keyCode);
}
} else if (i != 10) {
s = java.lang.String.valueOf((char) i);
}
-
if (s != null) {
- KeypressCallback(KeypressCallbackID, s);
+ keypressCallback(mKeypressCallbackID, s);
}
return true;
}
@@ -551,7 +498,7 @@ public class NavitGraphics {
String s;
if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
s = event.getCharacters();
- KeypressCallback(KeypressCallbackID, s);
+ keypressCallback(mKeypressCallbackID, s);
return true;
}
return super.onKeyMultiple(keyCode, count, event);
@@ -564,424 +511,361 @@ public class NavitGraphics {
s = java.lang.String.valueOf((char) 13);
}
if (event.getAction() == android.view.MotionEvent.ACTION_MOVE) {
- trackball_x += event.getX();
- trackball_y += event.getY();
- if (trackball_x <= -1) {
+ mTrackballX += event.getX();
+ mTrackballY += event.getY();
+ if (mTrackballX <= -1) {
s = java.lang.String.valueOf((char) 2);
- trackball_x += 1;
+ mTrackballX += 1;
}
- if (trackball_x >= 1) {
+ if (mTrackballX >= 1) {
s = java.lang.String.valueOf((char) 6);
- trackball_x -= 1;
+ mTrackballX -= 1;
}
- if (trackball_y <= -1) {
+ if (mTrackballY <= -1) {
s = java.lang.String.valueOf((char) 16);
- trackball_y += 1;
+ mTrackballY += 1;
}
- if (trackball_y >= 1) {
+ if (mTrackballY >= 1) {
s = java.lang.String.valueOf((char) 14);
- trackball_y -= 1;
+ mTrackballY -= 1;
}
}
if (s != null) {
- KeypressCallback(KeypressCallbackID, s);
+ keypressCallback(mKeypressCallbackID, s);
}
return true;
}
public void run() {
- if (in_map && touch_mode == PRESSED) {
- do_longpress_action();
- touch_mode = NONE;
+ if (sInMap && mTouchMode == PRESSED) {
+ doLongpressAction();
+ mTouchMode = NONE;
}
}
-
}
private class SystemBarTintView extends View {
public SystemBarTintView(Context context) {
super(context);
- this.setBackgroundColor(bgcolor);
+ this.setBackgroundColor(mBgColor);
}
}
- public NavitGraphics(final Activity activity, NavitGraphics parent, int x, int y, int w, int h,
- int wraparound, int use_camera) {
+ NavitGraphics(final Activity navit, NavitGraphics parent, int x, int y, int w, int h,
+ int wraparound, int useCamera) {
if (parent == null) {
- if (use_camera != 0) {
+ if (useCamera != 0) {
addCamera();
}
- setActivity(activity);
+ setmActivity((Navit)navit);
} else {
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- bitmap_w = w;
- bitmap_h = h;
- pos_x = x;
- pos_y = y;
- pos_wraparound = wraparound;
- draw_canvas = new Canvas(draw_bitmap);
- parent.overlays.add(this);
+ mDrawBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+ mBitmapWidth = w;
+ mBitmapHeight = h;
+ mPosX = x;
+ mPosY = y;
+ mPosWraparound = wraparound;
+ mDrawCanvas = new Canvas(mDrawBitmap);
+ parent.mOverlays.add(this);
}
- parent_graphics = parent;
+ mParentGraphics = parent;
}
/**
- * @brief Sets up the main activity.
- *
- * @param activity The main activity.
+ * Sets up the main view.
+ * @param navit The main activity.
*/
- protected void setActivity(final Activity activity) {
- if (Navit.graphics == null)
- Navit.graphics = this;
- this.activity = (Navit) activity;
- view = new NavitView(activity);
- view.setClickable(false);
- view.setFocusable(true);
- view.setFocusableInTouchMode(true);
- view.setKeepScreenOn(true);
- relativelayout = new RelativeLayout(activity);
+ private void setmActivity(final Navit navit) {
+ this.mActivity = navit;
+ mView = new NavitView(mActivity);
+ mView.setClickable(false);
+ mView.setFocusable(true);
+ mView.setFocusableInTouchMode(true);
+ mView.setKeepScreenOn(true);
+ mRelativeLayout = new RelativeLayout(mActivity);
addCameraView();
- relativelayout.addView(view);
-
+ mRelativeLayout.addView(mView);
/* The navigational and status bar tinting code is meaningful only on API19+ */
- if (Build.VERSION.SDK_INT >= 19) {
- frameLayout = new FrameLayout(activity);
- frameLayout.addView(relativelayout);
- leftTintView = new SystemBarTintView(activity);
- rightTintView = new SystemBarTintView(activity);
- topTintView = new SystemBarTintView(activity);
- bottomTintView = new SystemBarTintView(activity);
- frameLayout.addView(leftTintView);
- frameLayout.addView(rightTintView);
- frameLayout.addView(topTintView);
- frameLayout.addView(bottomTintView);
- activity.setContentView(frameLayout);
+ mTinting = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
+
+ if (mTinting) {
+ mFrameLayout = new FrameLayout(mActivity);
+ mFrameLayout.addView(mRelativeLayout);
+ mLeftTintView = new SystemBarTintView(mActivity);
+ mRightTintView = new SystemBarTintView(mActivity);
+ mTopTintView = new SystemBarTintView(mActivity);
+ mBottomTintView = new SystemBarTintView(mActivity);
+ mFrameLayout.addView(mLeftTintView);
+ mFrameLayout.addView(mRightTintView);
+ mFrameLayout.addView(mTopTintView);
+ mFrameLayout.addView(mBottomTintView);
+ mActivity.setContentView(mFrameLayout);
} else {
- activity.setContentView(relativelayout);
+ mActivity.setContentView(mRelativeLayout);
}
-
- view.requestFocus();
+ mView.requestFocus();
}
- public enum msg_type {
+ 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
}
- static private final msg_type[] msg_values = msg_type.values();
+ private static final MsgType[] msg_values = MsgType.values();
- public final Handler callback_handler = new Handler() {
+ private static class CallBackHandler extends Handler {
public void handleMessage(Message msg) {
switch (msg_values[msg.what]) {
case CLB_ZOOM_IN:
- CallbackMessageChannel(1, "");
+ callbackMessageChannel(1, "");
break;
case CLB_ZOOM_OUT:
- CallbackMessageChannel(2, "");
+ callbackMessageChannel(2, "");
break;
case CLB_MOVE:
- MotionCallback(MotionCallbackID, msg.getData().getInt("x"), msg.getData().getInt("y"));
+ //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);
+ callbackMessageChannel(3, lat + "#" + lon + "#" + q);
break;
case CLB_SET_DISPLAY_DESTINATION:
int x = msg.arg1;
int y = msg.arg2;
- CallbackMessageChannel(4, "" + x + "#" + y);
+ callbackMessageChannel(4, "" + x + "#" + y);
break;
case CLB_CALL_CMD:
String cmd = msg.getData().getString(("cmd"));
- CallbackMessageChannel(5, cmd);
+ callbackMessageChannel(5, cmd);
break;
case CLB_BUTTON_UP:
- ButtonCallback(ButtonCallbackID, 0, 1, msg.getData().getInt("x"), msg.getData().getInt("y")); // up
+ //buttonCallback(mButtonCallbackID, 0, 1, msg.getData().getInt("x"), msg.getData().getInt("y"));
break;
case CLB_BUTTON_DOWN:
- // down
- ButtonCallback(ButtonCallbackID, 1, 1, msg.getData().getInt("x"), msg.getData().getInt("y"));
+ //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")));
+ callbackMessageChannel(6, msg.getData().getString(("title")));
break;
case CLB_DELETE_MAP:
- File toDelete = new File(msg.getData().getString(("title")));
- toDelete.delete();
- //fallthrough
+ //unload map before deleting it !!!
+ callbackMessageChannel(7, msg.getData().getString(("title")));
+ //remove commentlines below after testing
+ //File toDelete = new File(msg.getData().getString(("title")));
+ //toDelete.delete();
+ NavitUtils.removeFileIfExists(msg.getData().getString(("title")));
+ break;
case CLB_UNLOAD_MAP:
- CallbackMessageChannel(7, msg.getData().getString(("title")));
+ callbackMessageChannel(7, msg.getData().getString(("title")));
break;
+ case CLB_REDRAW:
+ default:
+ Log.d(TAG, "Unhandled callback : " + msg_values[msg.what]);
}
}
- };
+ }
- public native void SizeChangedCallback(int id, int x, int y);
- public native void PaddingChangedCallback(int id, int left, int right, int top, int bottom);
+ private native void sizeChangedCallback(long id, int x, int y);
- public native void KeypressCallback(int id, String s);
+ private native void paddingChangedCallback(long id, int left, int top, int right, int bottom);
- public native int CallbackMessageChannel(int i, String s);
+ private native void keypressCallback(long id, String s);
- public native void ButtonCallback(int id, int pressed, int button, int x, int y);
+ private static native int callbackMessageChannel(int i, String s);
- public native void MotionCallback(int id, int x, int y);
+ private native void buttonCallback(long id, int pressed, int button, int x, int y);
- private native String getCoordForPoint(int id, int x, int y);
+ private native void motionCallback(long id, int x, int y);
- public native String GetDefaultCountry(int id, String s);
+ private native String getCoordForPoint(int x, int y, boolean absolutCoord);
- public static native String[][] GetAllCountries();
+ static native String[][] getAllCountries();
- private Canvas draw_canvas;
- private Bitmap draw_bitmap;
- private int SizeChangedCallbackID;
- private int PaddingChangedCallbackID;
- private int ButtonCallbackID;
- private int MotionCallbackID;
- private int KeypressCallbackID;
+ private Canvas mDrawCanvas;
+ private Bitmap mDrawBitmap;
+ private long mSizeChangedCallbackID;
+ private long mPaddingChangedCallbackID;
+ private long mButtonCallbackID;
+ private long mMotionCallbackID;
+ private long mKeypressCallbackID;
/**
- * @brief Adjust views used to tint navigation and status bars.
+ * Adjust views used to tint navigation and status bars.
*
- * This method is called from handleResize.
+ * <p>This method is called from handleResize.
*
* It (re-)evaluates if and where the navigation bar is going to be shown, and calculates the
- * padding for objects which should not be obstructed.
+ * padding for objects which should not be obstructed.</p>
*
*/
private void adjustSystemBarsTintingViews() {
+
/* hide tint bars during update to prevent ugly effects */
- leftTintView.setVisibility(View.GONE);
- rightTintView.setVisibility(View.GONE);
- topTintView.setVisibility(View.GONE);
- bottomTintView.setVisibility(View.GONE);
+ mLeftTintView.setVisibility(View.GONE);
+ mRightTintView.setVisibility(View.GONE);
+ mTopTintView.setVisibility(View.GONE);
+ mBottomTintView.setVisibility(View.GONE);
- frameLayout.post(new Runnable() {
+ mFrameLayout.post(new Runnable() {
@Override
public void run() {
- FrameLayout.LayoutParams leftLayoutParams = new FrameLayout.LayoutParams(padding_left,
+ FrameLayout.LayoutParams leftLayoutParams = new FrameLayout.LayoutParams(mPaddingLeft,
LayoutParams.MATCH_PARENT, Gravity.BOTTOM | Gravity.LEFT);
- leftTintView.setLayoutParams(leftLayoutParams);
+ mLeftTintView.setLayoutParams(leftLayoutParams);
- FrameLayout.LayoutParams rightLayoutParams = new FrameLayout.LayoutParams(padding_right,
+ FrameLayout.LayoutParams rightLayoutParams = new FrameLayout.LayoutParams(mPaddingRight,
LayoutParams.MATCH_PARENT, Gravity.BOTTOM | Gravity.RIGHT);
- rightTintView.setLayoutParams(rightLayoutParams);
+ mRightTintView.setLayoutParams(rightLayoutParams);
FrameLayout.LayoutParams topLayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- padding_top, Gravity.TOP);
+ mPaddingTop, Gravity.TOP);
/* Prevent horizontal and vertical tint views from overlapping */
- topLayoutParams.setMargins(padding_left, 0, padding_right, 0);
- topTintView.setLayoutParams(topLayoutParams);
+ topLayoutParams.setMargins(mPaddingLeft, 0, mPaddingRight, 0);
+ mTopTintView.setLayoutParams(topLayoutParams);
FrameLayout.LayoutParams bottomLayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,
- padding_bottom, Gravity.BOTTOM);
+ mPaddingBottom, Gravity.BOTTOM);
/* Prevent horizontal and vertical tint views from overlapping */
- bottomLayoutParams.setMargins(padding_left, 0, padding_right, 0);
- bottomTintView.setLayoutParams(bottomLayoutParams);
+ bottomLayoutParams.setMargins(mPaddingLeft, 0, mPaddingRight, 0);
+ mBottomTintView.setLayoutParams(bottomLayoutParams);
/* show tint bars again */
- leftTintView.setVisibility(View.VISIBLE);
- rightTintView.setVisibility(View.VISIBLE);
- topTintView.setVisibility(View.VISIBLE);
- bottomTintView.setVisibility(View.VISIBLE);
+ mLeftTintView.setVisibility(View.VISIBLE);
+ mRightTintView.setVisibility(View.VISIBLE);
+ mTopTintView.setVisibility(View.VISIBLE);
+ mBottomTintView.setVisibility(View.VISIBLE);
}
});
- PaddingChangedCallback(PaddingChangedCallbackID, padding_left, padding_top, padding_right, padding_bottom);
+ paddingChangedCallback(mPaddingChangedCallbackID, mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
}
/**
- * @brief Handles resize events.
- *
- * This method is called whenever the main View is resized in any way. This is the case when its
- * {@code onSizeChanged()} event handler fires or when toggling Fullscreen mode.
+ * Handles resize events.
*
+ * <p>This method is called whenever the main View is resized in any way. This is the case when its
+ * {@code onSizeChanged()} event handler fires.</p>
*/
- @TargetApi(23)
- public void handleResize(int w, int h) {
- if (this.parent_graphics != null) {
- this.parent_graphics.handleResize(w, h);
- } else {
+ private void handleResize(int w, int h) {
+ if (this.mParentGraphics == null) {
Log.d(TAG, String.format("handleResize w=%d h=%d", w, h));
-
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
- /*
- * On API 23+ we can query window insets to determine the area which is obscured by the system bars.
- * This appears to have a bug, though, causing an inset to be reported for the navigation bar even
- * when it is not obstructing the window. Therefore, we are relying on the values previously obtained
- * by NavitView#onApplyWindowInsets(), though this is affected by a different bug. Luckily, the two
- * bugs appear to be complementary, allowing us to mix and match results.
- */
- if (view == null) {
- Log.w(TAG, "view is null, cannot update padding");
- } else {
- Log.d(TAG, String.format("view w=%d h=%d x=%.0f y=%.0f",
- view.getWidth(), view.getHeight(), view.getX(), view.getY()));
- if (view.getRootWindowInsets() == null)
- Log.w(TAG, "No root window insets, cannot update padding");
- else {
- Log.d(TAG, String.format("RootWindowInsets left=%d right=%d top=%d bottom=%d",
- view.getRootWindowInsets().getSystemWindowInsetLeft(),
- view.getRootWindowInsets().getSystemWindowInsetRight(),
- view.getRootWindowInsets().getSystemWindowInsetTop(),
- view.getRootWindowInsets().getSystemWindowInsetBottom()));
- padding_top = view.getRootWindowInsets().getSystemWindowInsetTop();
- }
+ if (mTinting) {
+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
+ resizePaddingKitkat();
}
- } else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT_WATCH) {
- /*
- * API 20-22 do not support root window insets, forcing us to make an educated guess about the
- * navigation bar height:
- *
- * The size is a platform default and does not change with rotation, but we have to figure out if it
- * applies, i.e. if the status bar is visible.
- *
- * The status bar is always visible unless we are in fullscreen mode. (Fortunately, none of the
- * versions affected by this support split screen mode, which would have further complicated things.)
- */
- if (activity.isFullscreen)
- padding_top = 0;
- else {
- Resources resources = view.getResources();
- int shid = resources.getIdentifier("status_bar_height", "dimen", "android");
- padding_top = (shid > 0) ? resources.getDimensionPixelSize(shid) : 0;
- }
- } else if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
- /*
- * API 19 does not support window insets at all, forcing us to do even more guessing than on API 20-22:
- *
- * All system bar sizes are platform defaults and do not change with rotation, but we have
- * to figure out which ones apply.
- *
- * Status bar visibility is as on API 20-22.
- *
- * The navigation bar is shown on devices that report they have no physical menu button. This seems to
- * work even on devices that allow disabling the physical buttons (and use the navigation bar, in which
- * case they report no physical menu button is available; tested with a OnePlus One running CyanogenMod).
- *
- * If shown, the navigation bar may appear on the side or at the bottom. The logic to determine this is
- * taken from AOSP RenderSessionImpl.findNavigationBar()
- * platform/frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/impl/RenderSessionImpl.java
- */
- Resources resources = view.getResources();
- int shid = resources.getIdentifier("status_bar_height", "dimen", "android");
- int adhid = resources.getIdentifier("action_bar_default_height", "dimen", "android");
- int nhid = resources.getIdentifier("navigation_bar_height", "dimen", "android");
- int nhlid = resources.getIdentifier("navigation_bar_height_landscape", "dimen", "android");
- int nwid = resources.getIdentifier("navigation_bar_width", "dimen", "android");
- int status_bar_height = (shid > 0) ? resources.getDimensionPixelSize(shid) : 0;
- int action_bar_default_height = (adhid > 0) ? resources.getDimensionPixelSize(adhid) : 0;
- int navigation_bar_height = (nhid > 0) ? resources.getDimensionPixelSize(nhid) : 0;
- int navigation_bar_height_landscape = (nhlid > 0) ? resources.getDimensionPixelSize(nhlid) : 0;
- int navigation_bar_width = (nwid > 0) ? resources.getDimensionPixelSize(nwid) : 0;
- Log.d(TAG, String.format(
- "status_bar_height=%d, action_bar_default_height=%d, navigation_bar_height=%d, "
- + "navigation_bar_height_landscape=%d, navigation_bar_width=%d",
- status_bar_height, action_bar_default_height, navigation_bar_height,
- navigation_bar_height_landscape, navigation_bar_width));
-
- if (activity == null) {
- Log.w(TAG, "Main Activity is not a Navit instance, cannot update padding");
- } else if (frameLayout != null) {
- /* frameLayout is only created on platforms supporting navigation and status bar tinting */
-
- Navit navit = activity;
- boolean isStatusShowing = !navit.isFullscreen;
- boolean isNavShowing = !ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(navit));
- Log.d(TAG, String.format("isStatusShowing=%b isNavShowing=%b", isStatusShowing, isNavShowing));
-
- boolean isLandscape = (navit.getResources().getConfiguration().orientation
- == Configuration.ORIENTATION_LANDSCAPE);
- boolean isNavAtBottom = (!isLandscape)
- || (navit.getResources().getConfiguration().smallestScreenWidthDp >= 600);
- Log.d(TAG, String.format("isNavAtBottom=%b (Configuration.smallestScreenWidthDp=%d, isLandscape=%b)",
- isNavAtBottom, navit.getResources().getConfiguration().smallestScreenWidthDp, isLandscape));
-
- padding_left = 0;
- padding_top = isStatusShowing ? status_bar_height : 0;
- padding_right = (isNavShowing && !isNavAtBottom) ? navigation_bar_width : 0;
- padding_bottom = (!(isNavShowing && isNavAtBottom)) ? 0 : (
- isLandscape ? navigation_bar_height_landscape : navigation_bar_height);
- }
- } else {
- /* API 18 and below does not support drawing under the system bars, padding is 0 all around */
- padding_left = 0;
- padding_right = 0;
- padding_top = 0;
- padding_bottom = 0;
+ adjustSystemBarsTintingViews(); // is incl paddingchangedcallback
}
+ }
+ }
- Log.d(TAG, String.format("Padding left=%d top=%d right=%d bottom=%d",
- padding_left, padding_top, padding_right, padding_bottom));
-
- adjustSystemBarsTintingViews();
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- draw_canvas = new Canvas(draw_bitmap);
- bitmap_w = w;
- bitmap_h = h;
- SizeChangedCallback(SizeChangedCallbackID, w, h);
+ @RequiresApi(api = Build.VERSION_CODES.KITKAT)
+ private void resizePaddingKitkat() {
+ /*
+ * API 19 does not support window insets.
+ *
+ * All system bar sizes are device defaults and do not change with rotation, but we have
+ * to figure out which ones apply.
+ *
+ * Status bar visibility is as on API 20-22.
+ *
+ * The navigation bar is shown on devices that report they have no physical menu button. This seems to
+ * work even on devices that allow disabling the physical buttons (and use the navigation bar, in which
+ * case they report no physical menu button is available; tested with a OnePlus One running CyanogenMod)
+ *
+ * If shown, the navigation bar may appear on the side or at the bottom. The logic to determine this is
+ * taken from AOSP RenderSessionImpl.findNavigationBar()
+ * platform/frameworks/base/tools/layoutlib/bridge/src/com/android/
+ * layoutlib/bridge/impl/RenderSessionImpl.java
+ */
+ mPaddingLeft = 0;
+ if (!sInMap) {
+ mPaddingTop = 0;
+ mPaddingRight = 0;
+ mPaddingBottom = 0;
+ return;
}
+ Resources resources = NavitAppConfig.sResources;
+ int shid = resources.getIdentifier("status_bar_height", "dimen", "android");
+ int nhid = resources.getIdentifier("navigation_bar_height", "dimen", "android");
+ int nhlid = resources.getIdentifier("navigation_bar_height_landscape", "dimen", "android");
+ int nwid = resources.getIdentifier("navigation_bar_width", "dimen", "android");
+ int statusBarHeight = (shid > 0) ? resources.getDimensionPixelSize(shid) : 0;
+ int navigationBarHeight = (nhid > 0) ? resources.getDimensionPixelSize(nhid) : 0;
+ int navigationBarHeightLandscape = (nhlid > 0) ? resources.getDimensionPixelSize(nhlid) : 0;
+ int navigationBarWidth = (nwid > 0) ? resources.getDimensionPixelSize(nwid) : 0;
+ Log.v(TAG, String.format("statusBarHeight=%d, navigationBarHeight=%d, "
+ + "navigationBarHeightLandscape=%d, navigationBarWidth=%d",
+ statusBarHeight, navigationBarHeight,
+ navigationBarHeightLandscape, navigationBarWidth));
+ boolean isStatusShowing = !mActivity.mIsFullscreen;
+ boolean isNavShowing = !ViewConfigurationCompat.hasPermanentMenuKey(ViewConfiguration.get(mActivity));
+ Log.v(TAG, String.format("isStatusShowing=%b isNavShowing=%b", isStatusShowing, isNavShowing));
+ boolean isLandscape = (mActivity.getResources().getConfiguration().orientation
+ == Configuration.ORIENTATION_LANDSCAPE);
+ boolean isNavAtBottom = (!isLandscape)
+ || (mActivity.getResources().getConfiguration().smallestScreenWidthDp >= 600);
+ Log.v(TAG, String.format("isNavAtBottom=%b (Config.smallestScreenWidthDp=%d, isLandscape=%b)",
+ isNavAtBottom, mActivity.getResources().getConfiguration().smallestScreenWidthDp, isLandscape));
+
+ mPaddingTop = isStatusShowing ? statusBarHeight : 0;
+ mPaddingRight = (isNavShowing && !isNavAtBottom) ? navigationBarWidth : 0;
+ mPaddingBottom = (!(isNavShowing && isNavAtBottom)) ? 0 : (
+ isLandscape ? navigationBarHeightLandscape : navigationBarHeight);
}
+
/**
- * @brief Returns whether the device has a hardware menu button.
+ * Returns whether the device has a hardware menu button.
*
- * Only Android versions starting with ICS (API version 14) support the API call to detect the presence of a
+ * <p>Only Android versions starting with ICS (API version 14) support the API call to detect the presence of a
* Menu button. On earlier Android versions, the following assumptions will be made: On API levels up to 10,
* this method will always return {@code true}, as these Android versions relied on devices having a physical
* Menu button. On API levels 11 through 13 (Honeycomb releases), this method will always return
- * {@code false}, as Honeycomb was a tablet-only release and did not require devices to have a Menu button.
+ * {@code false}, as Honeycomb was a tablet-only release and did not require devices to have a Menu button.</p>
*
- * Note that this method is not aware of non-standard mechanisms on some customized builds of Android. For
- * example, CyanogenMod has an option to add a menu button to the navigation bar. Even with that option,
- * this method will still return `false`.
+ * <p>Note that this method is not aware of non-standard mechanisms on some customized builds of Android</p>
*/
- public boolean hasMenuButton() {
+ boolean hasMenuButton() {
if (Build.VERSION.SDK_INT <= 10) {
return true;
} else {
if (Build.VERSION.SDK_INT <= 13) {
return false;
} else {
- return ViewConfiguration.get(activity.getApplication()).hasPermanentMenuKey();
+ return ViewConfiguration.get(mActivity.getApplication()).hasPermanentMenuKey();
}
}
}
- public void setSizeChangedCallback(int id) {
- SizeChangedCallbackID = id;
+ void setSizeChangedCallback(long id) {
+ mSizeChangedCallbackID = id;
}
- public void setPaddingChangedCallback(int id) {
- PaddingChangedCallbackID = id;
+ void setPaddingChangedCallback(long id) {
+ mPaddingChangedCallbackID = id;
}
- public void setButtonCallback(int id) {
- ButtonCallbackID = id;
+ void setButtonCallback(long id) {
+ Log.v(TAG,"set Buttononcallback");
+ mButtonCallbackID = id;
}
- public void setMotionCallback(int id) {
- MotionCallbackID = id;
- if (activity != null) {
- activity.setMotionCallback(id, this);
- }
+ void setMotionCallback(long id) {
+ mMotionCallbackID = id;
+ Log.v(TAG,"set Motioncallback");
}
- public void setKeypressCallback(int id) {
- KeypressCallbackID = id;
- // set callback id also in main intent (for menus)
- if (activity != null) {
- activity.setKeypressCallback(id, this);
- }
+ void setKeypressCallback(long id) {
+ Log.v(TAG,"set Keypresscallback");
+ mKeypressCallbackID = id;
}
@@ -1011,7 +895,7 @@ public class NavitGraphics {
path.lineTo(c[i], c[i + 1]);
}
//global_path.close();
- draw_canvas.drawPath(path, paint);
+ mDrawCanvas.drawPath(path, paint);
paint.setPathEffect(null);
}
@@ -1027,7 +911,7 @@ public class NavitGraphics {
path.lineTo(c[i], c[i + 1]);
}
//global_path.close();
- draw_canvas.drawPath(path, paint);
+ mDrawCanvas.drawPath(path, paint);
}
protected void draw_rectangle(Paint paint, int x, int y, int w, int h) {
@@ -1035,12 +919,12 @@ public class NavitGraphics {
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
//paint.setStrokeWidth(0);
- draw_canvas.drawRect(r, paint);
+ mDrawCanvas.drawRect(r, paint);
}
protected void draw_circle(Paint paint, int x, int y, int r) {
paint.setStyle(Paint.Style.STROKE);
- draw_canvas.drawCircle(x, y, r / 2, paint);
+ mDrawCanvas.drawCircle(x, y, r / 2, paint);
}
protected void draw_text(Paint paint, int x, int y, String text, int size, int dx, int dy, int bgcolor) {
@@ -1062,27 +946,27 @@ public class NavitGraphics {
paint.setColor(bgcolor);
paint.setStyle(Paint.Style.STROKE);
if (path == null) {
- draw_canvas.drawText(text, x, y, paint);
+ mDrawCanvas.drawText(text, x, y, paint);
} else {
- draw_canvas.drawTextOnPath(text, path, 0, 0, paint);
+ mDrawCanvas.drawTextOnPath(text, path, 0, 0, paint);
}
paint.setStyle(Paint.Style.FILL);
paint.setColor(oldcolor);
}
if (path == null) {
- draw_canvas.drawText(text, x, y, paint);
+ mDrawCanvas.drawText(text, x, y, paint);
} else {
- draw_canvas.drawTextOnPath(text, path, 0, 0, paint);
+ mDrawCanvas.drawTextOnPath(text, path, 0, 0, paint);
}
paint.clearShadowLayer();
}
protected void draw_image(Paint paint, int x, int y, Bitmap bitmap) {
- draw_canvas.drawBitmap(bitmap, x, y, null);
+ mDrawCanvas.drawBitmap(bitmap, x, y, null);
}
- /* takes an image and draws it on the screen as a prerendered maptile
+ /* takes an image and draws it on the screen as a prerendered maptile.
*
*
*
@@ -1119,56 +1003,82 @@ public class NavitGraphics {
matrix.preScale(scale, scale);
matrix.postTranslate(p0x, p0y);
matrix.postRotate(angle, p0x, p0y);
- draw_canvas.drawBitmap(bitmap, matrix, paint);
+ mDrawCanvas.drawBitmap(bitmap, matrix, paint);
}
}
/* These constants must be synchronized with enum draw_mode_num in graphics.h. */
- private static final int draw_mode_begin = 0;
- private static final int draw_mode_end = 1;
+ private static final int DRAW_MODE_BEGIN = 0;
+ private static final int DRAW_MODE_END = 1;
+ /* Used by the pedestrian plugin, draws without a mapbackground */
+ private static final int DRAW_MODE_BEGIN_CLEAR = 2;
protected void draw_mode(int mode) {
- if (mode == draw_mode_end) {
- if (parent_graphics == null) {
- view.invalidate();
+ if (mode == DRAW_MODE_END) {
+ if (mParentGraphics == null) {
+ mView.invalidate();
} else {
- parent_graphics.view.invalidate(get_rect());
+ mParentGraphics.mView.invalidate(get_rect());
}
}
- if (mode == draw_mode_begin && parent_graphics != null) {
- draw_bitmap.eraseColor(0);
+ if (mode == DRAW_MODE_BEGIN_CLEAR || (mode == DRAW_MODE_BEGIN && mParentGraphics != null)) {
+ mDrawBitmap.eraseColor(0);
}
}
protected void draw_drag(int x, int y) {
- pos_x = x;
- pos_y = y;
+ mPosX = x;
+ mPosY = y;
}
protected void overlay_disable(int disable) {
- Log.d(TAG,"overlay_disable: " + disable + "Parent: " + (parent_graphics != null));
+ Log.v(TAG,"overlay_disable: " + disable + ", Parent: " + (mParentGraphics != null));
// assume we are NOT in map view mode!
- if (parent_graphics == null) {
- in_map = (disable == 0);
+ // but this backfires when dragging the map
+ if (mParentGraphics == null) {
+ sInMap = (disable == 0);
+ workAroundForGuiInternal(sInMap);
}
- if (overlay_disabled != disable) {
- overlay_disabled = disable;
- if (parent_graphics != null) {
- parent_graphics.view.invalidate(get_rect());
+ if (mOverlayDisabled != disable) {
+ mOverlayDisabled = disable;
+ if (mParentGraphics != null) {
+ mParentGraphics.mView.invalidate(get_rect());
}
}
}
- protected void overlay_resize(int x, int y, int w, int h, int wraparound) {
- draw_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
- bitmap_w = w;
- bitmap_h = h;
- pos_x = x;
- pos_y = y;
- pos_wraparound = wraparound;
- draw_canvas.setBitmap(draw_bitmap);
+ private void workAroundForGuiInternal(Boolean inMap) {
+ if (!mTinting) {
+ return;
+ }
+ Log.v(TAG,"workaround gui internal");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !inMap) {
+ mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ return;
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ return;
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && !inMap) {
+ mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ mActivity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+ return;
+ }
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+ mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
+ mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
+ }
}
- public static native String CallbackLocalizedString(String s);
+ protected void overlay_resize(int x, int y, int w, int h, int wraparound) {
+ mDrawBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
+ mBitmapWidth = w;
+ mBitmapHeight = h;
+ mPosX = x;
+ mPosY = y;
+ mPosWraparound = wraparound;
+ mDrawCanvas.setBitmap(mDrawBitmap);
+ }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitMap.java b/navit/android/src/org/navitproject/navit/NavitMap.java
index ee0f11bb7..b3eb28d17 100644
--- a/navit/android/src/org/navitproject/navit/NavitMap.java
+++ b/navit/android/src/org/navitproject/navit/NavitMap.java
@@ -3,38 +3,38 @@ package org.navitproject.navit;
import java.io.File;
public class NavitMap {
- private String fileName;
- String mapName;
- private String mapPath;
+ String mMapName;
+ private final String mFileName;
+ private final String mMapPath;
- NavitMap(String path, String map_file_name) {
- mapPath = path;
- fileName = map_file_name;
- if (map_file_name.endsWith(".bin")) {
- mapName = map_file_name.substring(0, map_file_name.length() - 4);
+ NavitMap(String path, String mapFileName) {
+ mMapPath = path;
+ mFileName = mapFileName;
+ if (mapFileName.endsWith(".bin")) {
+ mMapName = mapFileName.substring(0, mapFileName.length() - 4);
} else {
- mapName = map_file_name;
+ mMapName = mapFileName;
}
}
- NavitMap(String map_location) {
- File mapFile = new File(map_location);
+ NavitMap(String mapLocation) {
+ File mapFile = new File(mapLocation);
- mapPath = mapFile.getParent() + "/";
- fileName = mapFile.getName();
- if (fileName.endsWith(".bin")) {
- mapName = fileName.substring(0, fileName.length() - 4);
+ mMapPath = mapFile.getParent() + "/";
+ mFileName = mapFile.getName();
+ if (mFileName.endsWith(".bin")) {
+ mMapName = mFileName.substring(0, mFileName.length() - 4);
} else {
- mapName = fileName;
+ mMapName = mFileName;
}
}
public long size() {
- File map_file = new File(mapPath + fileName);
- return map_file.length();
+ File mapFile = new File(mMapPath + mFileName);
+ return mapFile.length();
}
public String getLocation() {
- return mapPath + fileName;
+ return mMapPath + mFileName;
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java b/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
index c2c40fe2e..51c362407 100644
--- a/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
+++ b/navit/android/src/org/navitproject/navit/NavitMapDownloader.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system. Copyright (C) 2005-2008 Navit Team
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
@@ -15,11 +15,14 @@
package org.navitproject.navit;
+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;
import java.io.BufferedOutputStream;
import java.io.File;
@@ -37,7 +40,8 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
-/**
+
+/*
* @author rikky
*
*/
@@ -47,438 +51,418 @@ public class NavitMapDownloader extends Thread {
// define the maps here
// size estimations updated 2017-06-22
//
- public static final osm_map_values[] osm_maps = {
- new osm_map_values(Navit.getInstance().getTstring(R.string.whole_planet), "-180", "-90", "180", "90",
+ static final OsmMapValues[] osm_maps = {
+ new OsmMapValues(getTstring(R.string.whole_planet), "-180", "-90", "180", "90",
23992258630L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.africa), "-30.89", "-36.17", "61.68",
+ new OsmMapValues(getTstring(R.string.africa), "-30.89", "-36.17", "61.68",
"38.40", 2070076339L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.angola), "11.4", "-18.1", "24.2", "-5.3",
+ new OsmMapValues(getTstring(R.string.angola), "11.4", "-18.1", "24.2", "-5.3",
127557789L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.burundi), "28.9", "-4.5", "30.9", "-2.2",
+ new OsmMapValues(getTstring(R.string.burundi), "28.9", "-4.5", "30.9", "-2.2",
124049667L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.canary_islands), "-18.69", "26.52", "-12.79",
+ new OsmMapValues(getTstring(R.string.canary_islands), "-18.69", "26.52", "-12.79",
"29.99", 133565815L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.congo), "11.7",
+ new OsmMapValues(getTstring(R.string.congo), "11.7",
"-13.6", "31.5", "5.7", 244228485L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ethiopia), "32.89", "3.33", "48.07", "14.97",
+ new OsmMapValues(getTstring(R.string.ethiopia), "32.89", "3.33", "48.07", "14.97",
153067406L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.guinea), "-15.47", "7.12", "-7.58", "12.74",
+ new OsmMapValues(getTstring(R.string.guinea), "-15.47", "7.12", "-7.58", "12.74",
188047126L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.cotedivoire), "-8.72", "4.09", "-2.43",
+ new OsmMapValues(getTstring(R.string.cotedivoire), "-8.72", "4.09", "-2.43",
"10.80", 132187496L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.kenya), "33.8", "-5.2", "42.4", "4.9",
+ new OsmMapValues(getTstring(R.string.kenya), "33.8", "-5.2", "42.4", "4.9",
190073089L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.lesotho), "26.9", "-30.7", "29.6", "-28.4",
+ new OsmMapValues(getTstring(R.string.lesotho), "26.9", "-30.7", "29.6", "-28.4",
196189429L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.liberia), "-15.00", "-0.73", "-7.20", "8.65",
+ new OsmMapValues(getTstring(R.string.liberia), "-15.00", "-0.73", "-7.20", "8.65",
156257253L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.libya), "9.32", "19.40", "25.54", "33.63",
+ new OsmMapValues(getTstring(R.string.libya), "9.32", "19.40", "25.54", "33.63",
126046917L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.madagascar), "42.25", "-26.63", "51.20",
+ new OsmMapValues(getTstring(R.string.madagascar), "42.25", "-26.63", "51.20",
"-11.31", 145210721L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.namibia) + "+"
- + Navit.getInstance().getTstring(R.string.botswana),
+ new OsmMapValues(getTstring(R.string.namibia) + "+" + getTstring(R.string.botswana),
"11.4", "-29.1", "29.5", "-16.9", 248970987L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.reunion), "55.2", "-21.4", "55.9", "-20.9",
+ new OsmMapValues(getTstring(R.string.reunion), "55.2", "-21.4", "55.9", "-20.9",
126008774L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.rwanda), "28.8", "-2.9", "30.9", "-1.0",
+ new OsmMapValues(getTstring(R.string.rwanda), "28.8", "-2.9", "30.9", "-1.0",
128267595L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.south_africa) + "+"
- + Navit.getInstance().getTstring(R.string.lesotho),
+ new OsmMapValues(getTstring(R.string.south_africa) + "+" + getTstring(R.string.lesotho),
"15.93", "-36.36", "33.65", "-22.08", 307280006L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.tanzania), "29.19",
+ new OsmMapValues(getTstring(R.string.tanzania), "29.19",
"-11.87", "40.74", "-0.88", 253621029L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.uganda), "29.3", "-1.6", "35.1", "4.3",
+ new OsmMapValues(getTstring(R.string.uganda), "29.3", "-1.6", "35.1", "4.3",
179134521L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.asia), "23.8", "0.1", "195.0", "82.4",
+ new OsmMapValues(getTstring(R.string.asia), "23.8", "0.1", "195.0", "82.4",
5113673780L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.azerbaijan), "44.74", "38.34", "51.69",
+ new OsmMapValues(getTstring(R.string.azerbaijan), "44.74", "38.34", "51.69",
"42.37", 138346406L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.china), "67.3", "5.3", "135.0", "54.5",
+ new OsmMapValues(getTstring(R.string.china), "67.3", "5.3", "135.0", "54.5",
1718108758L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.cyprus), "32.0", "34.5", "34.9", "35.8",
+ new OsmMapValues(getTstring(R.string.cyprus), "32.0", "34.5", "34.9", "35.8",
118472448L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.india) + "+"
- + Navit.getInstance().getTstring(R.string.nepal), "67.9",
+ new OsmMapValues(getTstring(R.string.india) + "+" + getTstring(R.string.nepal), "67.9",
"5.5", "89.6", "36.0", 601877877L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.indonesia), "93.7", "-17.3", "155.5", "7.6",
+ new OsmMapValues(getTstring(R.string.indonesia), "93.7", "-17.3", "155.5", "7.6",
420741405L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.iran), "43.5", "24.4",
+ new OsmMapValues(getTstring(R.string.iran), "43.5", "24.4",
"63.6", "40.4", 242016066L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.iraq), "38.7", "28.5", "49.2", "37.4",
+ new OsmMapValues(getTstring(R.string.iraq), "38.7", "28.5", "49.2", "37.4",
160751805L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.israel), "33.99", "29.8", "35.95", "33.4",
+ new OsmMapValues(getTstring(R.string.israel), "33.99", "29.8", "35.95", "33.4",
155685778L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.japan) + "+"
- + Navit.getInstance().getTstring(R.string.korea), "123.6",
+ new OsmMapValues(getTstring(R.string.japan) + "+" + getTstring(R.string.korea), "123.6",
"25.2", "151.3", "47.1", 1029080156L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.kazakhstan), "46.44", "40.89", "87.36",
+ new OsmMapValues(getTstring(R.string.kazakhstan), "46.44", "40.89", "87.36",
"55.45", 407633007L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.kyrgyzsyan), "69.23", "39.13", "80.33",
+ new OsmMapValues(getTstring(R.string.kyrgyzsyan), "69.23", "39.13", "80.33",
"43.29", 147997835L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.malaysia) + "+"
- + Navit.getInstance().getTstring(R.string.singapore),
+ new OsmMapValues(getTstring(R.string.malaysia) + "+" + getTstring(R.string.singapore),
"94.3", "-5.9", "108.6", "6.8", 168816435L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.mongolia), "87.5", "41.4", "120.3", "52.7",
+ new OsmMapValues(getTstring(R.string.mongolia), "87.5", "41.4", "120.3", "52.7",
153534851L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.pakistan), "60.83", "23.28", "77.89",
+ new OsmMapValues(getTstring(R.string.pakistan), "60.83", "23.28", "77.89",
"37.15", 217644321L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.philippines), "115.58", "4.47", "127.85",
+ new OsmMapValues(getTstring(R.string.philippines), "115.58", "4.47", "127.85",
"21.60", 281428307L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.saudi_arabia), "33.2", "16.1", "55.9",
+ new OsmMapValues(getTstring(R.string.saudi_arabia), "33.2", "16.1", "55.9",
"33.5", 242648303L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.taiwan), "119.1", "21.5", "122.5", "25.2",
+ new OsmMapValues(getTstring(R.string.taiwan), "119.1", "21.5", "122.5", "25.2",
1029080156L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.thailand), "97.5", "5.7", "105.2", "19.7",
+ new OsmMapValues(getTstring(R.string.thailand), "97.5", "5.7", "105.2", "19.7",
185135492L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.turkey), "25.1", "35.8", "46.4", "42.8",
+ new OsmMapValues(getTstring(R.string.turkey), "25.1", "35.8", "46.4", "42.8",
331087441L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.turkmenistan), "51.78", "35.07", "66.76",
+ new OsmMapValues(getTstring(R.string.turkmenistan), "51.78", "35.07", "66.76",
"42.91", 131045087L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.uae_other), "51.5", "22.6", "56.7", "26.5",
+ new OsmMapValues(getTstring(R.string.uae_other), "51.5", "22.6", "56.7", "26.5",
128934674L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.australia) + "+"
- + Navit.getInstance().getTstring(R.string.oceania),
+ new OsmMapValues(getTstring(R.string.australia) + "+" + getTstring(R.string.oceania),
"89.84", "-57.39", "179.79", "7.26", 782722650L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.australia), "110.5", "-44.2", "154.9",
+ new OsmMapValues(getTstring(R.string.australia), "110.5", "-44.2", "154.9",
"-9.2", 348652900L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.tasmania), "144.0", "-45.1", "155.3",
+ new OsmMapValues(getTstring(R.string.tasmania), "144.0", "-45.1", "155.3",
"-24.8", 253231890L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.victoria) + " + " + Navit.getInstance()
- .getTstring(R.string.new_south_wales), "140.7", "-39.4", "153.7", "-26.9", 241500829L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.new_caledonia), "157.85", "-25.05", "174.15",
+ 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 osm_map_values(Navit.getInstance().getTstring(R.string.newzealand), "165.2", "-47.6", "179.1",
+ new OsmMapValues(getTstring(R.string.newzealand), "165.2", "-47.6", "179.1",
"-33.7", 239264192L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.europe), "-12.97", "33.59", "34.15", "72.10",
+ new OsmMapValues(getTstring(R.string.europe), "-12.97", "33.59", "34.15", "72.10",
11984126789L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.western_europe), "-17.6", "34.5", "42.9",
+ new OsmMapValues(getTstring(R.string.western_europe), "-17.6", "34.5", "42.9",
"70.9", 12648810717L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.austria), "9.4", "46.32", "17.21", "49.1",
+ new OsmMapValues(getTstring(R.string.austria), "9.4", "46.32", "17.21", "49.1",
898273634L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.azores), "-31.62", "36.63", "-24.67",
+ new OsmMapValues(getTstring(R.string.azores), "-31.62", "36.63", "-24.67",
"40.13", 112687225L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.belgium), "2.3", "49.5", "6.5", "51.6",
+ new OsmMapValues(getTstring(R.string.belgium), "2.3", "49.5", "6.5", "51.6",
733035524L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.benelux), "2.08", "48.87", "7.78", "54.52",
+ new OsmMapValues(getTstring(R.string.benelux), "2.08", "48.87", "7.78", "54.52",
1771971595L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.netherlands), "3.07", "50.75", "7.23",
+ new OsmMapValues(getTstring(R.string.netherlands), "3.07", "50.75", "7.23",
"53.73", 1191828033L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.denmark), "7.65", "54.32", "15.58", "58.07",
+ new OsmMapValues(getTstring(R.string.denmark), "7.65", "54.32", "15.58", "58.07",
365606979L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.faroe_islands), "-7.8", "61.3", "-6.1",
+ new OsmMapValues(getTstring(R.string.faroe_islands), "-7.8", "61.3", "-6.1",
"62.5", 109377568L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.france), "-5.45", "42.00", "8.44", "51.68",
+ new OsmMapValues(getTstring(R.string.france), "-5.45", "42.00", "8.44", "51.68",
3907969744L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.alsace), "6.79", "47.27", "8.48", "49.17",
+ new OsmMapValues(getTstring(R.string.alsace), "6.79", "47.27", "8.48", "49.17",
354249349L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.aquitaine), "-2.27", "42.44", "1.50",
+ new OsmMapValues(getTstring(R.string.aquitaine), "-2.27", "42.44", "1.50",
"45.76", 443715019L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.auvergne), "2.01", "44.57", "4.54", "46.85",
+ new OsmMapValues(getTstring(R.string.auvergne), "2.01", "44.57", "4.54", "46.85",
287663213L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.basse_normandie), "-2.09", "48.13", "1.03",
+ new OsmMapValues(getTstring(R.string.basse_normandie), "-2.09", "48.13", "1.03",
"49.98", 262352354L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bourgogne), "2.80", "46.11", "5.58", "48.45",
+ new OsmMapValues(getTstring(R.string.bourgogne), "2.80", "46.11", "5.58", "48.45",
298868796L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bretagne), "-5.58", "46.95", "-0.96",
+ new OsmMapValues(getTstring(R.string.bretagne), "-5.58", "46.95", "-0.96",
"48.99", 382770794L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.centre), "0.01", "46.29", "3.18", "48.99",
+ new OsmMapValues(getTstring(R.string.centre), "0.01", "46.29", "3.18", "48.99",
474224721L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.champagne_ardenne), "3.34", "47.53", "5.94",
+ new OsmMapValues(getTstring(R.string.champagne_ardenne), "3.34", "47.53", "5.94",
"50.28", 269947824L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.corse), "8.12", "41.32", "9.95", "43.28",
+ new OsmMapValues(getTstring(R.string.corse), "8.12", "41.32", "9.95", "43.28",
129902146L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.franche_comte), "5.20", "46.21", "7.83",
+ new OsmMapValues(getTstring(R.string.franche_comte), "5.20", "46.21", "7.83",
"48.07", 324476070L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.haute_normandie), "-0.15", "48.62", "1.85",
+ new OsmMapValues(getTstring(R.string.haute_normandie), "-0.15", "48.62", "1.85",
"50.18", 202782876L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ile_de_france), "1.40", "48.07", "3.61",
+ new OsmMapValues(getTstring(R.string.ile_de_france), "1.40", "48.07", "3.61",
"49.29", 311052699L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.languedoc_roussillon), "1.53", "42.25",
+ new OsmMapValues(getTstring(R.string.languedoc_roussillon), "1.53", "42.25",
"4.89", "45.02", 380145667L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.limousin), "0.58", "44.87", "2.66", "46.50",
+ new OsmMapValues(getTstring(R.string.limousin), "0.58", "44.87", "2.66", "46.50",
206696539L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.lorraine), "4.84", "47.77", "7.72", "49.73",
+ new OsmMapValues(getTstring(R.string.lorraine), "4.84", "47.77", "7.72", "49.73",
330777318L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.midi_pyrenees), "-0.37", "42.18", "3.50",
+ new OsmMapValues(getTstring(R.string.midi_pyrenees), "-0.37", "42.18", "3.50",
"45.10", 462618363L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.nord_pas_de_calais), "1.42", "49.92", "4.49",
+ new OsmMapValues(getTstring(R.string.nord_pas_de_calais), "1.42", "49.92", "4.49",
"51.31", 368467511L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.pays_de_la_loire), "-2.88", "46.20", "0.97",
+ new OsmMapValues(getTstring(R.string.pays_de_la_loire), "-2.88", "46.20", "0.97",
"48.62", 499471143L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.picardie), "1.25", "48.79", "4.31", "50.43",
+ new OsmMapValues(getTstring(R.string.picardie), "1.25", "48.79", "4.31", "50.43",
374308041L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.poitou_charentes), "-1.69", "45.04", "1.26",
+ new OsmMapValues(getTstring(R.string.poitou_charentes), "-1.69", "45.04", "1.26",
"47.23", 342125526L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.provence_alpes_cote_d_azur), "4.21", "42.91",
+ new OsmMapValues(getTstring(R.string.provence_alpes_cote_d_azur), "4.21", "42.91",
"7.99", "45.18", 390306134L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.rhone_alpes), "3.65", "44.07", "7.88",
+ new OsmMapValues(getTstring(R.string.rhone_alpes), "3.65", "44.07", "7.88",
"46.64", 510797942L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.luxembourg), "5.7", "49.4", "6.5", "50.2",
+ new OsmMapValues(getTstring(R.string.luxembourg), "5.7", "49.4", "6.5", "50.2",
1771971595L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.germany), "5.18", "46.84", "15.47", "55.64",
+ new OsmMapValues(getTstring(R.string.germany), "5.18", "46.84", "15.47", "55.64",
3521359466L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.baden_wuerttemberg), "7.32", "47.14",
+ new OsmMapValues(getTstring(R.string.baden_wuerttemberg), "7.32", "47.14",
"10.57", "49.85", 674361124L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bayern), "8.92", "47.22", "13.90", "50.62",
+ new OsmMapValues(getTstring(R.string.bayern), "8.92", "47.22", "13.90", "50.62",
860161150L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.mittelfranken), "9.86", "48.78", "11.65",
+ new OsmMapValues(getTstring(R.string.mittelfranken), "9.86", "48.78", "11.65",
"49.84", 203055195L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.niederbayern), "11.55", "47.75", "14.12",
+ new OsmMapValues(getTstring(R.string.niederbayern), "11.55", "47.75", "14.12",
"49.42", 312924770L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oberbayern), "10.67", "47.05", "13.57",
+ new OsmMapValues(getTstring(R.string.oberbayern), "10.67", "47.05", "13.57",
"49.14", 382734883L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oberfranken), "10.31", "49.54", "12.49",
+ new OsmMapValues(getTstring(R.string.oberfranken), "10.31", "49.54", "12.49",
"50.95", 235258691L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oberpfalz), "11.14", "48.71", "13.47",
+ new OsmMapValues(getTstring(R.string.oberpfalz), "11.14", "48.71", "13.47",
"50.43", 264536012L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.schwaben), "9.27", "47.10", "11.36", "49.09",
+ new OsmMapValues(getTstring(R.string.schwaben), "9.27", "47.10", "11.36", "49.09",
321141607L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.unterfranken), "8.59", "49.16", "10.93",
+ new OsmMapValues(getTstring(R.string.unterfranken), "8.59", "49.16", "10.93",
"50.67", 303720890L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.berlin), "13.03", "52.28", "13.81", "52.73",
+ new OsmMapValues(getTstring(R.string.berlin), "13.03", "52.28", "13.81", "52.73",
169019946L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.brandenburg), "11.17", "51.30", "14.83",
+ new OsmMapValues(getTstring(R.string.brandenburg), "11.17", "51.30", "14.83",
"53.63", 323497599L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bremen), "8.43", "52.96", "9.04", "53.66",
+ new OsmMapValues(getTstring(R.string.bremen), "8.43", "52.96", "9.04", "53.66",
150963608L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.hamburg), "9.56", "53.34", "10.39", "53.80",
+ new OsmMapValues(getTstring(R.string.hamburg), "9.56", "53.34", "10.39", "53.80",
156284421L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.hessen), "7.72", "49.34", "10.29", "51.71",
+ new OsmMapValues(getTstring(R.string.hessen), "7.72", "49.34", "10.29", "51.71",
432279328L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.mecklenburg_vorpommern), "10.54", "53.05",
+ new OsmMapValues(getTstring(R.string.mecklenburg_vorpommern), "10.54", "53.05",
"14.48", "55.05", 213183908L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.niedersachsen), "6.40", "51.24", "11.69",
+ new OsmMapValues(getTstring(R.string.niedersachsen), "6.40", "51.24", "11.69",
"54.22", 819766939L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.nordrhein_westfalen), "5.46", "50.26",
+ new OsmMapValues(getTstring(R.string.nordrhein_westfalen), "5.46", "50.26",
"9.52", "52.59", 967053517L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.rheinland_pfalz), "6.06", "48.91", "8.56",
+ new OsmMapValues(getTstring(R.string.rheinland_pfalz), "6.06", "48.91", "8.56",
"51.00", 442868899L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.saarland), "6.30", "49.06", "7.46", "49.69",
+ new OsmMapValues(getTstring(R.string.saarland), "6.30", "49.06", "7.46", "49.69",
157721162L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.sachsen_anhalt), "10.50", "50.88", "13.26",
+ new OsmMapValues(getTstring(R.string.sachsen_anhalt), "10.50", "50.88", "13.26",
"53.11", 287785088L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.sachsen), "11.82", "50.11", "15.10", "51.73",
+ new OsmMapValues(getTstring(R.string.sachsen), "11.82", "50.11", "15.10", "51.73",
342620834L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.schleswig_holstein), "7.41", "53.30",
+ new OsmMapValues(getTstring(R.string.schleswig_holstein), "7.41", "53.30",
"11.98", "55.20", 280293910L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.thueringen), "9.81", "50.15", "12.72",
+ new OsmMapValues(getTstring(R.string.thueringen), "9.81", "50.15", "12.72",
"51.70", 269428239L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.iceland), "-25.3", "62.8", "-11.4", "67.5",
+ new OsmMapValues(getTstring(R.string.iceland), "-25.3", "62.8", "-11.4", "67.5",
124837162L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ireland), "-11.17", "51.25", "-5.23", "55.9",
+ new OsmMapValues(getTstring(R.string.ireland), "-11.17", "51.25", "-5.23", "55.9",
234750271L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.italy), "6.52", "36.38", "18.96", "47.19",
+ new OsmMapValues(getTstring(R.string.italy), "6.52", "36.38", "18.96", "47.19",
1610171395L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.spain) + "+"
- + Navit.getInstance().getTstring(R.string.portugal),
+ new OsmMapValues(getTstring(R.string.spain) + "+" + getTstring(R.string.portugal),
"-11.04", "34.87", "4.62", "44.41", 1039624918L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.mallorca), "2.2", "38.8", "4.7", "40.2",
+ new OsmMapValues(getTstring(R.string.mallorca), "2.2", "38.8", "4.7", "40.2",
137200636L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.galicia), "-10.0", "41.7", "-6.3", "44.1",
+ new OsmMapValues(getTstring(R.string.galicia), "-10.0", "41.7", "-6.3", "44.1",
174549553L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.scandinavia), "4.0", "54.4", "32.1", "71.5",
+ new OsmMapValues(getTstring(R.string.scandinavia), "4.0", "54.4", "32.1", "71.5",
1398661090L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.finland), "18.6", "59.2", "32.3", "70.3",
+ new OsmMapValues(getTstring(R.string.finland), "18.6", "59.2", "32.3", "70.3",
460997178L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.denmark), "7.49", "54.33", "13.05", "57.88",
+ new OsmMapValues(getTstring(R.string.denmark), "7.49", "54.33", "13.05", "57.88",
321870414L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.switzerland), "5.79", "45.74", "10.59",
+ new OsmMapValues(getTstring(R.string.switzerland), "5.79", "45.74", "10.59",
"47.84", 552565332L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.united_kingdom), "-9.7", "49.6", "2.2",
+ new OsmMapValues(getTstring(R.string.united_kingdom), "-9.7", "49.6", "2.2",
"61.2", 901724648L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.england), "-7.80", "48.93", "2.41", "56.14",
+ new OsmMapValues(getTstring(R.string.england), "-7.80", "48.93", "2.41", "56.14",
937728414L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.buckinghamshire), "-1.19", "51.44", "-0.43",
+ new OsmMapValues(getTstring(R.string.buckinghamshire), "-1.19", "51.44", "-0.43",
"52.25", 142256978L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.cambridgeshire), "-0.55", "51.96", "0.56",
+ new OsmMapValues(getTstring(R.string.cambridgeshire), "-0.55", "51.96", "0.56",
"52.79", 142334001L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.cumbria), "-3.96", "53.85", "-2.11", "55.24",
+ new OsmMapValues(getTstring(R.string.cumbria), "-3.96", "53.85", "-2.11", "55.24",
144422460L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.east_yorkshire_with_hull), "-1.16", "53.50",
+ new OsmMapValues(getTstring(R.string.east_yorkshire_with_hull), "-1.16", "53.50",
"0.54", "54.26", 141518744L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.essex), "-0.07", "51.40", "1.36", "52.14",
+ new OsmMapValues(getTstring(R.string.essex), "-0.07", "51.40", "1.36", "52.14",
162542730L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.herefordshire), "-3.19", "51.78", "-2.29",
+ new OsmMapValues(getTstring(R.string.herefordshire), "-3.19", "51.78", "-2.29",
"52.45", 129368660L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.kent), "-0.02", "50.81", "1.65", "51.53",
+ new OsmMapValues(getTstring(R.string.kent), "-0.02", "50.81", "1.65", "51.53",
145482562L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.lancashire), "-3.20", "53.43", "-2.00",
+ new OsmMapValues(getTstring(R.string.lancashire), "-3.20", "53.43", "-2.00",
"54.29", 148964975L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.leicestershire), "-1.65", "52.34", "-0.61",
+ new OsmMapValues(getTstring(R.string.leicestershire), "-1.65", "52.34", "-0.61",
"53.03", 154199956L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.norfolk), "0.10", "52.30", "2.04", "53.41",
+ new OsmMapValues(getTstring(R.string.norfolk), "0.10", "52.30", "2.04", "53.41",
146017009L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.nottinghamshire), "-1.39", "52.73", "-0.62",
+ new OsmMapValues(getTstring(R.string.nottinghamshire), "-1.39", "52.73", "-0.62",
"53.55", 147986548L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oxfordshire), "-1.77", "51.41", "-0.82",
+ new OsmMapValues(getTstring(R.string.oxfordshire), "-1.77", "51.41", "-0.82",
"52.22", 142240992L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.shropshire), "-3.29", "52.26", "-2.18",
+ new OsmMapValues(getTstring(R.string.shropshire), "-3.29", "52.26", "-2.18",
"53.05", 136909363L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.somerset), "-3.89", "50.77", "-2.20",
+ new OsmMapValues(getTstring(R.string.somerset), "-3.89", "50.77", "-2.20",
"51.40", 145186096L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.south_yorkshire), "-1.88", "53.25", "-0.80",
+ new OsmMapValues(getTstring(R.string.south_yorkshire), "-1.88", "53.25", "-0.80",
"53.71", 145902650L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.suffolk), "0.29", "51.88", "1.81", "52.60",
+ new OsmMapValues(getTstring(R.string.suffolk), "0.29", "51.88", "1.81", "52.60",
143799697L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.surrey), "-0.90", "51.02", "0.10", "51.52",
+ new OsmMapValues(getTstring(R.string.surrey), "-0.90", "51.02", "0.10", "51.52",
157987139L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.wiltshire), "-2.41", "50.90", "-1.44",
+ new OsmMapValues(getTstring(R.string.wiltshire), "-2.41", "50.90", "-1.44",
"51.76", 138652346L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.scotland), "-8.13", "54.49", "-0.15",
+ new OsmMapValues(getTstring(R.string.scotland), "-8.13", "54.49", "-0.15",
"61.40", 258853845L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.wales), "-5.56", "51.28", "-2.60", "53.60",
+ new OsmMapValues(getTstring(R.string.wales), "-5.56", "51.28", "-2.60", "53.60",
193593409L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.albania), "19.09", "39.55", "21.12", "42.72",
+ new OsmMapValues(getTstring(R.string.albania), "19.09", "39.55", "21.12", "42.72",
146199817L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.belarus), "23.12", "51.21", "32.87", "56.23",
+ new OsmMapValues(getTstring(R.string.belarus), "23.12", "51.21", "32.87", "56.23",
324470696L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.russian_federation), "27.9", "41.5", "190.4",
+ new OsmMapValues(getTstring(R.string.russian_federation), "27.9", "41.5", "190.4",
"77.6", 2148314279L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bulgaria), "24.7", "42.1", "24.8", "42.1",
+ new OsmMapValues(getTstring(R.string.bulgaria), "24.7", "42.1", "24.8", "42.1",
109869373L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bosnia_and_herzegovina), "15.69", "42.52",
+ new OsmMapValues(getTstring(R.string.bosnia_and_herzegovina), "15.69", "42.52",
"19.67", "45.32", 187122485L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.czech_republic), "11.91", "48.48", "19.02",
+ new OsmMapValues(getTstring(R.string.czech_republic), "11.91", "48.48", "19.02",
"51.17", 904838442L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.croatia), "13.4", "42.1", "19.4", "46.9",
+ new OsmMapValues(getTstring(R.string.croatia), "13.4", "42.1", "19.4", "46.9",
460854751L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.estonia), "21.5", "57.5", "28.2", "59.6",
+ new OsmMapValues(getTstring(R.string.estonia), "21.5", "57.5", "28.2", "59.6",
173378927L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.greece), "28.9", "37.8", "29.0", "37.8",
+ new OsmMapValues(getTstring(R.string.greece), "28.9", "37.8", "29.0", "37.8",
109435051L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.crete), "23.3", "34.5", "26.8", "36.0",
+ new OsmMapValues(getTstring(R.string.crete), "23.3", "34.5", "26.8", "36.0",
115985063L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.hungary), "16.08", "45.57", "23.03", "48.39",
+ new OsmMapValues(getTstring(R.string.hungary), "16.08", "45.57", "23.03", "48.39",
350318541L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.latvia), "20.7", "55.6", "28.3", "58.1",
+ new OsmMapValues(getTstring(R.string.latvia), "20.7", "55.6", "28.3", "58.1",
188188140L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.lithuania), "20.9", "53.8", "26.9", "56.5",
+ new OsmMapValues(getTstring(R.string.lithuania), "20.9", "53.8", "26.9", "56.5",
217852597L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.poland), "13.6", "48.8", "24.5", "55.0",
+ new OsmMapValues(getTstring(R.string.poland), "13.6", "48.8", "24.5", "55.0",
1464968657L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.romania), "20.3", "43.5", "29.9", "48.4",
+ new OsmMapValues(getTstring(R.string.romania), "20.3", "43.5", "29.9", "48.4",
347931565L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.slovakia), "16.8", "47.7", "22.6", "49.7",
+ new OsmMapValues(getTstring(R.string.slovakia), "16.8", "47.7", "22.6", "49.7",
420533039L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ukraine), "22.0", "44.3", "40.4", "52.4",
+ new OsmMapValues(getTstring(R.string.ukraine), "22.0", "44.3", "40.4", "52.4",
793611912L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.north_america), "-178.1", "6.5", "-10.4",
+ new OsmMapValues(getTstring(R.string.north_america), "-178.1", "6.5", "-10.4",
"84.0", 5601866516L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.alaska), "-179.5", "49.5", "-129", "71.6",
+ new OsmMapValues(getTstring(R.string.alaska), "-179.5", "49.5", "-129", "71.6",
207746039L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.canada), "-141.3", "41.5", "-52.2", "70.2",
+ new OsmMapValues(getTstring(R.string.canada), "-141.3", "41.5", "-52.2", "70.2",
2635719651L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.hawaii), "-161.07", "18.49", "-154.45",
+ new OsmMapValues(getTstring(R.string.hawaii), "-161.07", "18.49", "-154.45",
"22.85", 115016656L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.usa) + Navit.getInstance()
- .getTstring(R.string.except_alaska_and_hawaii), "-125.4", "24.3", "-66.5", "49.3",
- 4060487198L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.midwest), "-104.11", "35.92", "-80.46",
+ 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 osm_map_values(Navit.getInstance().getTstring(R.string.michigan), "-90.47", "41.64", "-79.00",
+ new OsmMapValues(getTstring(R.string.michigan), "-90.47", "41.64", "-79.00",
"49.37", 538247019L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ohio), "-84.87", "38.05", "-79.85", "43.53",
+ new OsmMapValues(getTstring(R.string.ohio), "-84.87", "38.05", "-79.85", "43.53",
277022336L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.northeast), "-80.58", "38.72", "-66.83",
+ new OsmMapValues(getTstring(R.string.northeast), "-80.58", "38.72", "-66.83",
"47.53", 1017160709L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.massachusetts), "-73.56", "40.78", "-68.67",
+ new OsmMapValues(getTstring(R.string.massachusetts), "-73.56", "40.78", "-68.67",
"42.94", 340055487L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.vermont), "-73.49", "42.68", "-71.41",
+ new OsmMapValues(getTstring(R.string.vermont), "-73.49", "42.68", "-71.41",
"45.07", 139626067L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.pacific), "-180.05", "15.87", "-129.75",
+ new OsmMapValues(getTstring(R.string.pacific), "-180.05", "15.87", "-129.75",
"73.04", 207090640L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.south), "-106.70", "23.98", "-71.46",
+ new OsmMapValues(getTstring(R.string.south), "-106.70", "23.98", "-71.46",
"40.70", 1747935356L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.arkansas), "-94.67", "32.95", "-89.59",
+ new OsmMapValues(getTstring(R.string.arkansas), "-94.67", "32.95", "-89.59",
"36.60", 155658661L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.district_of_columbia), "-77.17", "38.74",
+ new OsmMapValues(getTstring(R.string.district_of_columbia), "-77.17", "38.74",
"-76.86", "39.05", 129235755L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.florida), "-88.75", "23.63", "-77.67",
+ new OsmMapValues(getTstring(R.string.florida), "-88.75", "23.63", "-77.67",
"31.05", 224022108L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.louisiana), "-94.09", "28.09", "-88.62",
+ new OsmMapValues(getTstring(R.string.louisiana), "-94.09", "28.09", "-88.62",
"33.07", 210120605L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.maryland), "-79.54", "37.83", "-74.99",
+ new OsmMapValues(getTstring(R.string.maryland), "-79.54", "37.83", "-74.99",
"40.22", 276462622L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.mississippi), "-91.71", "29.99", "-88.04",
+ new OsmMapValues(getTstring(R.string.mississippi), "-91.71", "29.99", "-88.04",
"35.05", 177858031L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oklahoma), "-103.41", "33.56", "-94.38",
+ new OsmMapValues(getTstring(R.string.oklahoma), "-103.41", "33.56", "-94.38",
"37.38", 200061473L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.texas), "-106.96", "25.62", "-92.97",
+ new OsmMapValues(getTstring(R.string.texas), "-106.96", "25.62", "-92.97",
"36.58", 430089141L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.virginia), "-83.73", "36.49", "-74.25",
+ new OsmMapValues(getTstring(R.string.virginia), "-83.73", "36.49", "-74.25",
"39.52", 384187569L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.west_virginia), "-82.70", "37.15", "-77.66",
+ new OsmMapValues(getTstring(R.string.west_virginia), "-82.70", "37.15", "-77.66",
"40.97", 220552071L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.west), "-133.11", "31.28", "-101.99",
+ new OsmMapValues(getTstring(R.string.west), "-133.11", "31.28", "-101.99",
"49.51", 1152909162L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.arizona), "-114.88", "30.01", "-108.99",
+ new OsmMapValues(getTstring(R.string.arizona), "-114.88", "30.01", "-108.99",
"37.06", 182826833L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.california), "-125.94", "32.43", "-114.08",
+ new OsmMapValues(getTstring(R.string.california), "-125.94", "32.43", "-114.08",
"42.07", 586923326L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.colorado), "-109.11", "36.52", "-100.41",
+ new OsmMapValues(getTstring(R.string.colorado), "-109.11", "36.52", "-100.41",
"41.05", 228623724L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.idaho), "-117.30", "41.93", "-110.99",
+ new OsmMapValues(getTstring(R.string.idaho), "-117.30", "41.93", "-110.99",
"49.18", 170684507L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.montana), "-116.10", "44.31", "-102.64",
+ new OsmMapValues(getTstring(R.string.montana), "-116.10", "44.31", "-102.64",
"49.74", 176229800L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.new_mexico), "-109.10", "26.98", "-96.07",
+ new OsmMapValues(getTstring(R.string.new_mexico), "-109.10", "26.98", "-96.07",
"37.05", 361793070L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.nevada), "-120.2", "35.0", "-113.8", "42.1",
+ new OsmMapValues(getTstring(R.string.nevada), "-120.2", "35.0", "-113.8", "42.1",
200614482L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.oregon), "-124.8", "41.8", "-116.3", "46.3",
+ new OsmMapValues(getTstring(R.string.oregon), "-124.8", "41.8", "-116.3", "46.3",
211462685L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.utah), "-114.11", "36.95", "-108.99",
+ new OsmMapValues(getTstring(R.string.utah), "-114.11", "36.95", "-108.99",
"42.05", 151590197L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.washington_state), "-125.0", "45.5",
+ new OsmMapValues(getTstring(R.string.washington_state), "-125.0", "45.5",
"-116.9", "49.0", 222553768L, 2),
- new osm_map_values(Navit.getInstance().getTstring(R.string.south_middle_america), "-83.5", "-56.3",
+ new OsmMapValues(getTstring(R.string.south_middle_america), "-83.5", "-56.3",
"-30.8", "13.7", 958895383L, 0),
- new osm_map_values(Navit.getInstance().getTstring(R.string.argentina), "-73.9", "-57.3", "-51.6",
+ new OsmMapValues(getTstring(R.string.argentina), "-73.9", "-57.3", "-51.6",
"-21.0", 376857648L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.argentina) + "+"
- + Navit.getInstance().getTstring(R.string.chile),
+ new OsmMapValues(getTstring(R.string.argentina) + "+" + getTstring(R.string.chile),
"-77.2", "-56.3", "-52.7", "-16.1", 420275812L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.bolivia), "-70.5", "-23.1", "-57.3", "-9.3",
+ new OsmMapValues(getTstring(R.string.bolivia), "-70.5", "-23.1", "-57.3", "-9.3",
175937824L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.brazil), "-71.4", "-34.7", "-32.8", "5.4",
+ new OsmMapValues(getTstring(R.string.brazil), "-71.4", "-34.7", "-32.8", "5.4",
664872975L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.chile), "-81.77", "-58.50", "-65.46",
+ new OsmMapValues(getTstring(R.string.chile), "-81.77", "-58.50", "-65.46",
"-17.41", 241657330L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.cuba), "-85.3", "19.6", "-74.0", "23.6",
+ new OsmMapValues(getTstring(R.string.cuba), "-85.3", "19.6", "-74.0", "23.6",
129043575L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.colombia), "-79.1", "-4.0", "-66.7", "12.6",
+ new OsmMapValues(getTstring(R.string.colombia), "-79.1", "-4.0", "-66.7", "12.6",
212016580L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.ecuador), "-82.6", "-5.4", "-74.4", "2.3",
+ new OsmMapValues(getTstring(R.string.ecuador), "-82.6", "-5.4", "-74.4", "2.3",
158857591L, 1),
- new osm_map_values(
- Navit.getInstance().getTstring(R.string.guyana) + "+"
- + Navit.getInstance().getTstring(R.string.suriname) + "+"
- + Navit.getInstance().getTstring(R.string.guyane_francaise), "-62.0", "1.0", "-51.2",
+ 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 osm_map_values(Navit.getInstance().getTstring(R.string.haiti) + "+"
- + Navit.getInstance().getTstring(R.string.dominican_republic), "-74.8", "17.3", "-68.2", "20.1",
- 149925689L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.jamaica), "-78.6", "17.4", "-75.9", "18.9",
+ 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 osm_map_values(Navit.getInstance().getTstring(R.string.mexico), "-117.6", "14.1", "-86.4", "32.8",
+ new OsmMapValues(getTstring(R.string.mexico), "-117.6", "14.1", "-86.4", "32.8",
551307973L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.paraguay), "-63.8", "-28.1", "-53.6",
+ new OsmMapValues(getTstring(R.string.paraguay), "-63.8", "-28.1", "-53.6",
"-18.8", 159498397L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.peru), "-82.4", "-18.1", "-67.5", "0.4",
+ new OsmMapValues(getTstring(R.string.peru), "-82.4", "-18.1", "-67.5", "0.4",
212490557L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.uruguay), "-59.2", "-36.5", "-51.7", "-29.7",
- 157482719L, 1),
- new osm_map_values(Navit.getInstance().getTstring(R.string.venezuela), "-73.6", "0.4", "-59.7", "12.8",
- 167295729L, 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)
};
//we should try to resume
private static final int SOCKET_CONNECT_TIMEOUT = 60000; // 60 secs.
@@ -488,23 +472,23 @@ public class NavitMapDownloader extends Thread {
private static final int MAP_READ_FILE_BUFFER = 1024 * 64;
private static final int UPDATE_PROGRESS_TIME_NS = 1000 * 1000000; // 1ns=1E-9s
private static final int MAX_RETRIES = 5;
- private final String TAG = this.getClass().getName();
- private final String map_filename_path;
- private final osm_map_values map_values;
- private final int map_id;
- private Boolean stop_me = false;
- private long uiLastUpdated = -1;
- private Boolean retryDownload = false; //Download failed, but
- private int retry_counter = 0;
-
- NavitMapDownloader(int map_id) {
- this.map_values = osm_maps[map_id];
- this.map_id = map_id;
- this.map_filename_path = Navit.map_filename_path;
+ private static final String TAG = "NavitMapDownLoader";
+ private final String mMapFilenamePath;
+ private final OsmMapValues mMapValues;
+ private final int mMapId;
+ private Boolean mStopMe = false;
+ private long mUiLastUpdated = -1;
+ private Boolean mRetryDownload = false; //Download failed, but
+ private int mRetryCounter = 0;
+
+ NavitMapDownloader(int mapId) {
+ this.mMapValues = osm_maps[mapId];
+ this.mMapId = mapId;
+ this.mMapFilenamePath = Navit.sMapFilenamePath;
}
- public static NavitMap[] getAvailableMaps() {
- class filterMaps implements FilenameFilter {
+ static NavitMap[] getAvailableMaps() {
+ class FilterMaps implements FilenameFilter {
public boolean accept(File dir, String filename) {
return (filename.endsWith(".bin"));
@@ -512,75 +496,76 @@ public class NavitMapDownloader extends Thread {
}
NavitMap[] maps = new NavitMap[0];
- File map_dir = new File(Navit.map_filename_path);
- String[] map_file_names = map_dir.list(new filterMaps());
- if (map_file_names != null) {
- maps = new NavitMap[map_file_names.length];
- for (int map_file_index = 0; map_file_index < map_file_names.length; map_file_index++) {
- maps[map_file_index] = new NavitMap(Navit.map_filename_path,
- map_file_names[map_file_index]);
+ File mapDir = new File(Navit.sMapFilenamePath);
+ String[] mapFileNames = mapDir.list(new FilterMaps());
+ if (mapFileNames != null) {
+ maps = new NavitMap[mapFileNames.length];
+ for (int mapFileIndex = 0; mapFileIndex < mapFileNames.length; mapFileIndex++) {
+ maps[mapFileIndex] = new NavitMap(Navit.sMapFilenamePath,
+ mapFileNames[mapFileIndex]);
}
}
return maps;
}
+ @Override
public void run() {
- stop_me = false;
- retry_counter = 0;
+ mStopMe = false;
+ mRetryCounter = 0;
- Log.v(TAG, "start download " + map_values.map_name);
- updateProgress(0, map_values.est_size_bytes,
- Navit.getInstance().getTstring(R.string.map_downloading) + ": " + map_values.map_name);
+ Log.v(TAG, "start download " + mMapValues.mMapName);
+ updateProgress(0, mMapValues.mEstSizeBytes,
+ getTstring(R.string.map_downloading) + ": " + mMapValues.mMapName);
boolean success;
do {
try {
- Thread.sleep(10 + retry_counter * 1000);
+ Thread.sleep(10 + mRetryCounter * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
- retryDownload = false;
+ mRetryDownload = false;
success = download_osm_map();
} while (!success
- && retryDownload
- && retry_counter < MAX_RETRIES
- && !stop_me);
+ && mRetryDownload
+ && mRetryCounter < MAX_RETRIES
+ && !mStopMe);
if (success) {
- toast(map_values.map_name + " " + Navit.getInstance().getTstring(R.string.map_download_ready));
+ toast(mMapValues.mMapName + " " + getTstring(R.string.map_download_ready));
getMapInfoFile().delete();
Log.d(TAG, "success");
}
- if (success || stop_me) {
+ if (success || mStopMe) {
NavitDialogs.sendDialogMessage(NavitDialogs.MSG_MAP_DOWNLOAD_FINISHED,
- map_filename_path + map_values.map_name + ".bin", null, -1, success ? 1 : 0, map_id);
+ mMapFilenamePath + mMapValues.mMapName + ".bin", null, -1, success ? 1 : 0, mMapId);
}
}
- public void stop_thread() {
- stop_me = true;
- Log.d(TAG, "stop_me -> true");
+ void stop_thread() {
+ mStopMe = true;
+ Log.d(TAG, "mStopMe -> true");
}
- private boolean checkFreeSpace(long needed_bytes) {
- long free_space = getFreeSpace();
+ private boolean checkFreeSpace(long neededBytes) {
+ long freeSpace = getFreeSpace();
- if (needed_bytes <= 0) {
- needed_bytes = MAP_WRITE_FILE_BUFFER;
+ if (neededBytes <= 0) {
+ neededBytes = MAP_WRITE_FILE_BUFFER;
}
- if (free_space < needed_bytes) {
+ if (freeSpace < neededBytes) {
String msg;
Log.e(TAG, "Not enough free space or media not available. Please free at least "
- + needed_bytes / 1024 / 1024 + "Mb.");
- if (free_space < 0) {
- msg = Navit.getInstance().getTstring(R.string.map_download_medium_unavailable);
+ + neededBytes / 1024 / 1024 + "Mb.");
+ if (freeSpace < 0) {
+ msg = getTstring(R.string.map_download_medium_unavailable);
} else {
- msg = Navit.getInstance().getTstring(R.string.map_download_not_enough_free_space);
+ msg = getTstring(R.string.map_download_not_enough_free_space);
}
- updateProgress(free_space, needed_bytes,
- Navit.getInstance().getTstring(R.string.map_download_download_error) + "\n" + msg);
+ updateProgress(freeSpace, neededBytes,
+ getTstring(R.string.map_download_download_error) + "\n" + msg);
return false;
}
return true;
@@ -590,8 +575,8 @@ public class NavitMapDownloader extends Thread {
File finalOutputFile = getMapFile();
if (finalOutputFile.exists()) {
- Message msg = Message.obtain(Navit.getInstance().getNavitGraphics().callback_handler,
- NavitGraphics.msg_type.CLB_DELETE_MAP.ordinal());
+ Message msg = Message.obtain(NavitGraphics.sCallbackHandler,
+ NavitGraphics.MsgType.CLB_DELETE_MAP.ordinal());
Bundle b = new Bundle();
b.putString("title", finalOutputFile.getAbsolutePath());
msg.setData(b);
@@ -603,15 +588,15 @@ public class NavitMapDownloader extends Thread {
private boolean download_osm_map() {
- long already_read = 0;
- long real_size_bytes;
+ long alreadyRead = 0;
+ long realSizeBytes;
boolean resume = true;
File outputFile = getDestinationFile();
- long old_download_size = outputFile.length();
+ long oldDownloadSize = outputFile.length();
URL url = null;
- if (old_download_size > 0) {
+ if (oldDownloadSize > 0) {
url = readFileInfo();
}
@@ -625,32 +610,32 @@ public class NavitMapDownloader extends Thread {
if (c != null) {
if (resume) {
- c.setRequestProperty("Range", "bytes=" + old_download_size + "-");
- already_read = old_download_size;
+ c.setRequestProperty("Range", "bytes=" + oldDownloadSize + "-");
+ alreadyRead = oldDownloadSize;
}
try {
- real_size_bytes = Long.parseLong(c.getHeaderField("Content-Length")) + already_read;
+ realSizeBytes = Long.parseLong(c.getHeaderField("Content-Length")) + alreadyRead;
} catch (Exception e) {
- real_size_bytes = -1;
+ realSizeBytes = -1;
}
long fileTime = c.getLastModified();
if (!resume) {
outputFile.delete();
- writeFileInfo(c, real_size_bytes);
+ writeFileInfo(c, realSizeBytes);
}
- if (real_size_bytes <= 0) {
- real_size_bytes = map_values.est_size_bytes;
+ if (realSizeBytes <= 0) {
+ realSizeBytes = mMapValues.mEstSizeBytes;
}
- Log.d(TAG, "size: " + real_size_bytes + ", read: " + already_read + ", timestamp: "
+ Log.d(TAG, "size: " + realSizeBytes + ", read: " + alreadyRead + ", timestamp: "
+ fileTime
+ ", Connection ref: " + c.getURL());
- if (checkFreeSpace(real_size_bytes - already_read)
- && downloadData(c, already_read, real_size_bytes, resume, outputFile)) {
+ if (checkFreeSpace(realSizeBytes - alreadyRead)
+ && downloadData(c, alreadyRead, realSizeBytes, resume, outputFile)) {
File finalOutputFile = getMapFile();
// delete an already existing file first
@@ -664,19 +649,19 @@ public class NavitMapDownloader extends Thread {
}
private File getDestinationFile() {
- File outputFile = new File(map_filename_path, map_values.map_name + ".tmp");
+ File outputFile = new File(mMapFilenamePath, mMapValues.mMapName + ".tmp");
outputFile.getParentFile().mkdir();
return outputFile;
}
- private boolean downloadData(URLConnection c, long already_read, long real_size_bytes, boolean resume,
+ private boolean downloadData(URLConnection c, long alreadyRead, long realSizeBytes, boolean resume,
File outputFile) {
boolean success = false;
BufferedOutputStream buf = getOutputStream(outputFile, resume);
BufferedInputStream bif = getInputStream(c);
if (buf != null && bif != null) {
- success = readData(buf, bif, already_read, real_size_bytes);
+ success = readData(buf, bif, alreadyRead, realSizeBytes);
// always cleanup, as we might get errors when trying to resume
try {
buf.flush();
@@ -694,11 +679,11 @@ public class NavitMapDownloader extends Thread {
URL url;
try {
url =
- new URL("http://maps.navit-project.org/api/map/?bbox=" + map_values.lon1 + ","
- + map_values.lat1
- + "," + map_values.lon2 + "," + map_values.lat2);
+ new URL("http://maps.navit-project.org/api/map/?bbox=" + mMapValues.mLon1 + ","
+ + mMapValues.mLat1
+ + "," + mMapValues.mLon2 + "," + mMapValues.mLat2);
} catch (MalformedURLException e) {
- Log.e(TAG, "We failed to create a URL to " + map_values.map_name);
+ Log.e(TAG, "We failed to create a URL to " + mMapValues.mMapName);
e.printStackTrace();
return null;
}
@@ -708,7 +693,7 @@ public class NavitMapDownloader extends Thread {
private long getFreeSpace() {
try {
- StatFs fsInfo = new StatFs(map_filename_path);
+ StatFs fsInfo = new StatFs(mMapFilenamePath);
return (long) fsInfo.getAvailableBlocks() * fsInfo.getBlockSize();
} catch (Exception e) {
return -1;
@@ -721,7 +706,7 @@ public class NavitMapDownloader extends Thread {
bif = new BufferedInputStream(c.getInputStream(), MAP_READ_FILE_BUFFER);
} catch (FileNotFoundException e) {
Log.e(TAG, "File not found on server: " + e);
- if (retry_counter > 0) {
+ if (mRetryCounter > 0) {
getMapInfoFile().delete();
}
enableRetry();
@@ -735,11 +720,11 @@ public class NavitMapDownloader extends Thread {
}
private File getMapFile() {
- return new File(map_filename_path, map_values.map_name + ".bin");
+ return new File(mMapFilenamePath, mMapValues.mMapName + ".bin");
}
private File getMapInfoFile() {
- return new File(map_filename_path, map_values.map_name + ".tmp.info");
+ return new File(mMapFilenamePath, mMapValues.mMapName + ".tmp.info");
}
private BufferedOutputStream getOutputStream(File outputFile, boolean resume) {
@@ -770,44 +755,44 @@ public class NavitMapDownloader extends Thread {
return c;
}
- private boolean readData(OutputStream buf, InputStream bif, long already_read,
- long real_size_bytes) {
- long start_timestamp = System.nanoTime();
+ private boolean readData(OutputStream buf, InputStream bif, long alreadyRead,
+ long realSizeBytes) {
+ long startTimestamp = System.nanoTime();
byte[] buffer = new byte[MAP_WRITE_MEM_BUFFER];
int len1;
- long startOffset = already_read;
+ long startOffset = alreadyRead;
boolean success = false;
try {
- while (!stop_me && (len1 = bif.read(buffer)) != -1) {
- already_read += len1;
- updateProgress(start_timestamp, startOffset, already_read, real_size_bytes);
+ while (!mStopMe && (len1 = bif.read(buffer)) != -1) {
+ alreadyRead += len1;
+ updateProgress(startTimestamp, startOffset, alreadyRead, realSizeBytes);
try {
buf.write(buffer, 0, len1);
} catch (IOException e) {
Log.d(TAG, "Error: " + e);
- if (!checkFreeSpace(real_size_bytes - already_read + MAP_WRITE_FILE_BUFFER)) {
+ if (!checkFreeSpace(realSizeBytes - alreadyRead + MAP_WRITE_FILE_BUFFER)) {
if (deleteMap()) {
enableRetry();
} else {
- updateProgress(already_read, real_size_bytes,
- Navit.getInstance().getTstring(R.string.map_download_download_error) + "\n"
- + Navit.getInstance().getTstring(R.string.map_download_not_enough_free_space));
+ updateProgress(alreadyRead, realSizeBytes,
+ getTstring(R.string.map_download_download_error) + "\n"
+ + getTstring(R.string.map_download_not_enough_free_space));
}
} else {
- updateProgress(already_read, real_size_bytes,
- Navit.getInstance().getTstring(R.string.map_download_error_writing_map));
+ updateProgress(alreadyRead, realSizeBytes,
+ getTstring(R.string.map_download_error_writing_map));
}
return false;
}
}
- if (stop_me) {
- toast(Navit.getInstance().getTstring(R.string.map_download_download_aborted));
- } else if (already_read < real_size_bytes) {
- Log.d(TAG, "Server send only " + already_read + " bytes of " + real_size_bytes);
+ if (mStopMe) {
+ toast(getTstring(R.string.map_download_download_aborted));
+ } else if (alreadyRead < realSizeBytes) {
+ Log.d(TAG, "Server send only " + alreadyRead + " bytes of " + realSizeBytes);
enableRetry();
} else {
success = true;
@@ -816,8 +801,8 @@ public class NavitMapDownloader extends Thread {
Log.d(TAG, "Error: " + e);
enableRetry();
- updateProgress(already_read, real_size_bytes,
- Navit.getInstance().getTstring(R.string.map_download_download_error));
+ updateProgress(alreadyRead, realSizeBytes,
+ getTstring(R.string.map_download_download_error));
}
return success;
@@ -828,13 +813,13 @@ public class NavitMapDownloader extends Thread {
try {
ObjectInputStream infoStream = new ObjectInputStream(
new FileInputStream(getMapInfoFile()));
- String resume_proto = infoStream.readUTF();
infoStream.readUTF(); // read the host name (unused for now)
- String resume_file = infoStream.readUTF();
+ String resumeFile = infoStream.readUTF();
infoStream.close();
// looks like the same file, try to resume
Log.v(TAG, "Try to resume download");
- url = new URL(resume_proto + "://" + "maps.navit-project.org" + resume_file);
+ String resumeProto = infoStream.readUTF();
+ url = new URL(resumeProto + "://" + "maps.navit-project.org" + resumeFile);
} catch (Exception e) {
getMapInfoFile().delete();
}
@@ -848,36 +833,36 @@ public class NavitMapDownloader extends Thread {
private void updateProgress(long startTime, long offsetBytes, long readBytes, long maxBytes) {
long currentTime = System.nanoTime();
- if ((currentTime > uiLastUpdated + UPDATE_PROGRESS_TIME_NS) && startTime != currentTime) {
- float per_second_overall = (readBytes - offsetBytes) / ((currentTime - startTime) / 1000000000f);
- long bytes_remaining = maxBytes - readBytes;
- int eta_seconds = (int) (bytes_remaining / per_second_overall);
+ if ((currentTime > mUiLastUpdated + UPDATE_PROGRESS_TIME_NS) && startTime != currentTime) {
+ float perSecondOverall = (readBytes - offsetBytes) / ((currentTime - startTime) / 1000000000f);
+ long bytesRemaining = maxBytes - readBytes;
+ int etaSeconds = (int) (bytesRemaining / perSecondOverall);
- String eta_string;
- if (eta_seconds > 60) {
- eta_string = (int) (eta_seconds / 60f) + " m";
+ String etaString;
+ if (etaSeconds > 60) {
+ etaString = (int) (etaSeconds / 60f) + " m";
} else {
- eta_string = eta_seconds + " s";
+ etaString = etaSeconds + " s";
}
String info = String.format("%s: %s\n %dMb / %dMb\n %.1f kb/s %s: %s",
- Navit.getInstance().getTstring(R.string.map_downloading),
- map_values.map_name, readBytes / 1024 / 1024, maxBytes / 1024 / 1024,
- per_second_overall / 1024f, Navit.getInstance().getTstring(R.string.map_download_eta),
- eta_string);
+ getTstring(R.string.map_downloading),
+ mMapValues.mMapName, readBytes / 1024 / 1024, maxBytes / 1024 / 1024,
+ perSecondOverall / 1024f, getTstring(R.string.map_download_eta),
+ etaString);
- if (retry_counter > 0) {
- info += "\n Retry " + retry_counter + "/" + MAX_RETRIES;
+ if (mRetryCounter > 0) {
+ info += "\n Retry " + mRetryCounter + "/" + MAX_RETRIES;
}
Log.d(TAG, "info: " + info);
updateProgress(readBytes, maxBytes, info);
- uiLastUpdated = currentTime;
+ mUiLastUpdated = currentTime;
}
}
private void updateProgress(long positionBytes, long maximumBytes, String infoText) {
NavitDialogs.sendDialogMessage(NavitDialogs.MSG_PROGRESS_BAR,
- Navit.getInstance().getTstring(R.string.map_download_title), infoText,
+ getTstring(R.string.map_download_title), infoText,
NavitDialogs.DIALOG_MAPDOWNLOAD, (int) (maximumBytes / 1024),
(int) (positionBytes / 1024));
}
@@ -899,53 +884,45 @@ public class NavitMapDownloader extends Thread {
}
private void enableRetry() {
- retryDownload = true;
- retry_counter++;
+ mRetryDownload = true;
+ mRetryCounter++;
}
- public static class osm_map_values {
-
- final String lon1;
- final String lat1;
- final String lon2;
- final String lat2;
- final String map_name;
- final long est_size_bytes;
- final int level;
-
-
- private osm_map_values(String mapname, String lon_1, String lat_1, String lon_2,
- String lat_2,
- long bytes_est, int level) {
- this.map_name = mapname;
- this.lon1 = lon_1;
- this.lat1 = lat_1;
- this.lon2 = lon_2;
- this.lat2 = lat_2;
- this.est_size_bytes = bytes_est;
- this.level = level;
+ static class OsmMapValues {
+
+ final String mLon1;
+ final String mLat1;
+ final String mLon2;
+ final String mLat2;
+ final String mMapName;
+ final long mEstSizeBytes;
+ final int mLevel;
+
+
+ private OsmMapValues(String mapName, String lon1, String lat1, String lon2,
+ String lat2,
+ long bytesEst, int level) {
+ this.mMapName = mapName;
+ this.mLon1 = lon1;
+ this.mLat1 = lat1;
+ this.mLon2 = lon2;
+ this.mLat2 = lat2;
+ this.mEstSizeBytes = bytesEst;
+ this.mLevel = level;
}
- public boolean isInMap(Location location) {
- double longitude_1 = Double.valueOf(this.lon1);
- double latitude_1 = Double.valueOf(this.lat1);
- double longitude_2 = Double.valueOf(this.lon2);
- double latitude_2 = Double.valueOf(this.lat2);
+ boolean isInMap(Location location) {
- if (location.getLongitude() < longitude_1) {
+ if (location.getLongitude() < Double.valueOf(this.mLon1)) {
return false;
}
- if (location.getLongitude() > longitude_2) {
+ if (location.getLongitude() > Double.valueOf(this.mLon2)) {
return false;
}
- if (location.getLatitude() < latitude_1) {
+ if (location.getLatitude() < Double.valueOf(this.mLat1)) {
return false;
}
- if (location.getLatitude() > latitude_2) {
- return false;
- }
-
- return true;
+ return !(location.getLatitude() > Double.valueOf(this.mLat2));
}
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java b/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
index e4c774fb9..2e10e896e 100644
--- a/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
+++ b/navit/android/src/org/navitproject/navit/NavitRestoreTask.java
@@ -1,5 +1,7 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.app.NotificationManager;
import android.app.ProgressDialog;
import android.content.Context;
@@ -7,6 +9,7 @@ import android.content.SharedPreferences.Editor;
import android.os.AsyncTask;
import android.os.Environment;
import android.widget.Toast;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -14,15 +17,15 @@ import java.io.ObjectInputStream;
import java.util.Map;
import java.util.Map.Entry;
-public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
- private Navit mActivity;
- private ProgressDialog mDialog;
+public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
- private String mTimestamp;
+ private final Navit mActivity;
+ private ProgressDialog mDialog;
+ private final String mTimestamp;
- public NavitRestoreTask(Navit context, String timestamp) {
+ NavitRestoreTask(Navit context, String timestamp) {
mActivity = context;
mTimestamp = timestamp;
}
@@ -34,7 +37,7 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
/* Create a Wait Progress Dialog to inform the User that we are working */
mDialog = new ProgressDialog(mActivity);
mDialog.setIndeterminate(true);
- mDialog.setMessage(mActivity.getTstring(R.string.restoring));
+ mDialog.setMessage(getTstring(R.string.restoring));
mDialog.show();
}
@@ -49,31 +52,31 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
/* Check if there is a Backup Directory */
if (!backupDir.isDirectory()) {
- return mActivity.getTstring(R.string.backup_not_found);
+ return getTstring(R.string.backup_not_found);
}
ObjectInputStream preferenceOis = null;
try {
/* Delete all old Files in Home */
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/bookmark.txt");
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/destination.txt");
- mActivity.removeFileIfExists(Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt");
+ NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/bookmark.txt");
+ NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/destination.txt");
+ NavitUtils.removeFileIfExists(Navit.sNavitDataDir + "/home/gui_internal.txt");
/* Restore Files in home */
- mActivity.copyFileIfExists(backupDir.getPath() + "/bookmark.txt",
- Navit.NAVIT_DATA_DIR + "/home/bookmark.txt");
- mActivity.copyFileIfExists(backupDir.getPath() + "/destination.txt",
- Navit.NAVIT_DATA_DIR + "/home/destination.txt");
- mActivity.copyFileIfExists(backupDir.getPath() + "/gui_internal.txt",
- Navit.NAVIT_DATA_DIR + "/home/gui_internal.txt");
+ NavitUtils.copyFileIfExists(backupDir.getPath() + "/bookmark.txt",
+ Navit.sNavitDataDir + "/home/bookmark.txt");
+ NavitUtils.copyFileIfExists(backupDir.getPath() + "/destination.txt",
+ Navit.sNavitDataDir + "/home/destination.txt");
+ NavitUtils.copyFileIfExists(backupDir.getPath() + "/gui_internal.txt",
+ Navit.sNavitDataDir + "/home/gui_internal.txt");
/* Restore Shared Preferences */
preferenceOis = new ObjectInputStream(
new FileInputStream(backupDir.getPath() + "/preferences.bak"));
Map<String, ?> entries = (Map<String, ?>) preferenceOis.readObject();
- Editor prefEditor = mActivity.getSharedPreferences(Navit.NAVIT_PREFS, Context.MODE_PRIVATE).edit();
+ Editor prefEditor = mActivity.getSharedPreferences(NavitAppConfig.NAVIT_PREFS, Context.MODE_PRIVATE).edit();
/* Remove all old Preferences */
prefEditor.clear();
@@ -84,25 +87,25 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
String key = entry.getKey();
if (value instanceof Boolean) {
- prefEditor.putBoolean(key, ((Boolean) value).booleanValue());
+ prefEditor.putBoolean(key, (Boolean) value);
} else if (value instanceof Float) {
- prefEditor.putFloat(key, ((Float) value).floatValue());
+ prefEditor.putFloat(key, (Float) value);
} else if (value instanceof Integer) {
- prefEditor.putInt(key, ((Integer) value).intValue());
+ prefEditor.putInt(key, (Integer) value);
} else if (value instanceof Long) {
- prefEditor.putLong(key, ((Long) value).longValue());
+ prefEditor.putLong(key, (Long) value);
} else if (value instanceof String) {
prefEditor.putString(key, (String) value);
}
}
if (!prefEditor.commit()) {
- return mActivity.getTstring(R.string.failed_to_restore);
+ return getTstring(R.string.failed_to_restore);
}
} catch (Exception e) {
e.printStackTrace();
- return mActivity.getTstring(R.string.failed_to_restore);
+ return getTstring(R.string.failed_to_restore);
} finally {
try {
/* Close Stream to prevent Resource leak */
@@ -111,7 +114,6 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
}
} catch (IOException e) {
// Catching but ignoring that exception when closing the stream
- return null;
}
}
return null;
@@ -132,18 +134,17 @@ public class NavitRestoreTask extends AsyncTask<Void, Void, String> {
/* Navit needs to be restarted. Currently the User has to restart it by himself */
Toast.makeText(mActivity,
- mActivity.getTstring(R.string.restore_successful_please_restart_navit),
+ getTstring(R.string.restore_successful_please_restart_navit),
Toast.LENGTH_LONG).show();
NotificationManager nm = (NotificationManager) mActivity.getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(R.string.app_name);
- NavitVehicle.removeListener();
mActivity.finish();
}
@Override
protected void onCancelled() {
super.onCancelled();
- Toast.makeText(mActivity, mActivity.getTstring(R.string.restore_failed), Toast.LENGTH_LONG)
+ Toast.makeText(mActivity, getTstring(R.string.restore_failed), Toast.LENGTH_LONG)
.show();
mDialog.dismiss();
}
diff --git a/navit/android/src/org/navitproject/navit/NavitSensors.java b/navit/android/src/org/navitproject/navit/NavitSensors.java
index ad94bdfbe..3ffb6457a 100644
--- a/navit/android/src/org/navitproject/navit/NavitSensors.java
+++ b/navit/android/src/org/navitproject/navit/NavitSensors.java
@@ -21,34 +21,34 @@ import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
+import android.util.Log;
+@SuppressWarnings("unused")
+class NavitSensors implements SensorEventListener {
+ private final long mCallbackid;
-public class NavitSensors implements SensorEventListener {
- private SensorManager mSensorManager;
- private int callbackid;
+ private native void sensorCallback(long id, int sensor, float x, float y, float z);
- public native void SensorCallback(int id, int sensor, float x, float y, float z);
-
- NavitSensors(Context context, int cbid) {
- mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
- mSensorManager.registerListener((SensorEventListener)this,
+ NavitSensors(Context context, long cbid) {
+ SensorManager mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+ mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
- SensorManager.SENSOR_DELAY_NORMAL);
- mSensorManager.registerListener((SensorEventListener)this,
+ SensorManager.SENSOR_DELAY_UI);
+ mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
- SensorManager.SENSOR_DELAY_NORMAL);
- callbackid = cbid;
+ SensorManager.SENSOR_DELAY_UI);
+ mCallbackid = cbid;
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent sev) {
- // Log.e("NavitSensor","Type:" + sev.sensor.getType() + " X:" + sev.values[0] + " Y:"+sev.values[1]+" Z:"
- // +sev.values[2]);
- SensorCallback(callbackid, sev.sensor.getType(), sev.values[0], sev.values[1], sev.values[2]);
+ Log.v("NavitSensor","Type:" + sev.sensor.getType() + " X:" + sev.values[0] + " Y:"
+ + sev.values[1] + " Z:" + sev.values[2]);
+ sensorCallback(mCallbackid, sev.sensor.getType(), sev.values[0], sev.values[1], sev.values[2]);
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitSpeech2.java b/navit/android/src/org/navitproject/navit/NavitSpeech2.java
index c86fdd1c8..c36b9556e 100644
--- a/navit/android/src/org/navitproject/navit/NavitSpeech2.java
+++ b/navit/android/src/org/navitproject/navit/NavitSpeech2.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system. Copyright (C) 2005-2008 Navit Team
*
* This program is free software; you can redistribute it and/or modify it under the terms of the
@@ -15,6 +15,8 @@
package org.navitproject.navit;
+import static org.navitproject.navit.NavitAppConfig.getTstring;
+
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
@@ -23,17 +25,19 @@ import android.speech.tts.TextToSpeech;
import android.util.Log;
+
+
@SuppressWarnings("unused")
-public class NavitSpeech2 implements TextToSpeech.OnInitListener, NavitActivityResult {
+class NavitSpeech2 implements TextToSpeech.OnInitListener, NavitActivityResult {
- private final Navit navit;
- private final int MY_DATA_CHECK_CODE = 1;
- private final String TAG = this.getClass().getName();
+ private final Navit mNavit;
+ private static final int MY_DATA_CHECK_CODE = 1;
+ private static final String TAG = "NavitSpeech2";
private TextToSpeech mTts;
NavitSpeech2(Navit navit) {
- this.navit = navit;
+ this.mNavit = navit;
navit.setActivityResult(1, this);
Log.d(TAG, "Create");
Intent checkIntent = new Intent();
@@ -57,23 +61,23 @@ public class NavitSpeech2 implements TextToSpeech.OnInitListener, NavitActivityR
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
- mTts = new TextToSpeech(navit.getApplication(), this);
+ mTts = new TextToSpeech(mNavit.getApplication(), this);
} else {
// missing data, ask to install it
- AlertDialog.Builder builder = new AlertDialog.Builder(navit);
+ AlertDialog.Builder builder = new AlertDialog.Builder(mNavit);
builder
- .setTitle(navit.getTstring(R.string.TTS_title_data_missing))
- .setMessage(navit.getTstring(R.string.TTS_qery_install_data))
- .setPositiveButton(navit.getTstring(R.string.yes),
+ .setTitle(getTstring(R.string.TTS_title_data_missing))
+ .setMessage(getTstring(R.string.TTS_qery_install_data))
+ .setPositiveButton(getTstring(R.string.yes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
- navit.startActivity(installIntent);
+ mNavit.startActivity(installIntent);
}
})
- .setNegativeButton(navit.getTstring(R.string.no), null)
+ .setNegativeButton(getTstring(R.string.no), null)
.show();
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitTimeout.java b/navit/android/src/org/navitproject/navit/NavitTimeout.java
index 81451ab47..0975e9454 100644
--- a/navit/android/src/org/navitproject/navit/NavitTimeout.java
+++ b/navit/android/src/org/navitproject/navit/NavitTimeout.java
@@ -1,20 +1,20 @@
-/**
- * Navit, a modular navigation system.
- * Copyright (C) 2005-2008 Navit Team
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
+/*
+ Navit, a modular navigation system.
+ Copyright (C) 2005-2008 Navit Team
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ version 2 as published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the
+ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
*/
package org.navitproject.navit;
@@ -24,36 +24,37 @@ import android.os.Message;
import android.util.Log;
+class NavitTimeout implements Runnable {
-public class NavitTimeout implements Runnable {
- private static Handler handler = new Handler() {
- public void handleMessage(Message m) {
- Log.e("Navit","Handler received message");
- }
- };
- private boolean event_multi;
- private int event_callbackid;
- private int event_timeout;
-
- public native void TimeoutCallback(int id);
-
- NavitTimeout(int timeout, boolean multi, int callbackid) {
- event_timeout = timeout;
- event_multi = multi;
- event_callbackid = callbackid;
- handler.postDelayed(this, event_timeout);
+ private static final TimeoutHandler handler = new TimeoutHandler();
+ private final long mEventCallbackid;
+ private final int mEventTimeout;
+ private final boolean mEventMulti;
+
+ NavitTimeout(int timeout, boolean multi, long callbackid) {
+ mEventTimeout = timeout;
+ mEventMulti = multi;
+ mEventCallbackid = callbackid;
+ handler.postDelayed(this, mEventTimeout);
}
+ public native void timeoutCallback(long id);
+
public void run() {
- // Log.e("Navit","Handle Event");
- if (event_multi) {
- handler.postDelayed(this, event_timeout);
+ Log.v("Navit","Handle Event");
+ if (mEventMulti) {
+ handler.postDelayed(this, mEventTimeout);
}
- TimeoutCallback(event_callbackid);
+ timeoutCallback(mEventCallbackid);
}
public void remove() {
handler.removeCallbacks(this);
}
-}
+ static class TimeoutHandler extends Handler {
+ public void handleMessage(Message m) {
+ Log.d("NavitTimeout", "Handler received message");
+ }
+ }
+}
diff --git a/navit/android/src/org/navitproject/navit/NavitTraff.java b/navit/android/src/org/navitproject/navit/NavitTraff.java
index a98b91948..c82d7d293 100644
--- a/navit/android/src/org/navitproject/navit/NavitTraff.java
+++ b/navit/android/src/org/navitproject/navit/NavitTraff.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2018 Navit Team
*
@@ -32,49 +32,42 @@ import android.util.Log;
import java.util.List;
/**
- * @brief The TraFF receiver implementation.
+ * The TraFF receiver implementation.
*
- * This class registers the broadcast receiver for TraFF feeds, polls all registered sources once on creation, receives
- * TraFF feeds and forwards them to the traffic module for processing.
+ * <p>This class registers the broadcast receiver for TraFF feeds, polls all registered sources once on creation,
+ * receives TraFF feeds and forwards them to the traffic module for processing.</p>
*/
public class NavitTraff extends BroadcastReceiver {
- public static String ACTION_TRAFF_FEED = "org.traffxml.traff.FEED";
-
- public static String ACTION_TRAFF_POLL = "org.traffxml.traff.POLL";
-
- public static String EXTRA_FEED = "feed";
-
- /** Identifier for the callback function. */
- private int cbid;
- private Context context = null;
-
- /** An intent filter for TraFF events. */
- private IntentFilter traffFilter = new IntentFilter();
+ private static final String ACTION_TRAFF_FEED = "org.traffxml.traff.FEED";
+ private static final String ACTION_TRAFF_POLL = "org.traffxml.traff.POLL";
+ private static final String EXTRA_FEED = "feed";
+ private final long mCbid;
/**
- * @brief Forwards a newly received TraFF feed to the traffic module for processing.
+ * Forwards a newly received TraFF feed to the traffic module for processing.
*
- * This is called when a TraFF feed is received.
+ * <p>This is called when a TraFF feed is received.</p>
*
* @param id The identifier for the native callback implementation
* @param feed The TraFF feed
*/
- public native void onFeedReceived(int id, String feed);
+ public native void onFeedReceived(long id, String feed);
/**
- * @brief Creates a new {@code NavitTraff} instance.
+ * Creates a new {@code NavitTraff} instance.
*
- * Creating a new {@code NavitTraff} instance registers a broadcast receiver for TraFF broadcasts and polls all
- * registered sources once to ensure we have messages which were received by these sources before we started up.
+ * <p>Creating a new {@code NavitTraff} instance registers a broadcast receiver for TraFF broadcasts and polls all
+ * registered sources once to ensure we have messages which were received by these sources before we started up.</p>
*
* @param context The context
* @param cbid The callback identifier for the native method to call upon receiving a feed
*/
- NavitTraff(Context context, int cbid) {
- this.context = context;
- this.cbid = cbid;
+ NavitTraff(Context context, long cbid) {
+ this.mCbid = cbid;
+ /* An intent filter for TraFF events. */
+ IntentFilter traffFilter = new IntentFilter();
traffFilter.addAction(ACTION_TRAFF_FEED);
traffFilter.addAction(ACTION_TRAFF_POLL);
@@ -85,7 +78,7 @@ public class NavitTraff extends BroadcastReceiver {
Intent outIntent = new Intent(ACTION_TRAFF_POLL);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> receivers = pm.queryBroadcastReceivers(outIntent, 0);
- if (receivers != null)
+ if (receivers != null) {
for (ResolveInfo receiver : receivers) {
ComponentName cn = new ComponentName(receiver.activityInfo.applicationInfo.packageName,
receiver.activityInfo.name);
@@ -93,16 +86,18 @@ public class NavitTraff extends BroadcastReceiver {
outIntent.setComponent(cn);
context.sendBroadcast(outIntent, Manifest.permission.ACCESS_COARSE_LOCATION);
}
+ }
}
@Override
public void onReceive(Context context, Intent intent) {
if ((intent != null) && (intent.getAction().equals(ACTION_TRAFF_FEED))) {
String feed = intent.getStringExtra(EXTRA_FEED);
- if (feed == null)
+ if (feed == null) {
Log.w(this.getClass().getSimpleName(), "empty feed, ignoring");
- else
- onFeedReceived(cbid, feed);
+ } else {
+ onFeedReceived(mCbid, feed);
+ }
}
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitUtils.java b/navit/android/src/org/navitproject/navit/NavitUtils.java
new file mode 100644
index 000000000..bbdf6539e
--- /dev/null
+++ b/navit/android/src/org/navitproject/navit/NavitUtils.java
@@ -0,0 +1,53 @@
+package org.navitproject.navit;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+class NavitUtils {
+
+
+ static void removeFileIfExists(String source) {
+ File file = new File(source);
+
+ if (!file.exists()) {
+ return;
+ }
+
+ file.delete();
+ }
+
+ static void copyFileIfExists(String source, String destination) throws IOException {
+ File file = new File(source);
+
+ if (!file.exists()) {
+ return;
+ }
+
+ FileInputStream is = null;
+ FileOutputStream os = null;
+
+ try {
+ is = new FileInputStream(source);
+ os = new FileOutputStream(destination);
+
+ int len;
+ byte[] buffer = new byte[1024];
+
+ while ((len = is.read(buffer)) != -1) {
+ os.write(buffer, 0, len);
+ }
+ } finally {
+ /* Close the FileStreams to prevent Resource leaks */
+ if (is != null) {
+ is.close();
+ }
+
+ if (os != null) {
+ os.close();
+ }
+ }
+ }
+
+}
diff --git a/navit/android/src/org/navitproject/navit/NavitVehicle.java b/navit/android/src/org/navitproject/navit/NavitVehicle.java
index 200fc3eec..e8c43e474 100644
--- a/navit/android/src/org/navitproject/navit/NavitVehicle.java
+++ b/navit/android/src/org/navitproject/navit/NavitVehicle.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2008 Navit Team
*
@@ -41,52 +41,53 @@ import java.util.List;
public class NavitVehicle {
private static final String GPS_FIX_CHANGE = "android.location.GPS_FIX_CHANGE";
+ static Location sLastLocation;
+ private static LocationManager sLocationManager;
+ private Context mContext;
+ private long mVehiclePcbid;
+ private long mVehicleScbid;
+ private long mVehicleFcbid;
+ private String mFastProvider;
- public static Location lastLocation = null;
+ private static NavitLocationListener sPreciseLocationListener;
+ private static NavitLocationListener sFastLocationListener;
- private static LocationManager sLocationManager = null;
- private static Context context = null;
- private int vehicle_pcbid;
- private int vehicle_scbid;
- private int vehicle_fcbid;
- private String preciseProvider;
- private String fastProvider;
+ public native void vehicleCallback(long id, Location location);
- private static NavitLocationListener preciseLocationListener = null;
- private static NavitLocationListener fastLocationListener = null;
+ public native void vehicleCallback(long id, int satsInView, int satsUsed);
- public native void VehicleCallback(int id, Location location);
-
- public native void VehicleCallback(int id, int satsInView, int satsUsed);
-
- public native void VehicleCallback(int id, int enabled);
+ public native void vehicleCallback(long id, int enabled);
private class NavitLocationListener extends BroadcastReceiver implements GpsStatus.Listener, LocationListener {
- public boolean precise = false;
+ boolean mPrecise = false;
public void onLocationChanged(Location location) {
- lastLocation = location;
// Disable the fast provider if still active
- if (precise && fastProvider != null) {
- sLocationManager.removeUpdates(fastLocationListener);
- fastProvider = null;
+ if (mPrecise && mFastProvider != null) {
+ sLocationManager.removeUpdates(sFastLocationListener);
+ mFastProvider = null;
}
-
- VehicleCallback(vehicle_pcbid, location);
- VehicleCallback(vehicle_fcbid, 1);
+ vehicleCallback(mVehiclePcbid, location);
+ vehicleCallback(mVehicleFcbid, 1);
}
- public void onProviderDisabled(String provider) {}
+ public void onProviderDisabled(String provider) {
+ //unhandled
+ }
- public void onProviderEnabled(String provider) {}
+ public void onProviderEnabled(String provider) {
+ //unhandled
+ }
- public void onStatusChanged(String provider, int status, Bundle extras) {}
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ //unhandled
+ }
/**
* Called when the status of the GPS changes.
*/
public void onGpsStatusChanged(int event) {
- if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
+ if (ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
return;
@@ -101,17 +102,17 @@ public class NavitVehicle {
satsUsed++;
}
}
- VehicleCallback(vehicle_scbid, satsInView, satsUsed);
+ vehicleCallback(mVehicleScbid, satsInView, satsUsed);
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(GPS_FIX_CHANGE)) {
if (intent.getBooleanExtra("enabled", false)) {
- VehicleCallback(vehicle_fcbid, 1);
+ vehicleCallback(mVehicleFcbid, 1);
} else {
if (!intent.getBooleanExtra("enabled", true)) {
- VehicleCallback(vehicle_fcbid, 0);
+ vehicleCallback(mVehicleFcbid, 0);
}
}
}
@@ -119,25 +120,25 @@ public class NavitVehicle {
}
/**
- * @brief Creates a new {@code NavitVehicle}
+ * Creates a new {@code NavitVehicle}.
*
- * @param context
+ * @param context the context
* @param pcbid The address of the position callback function called when a location update is received
* @param scbid The address of the status callback function called when a status update is received
* @param fcbid The address of the fix callback function called when a
* {@code android.location.GPS_FIX_CHANGE} is received, indicating a change in GPS fix status
*/
- NavitVehicle(Context context, int pcbid, int scbid, int fcbid) {
+ NavitVehicle(Context context, long pcbid, long scbid, long fcbid) {
if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
return;
}
- this.context = context;
+ this.mContext = context;
sLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
- preciseLocationListener = new NavitLocationListener();
- preciseLocationListener.precise = true;
- fastLocationListener = new NavitLocationListener();
+ sPreciseLocationListener = new NavitLocationListener();
+ sPreciseLocationListener.mPrecise = true;
+ sFastLocationListener = new NavitLocationListener();
/* Use 2 LocationProviders, one precise (usually GPS), and one
not so precise, but possible faster. The fast provider is
@@ -159,19 +160,19 @@ public class NavitVehicle {
lowCriteria.setCostAllowed(true);
lowCriteria.setPowerRequirement(Criteria.POWER_HIGH);
- Log.e("NavitVehicle", "Providers " + sLocationManager.getAllProviders());
+ Log.d("NavitVehicle", "Providers " + sLocationManager.getAllProviders());
- preciseProvider = sLocationManager.getBestProvider(highCriteria, false);
- Log.e("NavitVehicle", "Precise Provider " + preciseProvider);
- fastProvider = sLocationManager.getBestProvider(lowCriteria, false);
- Log.e("NavitVehicle", "Fast Provider " + fastProvider);
- vehicle_pcbid = pcbid;
- vehicle_scbid = scbid;
- vehicle_fcbid = fcbid;
+ String mPreciseProvider = sLocationManager.getBestProvider(highCriteria, false);
+ Log.d("NavitVehicle", "Precise Provider " + mPreciseProvider);
+ mFastProvider = sLocationManager.getBestProvider(lowCriteria, false);
+ Log.d("NavitVehicle", "Fast Provider " + mFastProvider);
+ mVehiclePcbid = pcbid;
+ mVehicleScbid = scbid;
+ mVehicleFcbid = fcbid;
- context.registerReceiver(preciseLocationListener, new IntentFilter(GPS_FIX_CHANGE));
- sLocationManager.requestLocationUpdates(preciseProvider, 0, 0, preciseLocationListener);
- sLocationManager.addGpsStatusListener(preciseLocationListener);
+ context.registerReceiver(sPreciseLocationListener, new IntentFilter(GPS_FIX_CHANGE));
+ sLocationManager.requestLocationUpdates(mPreciseProvider, 0, 0, sPreciseLocationListener);
+ sLocationManager.addGpsStatusListener(sPreciseLocationListener);
/*
* Since Android criteria have no way to specify "fast fix", lowCriteria may return the same
@@ -179,32 +180,31 @@ public class NavitVehicle {
* listeners for the same provider but pick the fast provider manually. (Usually there will
* only be two providers in total, which makes the choice easy.)
*/
- if (fastProvider == null || preciseProvider.compareTo(fastProvider) == 0) {
+ if (mFastProvider == null || mPreciseProvider.compareTo(mFastProvider) == 0) {
List<String> fastProviderList = sLocationManager.getProviders(lowCriteria, false);
- fastProvider = null;
+ mFastProvider = null;
for (String fastCandidate: fastProviderList) {
- if (preciseProvider.compareTo(fastCandidate) != 0) {
- fastProvider = fastCandidate;
+ if (mPreciseProvider.compareTo(fastCandidate) != 0) {
+ mFastProvider = fastCandidate;
break;
}
}
}
- if (fastProvider != null) {
- sLocationManager.requestLocationUpdates(fastProvider, 0, 0, fastLocationListener);
+ if (mFastProvider != null) {
+ sLocationManager.requestLocationUpdates(mFastProvider, 0, 0, sFastLocationListener);
}
}
- public static void removeListener() {
+ static void removeListeners(Navit navit) {
if (sLocationManager != null) {
- if (preciseLocationListener != null) {
- sLocationManager.removeUpdates(preciseLocationListener);
- sLocationManager.removeGpsStatusListener(preciseLocationListener);
- context.unregisterReceiver(preciseLocationListener);
+ if (sPreciseLocationListener != null) {
+ sLocationManager.removeUpdates(sPreciseLocationListener);
+ sLocationManager.removeGpsStatusListener(sPreciseLocationListener);
+ navit.unregisterReceiver(sPreciseLocationListener);
}
- if (fastLocationListener != null) {
- sLocationManager.removeUpdates(fastLocationListener);
+ if (sFastLocationListener != null) {
+ sLocationManager.removeUpdates(sFastLocationListener);
}
}
-
}
}
diff --git a/navit/android/src/org/navitproject/navit/NavitWatch.java b/navit/android/src/org/navitproject/navit/NavitWatch.java
index 5f13c83a3..bfa56913e 100644
--- a/navit/android/src/org/navitproject/navit/NavitWatch.java
+++ b/navit/android/src/org/navitproject/navit/NavitWatch.java
@@ -1,4 +1,4 @@
-/**
+/*
* Navit, a modular navigation system.
* Copyright (C) 2005-2008 Navit Team
*
@@ -23,87 +23,88 @@ import android.os.Handler;
import android.os.Message;
import android.util.Log;
-import java.lang.Thread;
+class NavitWatch implements Runnable {
-public class NavitWatch implements Runnable {
- private Thread thread;
- private static Handler handler = new Handler() {
- public void handleMessage(Message m) {
- Log.e("NavitWatch","Handler received message");
- }
- };
- private boolean removed;
- private int watch_func;
- private int watch_fd;
- private int watch_cond;
- private int watch_callbackid;
- private boolean callback_pending;
- private Runnable callback_runnable;
-
- public native void poll(int func, int fd, int cond);
+ private static WatchHandler sHandler = new WatchHandler();
+ private Thread mThread;
+ private boolean mRemoved;
+ private long mWatchFunc;
+ private int mWatchFd;
+ private int mWatchCond;
+ private long mWatchCallbackid;
+ private boolean mCallbackPending;
+ private Runnable mCallbackRunnable;
- public native void WatchCallback(int id);
-
- NavitWatch(int func, int fd, int cond, int callbackid) {
- // Log.e("NavitWatch","Creating new thread for "+fd+" "+cond+" from current thread "
- // + java.lang.Thread.currentThread().getName());
- watch_func = func;
- watch_fd = fd;
- watch_cond = cond;
- watch_callbackid = callbackid;
+ NavitWatch(long func, int fd, int cond, long callbackid) {
+ Log.d("NavitWatch","Creating new thread for " + fd + " " + cond + " from current thread "
+ + java.lang.Thread.currentThread().getName());
+ mWatchFunc = func;
+ mWatchFd = fd;
+ mWatchCond = cond;
+ mWatchCallbackid = callbackid;
final NavitWatch navitwatch = this;
- callback_runnable = new Runnable() {
+ mCallbackRunnable = new Runnable() {
public void run() {
navitwatch.callback();
}
};
- thread = new Thread(this, "poll thread");
- thread.start();
+ mThread = new Thread(this, "poll thread");
+ mThread.start();
}
+ public native void poll(long func, int fd, int cond);
+
+ public native void watchCallback(long id);
+
public void run() {
- for (;;) {
+ for (; ; ) {
// Log.e("NavitWatch","Polling "+watch_fd+" "+watch_cond + " from "
// + java.lang.Thread.currentThread().getName());
- poll(watch_func, watch_fd, watch_cond);
+ poll(mWatchFunc, mWatchFd, mWatchCond);
// Log.e("NavitWatch","poll returned");
- if (removed) {
+ if (mRemoved) {
break;
}
- callback_pending = true;
- handler.post(callback_runnable);
+ mCallbackPending = true;
+ sHandler.post(mCallbackRunnable);
try {
// Log.e("NavitWatch","wait");
synchronized (this) {
- if (callback_pending) {
+ if (mCallbackPending) {
this.wait();
}
}
// Log.e("NavitWatch","wait returned");
} catch (Exception e) {
- Log.e("NavitWatch","Exception " + e.getMessage());
+ Log.e("NavitWatch", "Exception " + e.getMessage());
}
- if (removed) {
+ if (mRemoved) {
break;
}
}
}
- public void callback() {
+ private void callback() {
// Log.e("NavitWatch","Calling Callback");
- if (!removed) {
- WatchCallback(watch_callbackid);
+ if (!mRemoved) {
+ watchCallback(mWatchCallbackid);
}
synchronized (this) {
- callback_pending = false;
+ mCallbackPending = false;
// Log.e("NavitWatch","Waking up");
this.notify();
}
}
public void remove() {
- removed = true;
- thread.interrupt();
+ mRemoved = true;
+ mThread.interrupt();
+ }
+
+ static class WatchHandler extends Handler {
+ public void handleMessage(Message m) {
+ Log.d("NavitWatch", "Handler received message");
+ }
}
}
diff --git a/navit/callback.c b/navit/callback.c
index edf594c3e..d9d1121f5 100644
--- a/navit/callback.c
+++ b/navit/callback.c
@@ -132,7 +132,7 @@ void callback_call(struct callback *cb, int pcount, void **p) {
return;
if (cb->pcount + pcount <= 8) {
dbg(lvl_debug,"cb->pcount=%d", cb->pcount);
- if (cb->pcount && cb->p)
+ if (cb->pcount)
dbg(lvl_debug,"cb->p[0]=%p", cb->p[0]);
dbg(lvl_debug,"pcount=%d", pcount);
if (pcount) {
diff --git a/navit/coord.c b/navit/coord.c
index 3cfa33eff..c452f1c35 100644
--- a/navit/coord.c
+++ b/navit/coord.c
@@ -294,6 +294,7 @@ void coord_print(enum projection pro, struct coord *c, FILE *out) {
* @param lat The latitude (if lat is 360 or greater, the latitude will be omitted)
* @param lng The longitude (if lng is 360 or greater, the longitude will be omitted)
* @param fmt The format to use:
+ * @li DEGREES_DECIMAL_ABSOLUTE=>Degrees with decimal places, i.e. -20.500000 -110.500000 (max: 22 bytes)
* @li DEGREES_DECIMAL=>Degrees with decimal places, i.e. 20.500000°N 110.500000°E (max: 26 bytes)
* @li DEGREES_MINUTES=>Degrees and minutes, i.e. 20°30.0000' N 110°30.0000' E (max: 30 bytes)
* @li DEGREES_MINUTES_SECONDS=>Degrees, minutes and seconds, i.e. 20°30'30.00" N 110°30'30.00" E (max: 32 bytes)
@@ -314,6 +315,16 @@ void coord_format_with_sep(float lat,float lng, enum coord_format fmt, char *buf
if (sep == NULL)
sep = " ";
+ if (fmt==DEGREES_DECIMAL_ABSOLUTE) {
+ if (lat<360)
+ size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.6f",lat);
+ if ((lat<360)&&(lng<360))
+ size_used+=g_snprintf(buffer+size_used,size-size_used,"%s",sep);
+ if (lng<360)
+ size_used+=g_snprintf(buffer+size_used,size-size_used,"%03.7f",lng);
+ return;
+ }
+
if (lng < 0) {
lng=-lng;
lng_c='W';
@@ -322,22 +333,23 @@ void coord_format_with_sep(float lat,float lng, enum coord_format fmt, char *buf
lat=-lat;
lat_c='S';
}
- lat_deg=lat;
- lat_min=(lat-floor(lat_deg))*60;
- lat_sec=fmod(lat*3600,60);
- lng_deg=lng;
- lng_min=(lng-floor(lng_deg))*60;
- lng_sec=fmod(lng*3600,60);
- switch(fmt) {
- case DEGREES_DECIMAL:
+ if (fmt==DEGREES_DECIMAL) {
if (lat<360)
size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.6f°%c",lat,lat_c);
if ((lat<360)&&(lng<360))
size_used+=g_snprintf(buffer+size_used,size-size_used,"%s",sep);
if (lng<360)
size_used+=g_snprintf(buffer+size_used,size-size_used,"%03.7f°%c",lng,lng_c);
- break;
+ return;
+ }
+ lat_deg=lat;
+ lat_min=(lat-floor(lat_deg))*60;
+ lat_sec=fmod(lat*3600,60);
+ lng_deg=lng;
+ lng_min=(lng-floor(lng_deg))*60;
+ lng_sec=fmod(lng*3600,60);
+ switch(fmt) {
case DEGREES_MINUTES:
if (lat<360)
size_used+=g_snprintf(buffer+size_used,size-size_used,"%02.0f°%07.4f' %c",floor(lat_deg),lat_min,lat_c);
@@ -393,7 +405,7 @@ inline void coord_format(float lat,float lng, enum coord_format fmt, char *buffe
* string of the form {@code 45°28'0"N 9°11'26"E}.
*
* @param gc A WGS84 coordinate pair
- * @param[out] buffer A buffer large enough to hold the output + a terminating NUL character (up to 31 bytes)
+ * @param[out] buffer A buffer large enough to hold the output + a terminating NUL character (at least 25 bytes)
* @param size The size of the buffer
* @param[in] sep The separator to use (if needed) between latitude and longitude (if NULL we will use a space)
*/
@@ -409,11 +421,11 @@ inline void coord_geo_format_short(const struct coord_geo *gc, char *buffer, int
* {@code 45°28'0"N 9°11'26"E}.
*
* @param pc Coordinates as integer mercator
- * @param[out] buffer A buffer large enough to hold the output + a terminating NUL character (up to 31 bytes)
+ * @param[out] buffer A buffer large enough to hold the output + a terminating NUL character (at least 25 bytes)
* @param size The size of the buffer
* @param[in] sep The separator to use (if needed) between latitude and longitude (if NULL we will use a space)
*/
-inline void pcoord_format_short(const struct pcoord *pc, char *buffer, int size, char *sep) {
+inline void pcoord_format_degree_short(const struct pcoord *pc, char *buffer, int size, char *sep) {
dbg_assert(pc != NULL);
struct coord_geo g;
struct coord c;
@@ -424,6 +436,27 @@ inline void pcoord_format_short(const struct pcoord *pc, char *buffer, int size,
}
/**
+ * @brief Converts an integer mercator coordinate pair to its string representation.
+ *
+ * This function takes a coordinate pair, transforms it to WGS84 and converts it to a string of the form
+ * {@code 45.28 -9.114333}.
+ *
+ * @param pc Coordinates as integer mercator
+ * @param[out] buffer A buffer large enough to hold the output + a terminating NUL character (at least 23 bytes)
+ * @param size The size of the buffer
+ * @param[in] sep The separator to use (if needed) between latitude and longitude (if NULL we will use a space)
+ */
+inline void pcoord_format_absolute(const struct pcoord *pc, char *buffer, int size, char *sep) {
+ dbg_assert(pc != NULL);
+ struct coord_geo g;
+ struct coord c;
+ c.x=pc->x;
+ c.y=pc->y;
+ transform_to_geo(pc->pro, &c, &g);
+ coord_format_with_sep(g.lat, g.lng, DEGREES_DECIMAL_ABSOLUTE, buffer, size, sep);
+}
+
+/**
* @brief Generate a hash from a struct coord pointed by key
*
* @param[in] key A pointer to the struct coord to hash
diff --git a/navit/coord.h b/navit/coord.h
index 753da5e8c..cad6a86e8 100644
--- a/navit/coord.h
+++ b/navit/coord.h
@@ -113,6 +113,12 @@ struct coord_geo_cart {
enum coord_format
{
/**
+ * Degrees with absolute decimal places (positive or negative)
+ * ie -20.500000 -110.500000
+ */
+ DEGREES_DECIMAL_ABSOLUTE,
+
+ /**
* Degrees with decimal places.
* ie 20.500000°N 110.500000°E
*/
@@ -123,11 +129,13 @@ enum coord_format
* ie 20°30.0000' N 110°30.0000' E
*/
DEGREES_MINUTES,
+
/**
* Degrees, minutes and seconds.
* ie 20°30'30.00" N 110°30'30.00" E
*/
DEGREES_MINUTES_SECONDS,
+
/**
* Degrees, minutes and seconds, brief
* ie 20°30'30"N 110°30'30"E
@@ -153,7 +161,8 @@ void coord_rect_extend(struct coord_rect *r, struct coord *c);
void coord_format_with_sep(float lat,float lng, enum coord_format fmt, char *buffer, int size, const char *sep);
void coord_format(float lat,float lng, enum coord_format fmt, char *buffer, int size);
void coord_geo_format_short(const struct coord_geo *gc, char *buffer, int size, char *sep);
-void pcoord_format_short(const struct pcoord *pc, char *buffer, int size, char *sep);
+void pcoord_format_degree_short(const struct pcoord *pc, char *buffer, int size, char *sep);
+void pcoord_format_absolute(const struct pcoord *pc, char *buffer, int size, char *sep);
char *coordinates_geo(const struct coord_geo *gc, char sep);
/* prototypes */
diff --git a/navit/graphics.c b/navit/graphics.c
index 6aaa0cb09..bc3177322 100644
--- a/navit/graphics.c
+++ b/navit/graphics.c
@@ -2469,13 +2469,6 @@ char *graphics_icon_path(const char *icon) {
ret=g_strdup(icon);
else {
#ifdef HAVE_API_ANDROID
- // get resources for the correct screen density
- //
- // this part not needed, android unpacks only the correct version into res/drawable dir!
- // dbg(lvl_debug,"android icon_path %s",icon);
- // static char *android_density;
- // android_density = getenv("ANDROID_DENSITY");
- // ret=g_strdup_printf("res/drawable-%s/%s",android_density ,icon);
ret=g_strdup_printf("res/drawable/%s",icon);
#else
if (! navit_sharedir)
@@ -3180,7 +3173,7 @@ void graphics_displaylist_draw(struct graphics *gra, struct displaylist *display
graphics_background_gc(gra, gra->gc[0]);
if (flags & 1)
callback_list_call_attr_0(gra->cbl, attr_predraw);
- graphics_draw_mode(gra, draw_mode_begin);
+ graphics_draw_mode(gra, (flags & 8)?draw_mode_begin_clear:draw_mode_begin);
if (!(flags & 2))
graphics_draw_rectangle(gra, gra->gc[0], &gra->r.lu, gra->r.rl.x-gra->r.lu.x, gra->r.rl.y-gra->r.lu.y);
if (l) {
diff --git a/navit/graphics.h b/navit/graphics.h
index 3ea10e271..9a3a33730 100644
--- a/navit/graphics.h
+++ b/navit/graphics.h
@@ -43,7 +43,7 @@ struct mapset;
/* This enum must be synchronized with the constants in NavitGraphics.java. */
enum draw_mode_num {
- draw_mode_begin, draw_mode_end
+ draw_mode_begin, draw_mode_end, draw_mode_begin_clear
};
struct graphics_priv;
diff --git a/navit/graphics/android/graphics_android.c b/navit/graphics/android/graphics_android.c
index e119cf3cc..c6fd37488 100644
--- a/navit/graphics/android/graphics_android.c
+++ b/navit/graphics/android/graphics_android.c
@@ -483,8 +483,9 @@ static void resize_callback(struct graphics_priv *gra, int w, int h) {
callback_list_call_attr_2(gra->cbl, attr_resize, (void *)w, (void *)h);
}
-static void padding_callback(struct graphics_priv *gra, int left, int top, int right, int bottom) {
- dbg(lvl_debug, "win.padding left=%d top=%d right=%d bottom=%d ok", left, top, right, bottom);
+static void padding_changed_callback(struct graphics_priv *gra, int left, int top, int right,
+ int bottom) {
+ dbg(lvl_error, "win.padding left=%d top=%d right=%d bottom=%d", left, top, right, bottom);
gra->padding->left = left;
gra->padding->top = top;
gra->padding->right = right;
@@ -627,45 +628,45 @@ static int graphics_android_init(struct graphics_priv *ret, struct graphics_priv
if (ret->Paint)
ret->Paint = (*jnienv)->NewGlobalRef(jnienv, ret->Paint);
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setSizeChangedCallback", "(I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setSizeChangedCallback", "(J)V");
if (cid == NULL) {
- dbg(lvl_error,"no SetResizeCallback method found");
+ dbg(lvl_error,"no setResizeCallback method found");
return 0; /* exception thrown */
}
cb=callback_new_1(callback_cast(resize_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (jlong)cb);
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setPaddingChangedCallback", "(I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setPaddingChangedCallback", "(J)V");
if (cid == NULL) {
- dbg(lvl_error,"no SetPaddingCallback method found");
+ dbg(lvl_error,"no setPaddingCallback method found");
return 0; /* exception thrown */
}
- cb=callback_new_1(callback_cast(padding_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ cb=callback_new_1(callback_cast(padding_changed_callback), ret);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (jlong)cb);
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setButtonCallback", "(I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setButtonCallback", "(J)V");
if (cid == NULL) {
- dbg(lvl_error,"no SetButtonCallback method found");
+ dbg(lvl_error,"no setButtonCallback method found");
return 0; /* exception thrown */
}
cb=callback_new_1(callback_cast(button_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (jlong)cb);
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setMotionCallback", "(I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setMotionCallback", "(J)V");
if (cid == NULL) {
- dbg(lvl_error,"no SetMotionCallback method found");
+ dbg(lvl_error,"no setMotionCallback method found");
return 0; /* exception thrown */
}
cb=callback_new_1(callback_cast(motion_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (jlong)cb);
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setKeypressCallback", "(I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitGraphicsClass, "setKeypressCallback", "(J)V");
if (cid == NULL) {
- dbg(lvl_error,"no SetKeypressCallback method found");
+ dbg(lvl_error,"no setKeypressCallback method found");
return 0; /* exception thrown */
}
cb=callback_new_1(callback_cast(keypress_callback), ret);
- (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (int)cb);
+ (*jnienv)->CallVoidMethod(jnienv, ret->NavitGraphics, cid, (jlong)cb);
if (!find_method(ret->NavitGraphicsClass, "draw_polyline", "(Landroid/graphics/Paint;[I)V",
&ret->NavitGraphics_draw_polyline))
@@ -696,7 +697,7 @@ static int graphics_android_init(struct graphics_priv *ret, struct graphics_priv
return 0;
if (!find_method(ret->NavitGraphicsClass, "overlay_resize", "(IIIII)V", &ret->NavitGraphics_overlay_resize))
return 0;
- if (!find_method(ret->NavitGraphicsClass, "SetCamera", "(I)V", &ret->NavitGraphics_SetCamera))
+ if (!find_method(ret->NavitGraphicsClass, "setCamera", "(I)V", &ret->NavitGraphics_SetCamera))
return 0;
#if 0
set_activity(ret->NavitGraphics);
@@ -732,7 +733,7 @@ static void graphics_android_disable_suspend(struct window *win) {
static void graphics_android_cmd_runMenuItem(struct graphics_priv *this, char *function, struct attr **in,
struct attr ***out, int *valid) {
int ncmd=0;
- dbg(0,"Running %s",function);
+ dbg(lvl_debug,"Running %s",function);
if(!strcmp(function,"map_download_dialog")) {
ncmd=3;
} else if(!strcmp(function,"backup_restore_dialog")) {
@@ -911,7 +912,7 @@ static jmethodID NavitWatch_remove;
static void do_poll(JNIEnv *env, int fd, int cond) {
struct pollfd pfd;
pfd.fd=fd;
- dbg(lvl_debug,"%p poll called for %d %d", fd, cond);
+ dbg(lvl_debug,"poll called for %d %d", fd, cond);
switch ((enum event_watch_cond)cond) {
case event_watch_cond_read:
pfd.events=POLLIN;
@@ -931,8 +932,8 @@ static void do_poll(JNIEnv *env, int fd, int cond) {
static struct event_watch *event_android_add_watch(int h, enum event_watch_cond cond, struct callback *cb) {
jobject ret;
- ret=(*jnienv)->NewObject(jnienv, NavitWatchClass, NavitWatch_init, (int)do_poll, h, (int) cond, (int)cb);
- dbg(lvl_debug,"result for %d,%d,%p=%p",h,cond,cb,ret);
+ ret=(*jnienv)->NewObject(jnienv, NavitWatchClass, NavitWatch_init, (jlong)do_poll, h, (jint) cond, (jlong)cb);
+ dbg(lvl_debug,"result for %d,%d,%p = %p",h,cond,cb,ret);
if (ret)
ret = (*jnienv)->NewGlobalRef(jnienv, ret);
return (struct event_watch *)ret;
@@ -973,7 +974,8 @@ static struct event_timeout *event_android_add_timeout(int timeout, int multi, s
ret->cb = cb;
ret->multi = multi;
ret->handle_timeout = event_android_handle_timeout;
- ret->jni_timeout = (*jnienv)->NewObject(jnienv, NavitTimeoutClass, NavitTimeout_init, timeout, multi, (int)ret);
+ ret->jni_timeout = (*jnienv)->NewObject(jnienv, NavitTimeoutClass, NavitTimeout_init, timeout, multi, (jlong)(ret));
+ dbg(lvl_debug,"result for %d,%d,%p = %p",timeout,multi,cb,ret);
if (ret->jni_timeout)
ret->jni_timeout = (*jnienv)->NewGlobalRef(jnienv, ret->jni_timeout);
return ret;
@@ -1025,7 +1027,7 @@ static struct event_priv *event_android_new(struct event_methods *meth) {
dbg(lvl_debug,"enter");
if (!find_class_global("org/navitproject/navit/NavitTimeout", &NavitTimeoutClass))
return NULL;
- NavitTimeout_init = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "<init>", "(IZI)V");
+ NavitTimeout_init = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "<init>", "(IZJ)V");
if (NavitTimeout_init == NULL)
return NULL;
NavitTimeout_remove = (*jnienv)->GetMethodID(jnienv, NavitTimeoutClass, "remove", "()V");
@@ -1044,7 +1046,7 @@ static struct event_priv *event_android_new(struct event_methods *meth) {
if (!find_class_global("org/navitproject/navit/NavitWatch", &NavitWatchClass))
return NULL;
- NavitWatch_init = (*jnienv)->GetMethodID(jnienv, NavitWatchClass, "<init>", "(IIII)V");
+ NavitWatch_init = (*jnienv)->GetMethodID(jnienv, NavitWatchClass, "<init>", "(JIIJ)V");
if (NavitWatch_init == NULL)
return NULL;
NavitWatch_remove = (*jnienv)->GetMethodID(jnienv, NavitWatchClass, "remove", "()V");
@@ -1056,7 +1058,7 @@ static struct event_priv *event_android_new(struct event_methods *meth) {
Navit_disableSuspend = (*jnienv)->GetMethodID(jnienv, NavitClass, "disableSuspend", "()V");
if (Navit_disableSuspend == NULL)
return NULL;
- Navit_exit = (*jnienv)->GetMethodID(jnienv, NavitClass, "exit", "()V");
+ Navit_exit = (*jnienv)->GetMethodID(jnienv, NavitClass, "onDestroy", "()V");
if (Navit_exit == NULL)
return NULL;
Navit_fullscreen = (*jnienv)->GetMethodID(jnienv, NavitClass, "fullscreen", "(I)V");
@@ -1076,7 +1078,12 @@ static struct event_priv *event_android_new(struct event_methods *meth) {
return NULL;
}
-
+/* below needs review, android resizes the view and the actual height of the keyboard is not
+ * passed down here and is irrelevant, only wether it is onscreen matters, so
+ * android returns a height of 1 px in the case of an onscreen keyboard just
+ * to keep the logic to remove the keyboard from the screen afterwards working untill
+ * the logic in native code is reviewed.
+ * /
/**
* @brief Displays the native input method.
*
@@ -1096,14 +1103,12 @@ static struct event_priv *event_android_new(struct event_methods *meth) {
* @return True if the input method is going to be displayed, false if not.
*/
int show_native_keyboard (struct graphics_keyboard *kbd) {
- kbd->w = -1;
if (Navit_showNativeKeyboard == NULL) {
dbg(lvl_error, "method Navit.showNativeKeyboard() not found, cannot display keyboard");
return 0;
}
kbd->h = (*jnienv)->CallIntMethod(jnienv, android_activity, Navit_showNativeKeyboard);
- dbg(lvl_error, "keyboard size is %d x %d px", kbd->w, kbd->h);
- dbg(lvl_error, "return");
+ dbg(lvl_error, "keyboard height is %d px is a lie", kbd->h);
/* zero height means we're not showing a keyboard, therefore normalize height to boolean */
return !!(kbd->h);
}
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c
index 23dae0808..61756b485 100644
--- a/navit/gui/internal/gui_internal.c
+++ b/navit/gui/internal/gui_internal.c
@@ -1067,7 +1067,7 @@ void gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, s
w=gui_internal_box_new(this, gravity_top_center|orientation_vertical|flags_expand|flags_fill);
gui_internal_widget_append(wb, w);
char coord_str[32];
- pcoord_format_short(&pc, coord_str, sizeof(coord_str), " ");
+ pcoord_format_degree_short(&pc, coord_str, sizeof(coord_str), " ");
gui_internal_widget_append(w, gui_internal_label_new(this, coord_str));
wtable = gui_internal_widget_table_new(this,gravity_left_top | flags_fill | flags_expand |orientation_vertical,1);
gui_internal_widget_append(w,wtable);
diff --git a/navit/navit.c b/navit/navit.c
index ae39aca59..63ed65807 100644
--- a/navit/navit.c
+++ b/navit/navit.c
@@ -2450,6 +2450,9 @@ void navit_set_center_cursor(struct navit *this_, int autozoom, int keep_orienta
struct point pn;
struct navit_vehicle *nv=this_->vehicle;
struct attr attr;
+ if (!nv || !nv->vehicle) {
+ return;
+ }
if (vehicle_get_attr(nv->vehicle, attr_position_valid, &attr, NULL) && (attr.u.num == attr_position_valid_invalid))
return;
navit_get_cursor_pnt(this_, &pn, keep_orientation, &dir);
diff --git a/navit/speech/android/speech_android.c b/navit/speech/android/speech_android.c
index fb0574166..a2aa24bfd 100644
--- a/navit/speech/android/speech_android.c
+++ b/navit/speech/android/speech_android.c
@@ -94,8 +94,6 @@ static struct speech_priv *speech_android_new(struct speech_methods *meth, struc
struct attr *flags;
*meth=speech_android_meth;
this=g_new0(struct speech_priv,1);
- if (android_version < 4)
- this->flags=3;
if (!speech_android_init(this)) {
dbg(lvl_error,"Failed to init speech %p",this->NavitSpeechClass);
g_free(this);
diff --git a/navit/support/glib/fake.h b/navit/support/glib/fake.h
index ba9b17750..ae9f0c88f 100644
--- a/navit/support/glib/fake.h
+++ b/navit/support/glib/fake.h
@@ -6,6 +6,7 @@
#include <pthread.h>
#endif
#include "debug.h"
+#include "gtypes.h"
#define g_return_if_fail
@@ -20,6 +21,11 @@
# define g_private_new(xd) g_private_new_navit()
# define g_private_get(xd) pthread_getspecific(xd)
# define g_private_set(a,b) pthread_setspecific(a, b)
+
+pthread_mutex_t* g_mutex_new_navit(void);
+void g_get_current_time (GTimeVal *result);
+GPrivate g_private_new_navit ();
+
#else
# if HAVE_API_WIN32_BASE
# define GMutex CRITICAL_SECTION
diff --git a/navit/support/glib/glibconfig.h b/navit/support/glib/glibconfig.h
index 6baa58873..bb3e68cb3 100644
--- a/navit/support/glib/glibconfig.h
+++ b/navit/support/glib/glibconfig.h
@@ -69,7 +69,7 @@ typedef unsigned __int64 guint64;
#define G_GINT64_FORMAT "I64i"
#define G_GUINT64_FORMAT "I64u"
-#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64)
+#if defined(_WIN64) || defined(_M_X64) || defined(_M_AMD64) || defined(__LP64__)
#define GLIB_SIZEOF_VOID_P 8
#define GLIB_SIZEOF_LONG 4
@@ -107,7 +107,7 @@ typedef gint64 goffset;
#define G_MINOFFSET G_MININT64
#define G_MAXOFFSET G_MAXINT64
-#ifndef _WIN64
+#if !defined(_WIN64) && !defined(__LP64__)
#define GPOINTER_TO_INT(p) ((gint) (p))
#define GPOINTER_TO_UINT(p) ((guint) (p))
diff --git a/navit/support/glib/gslice.c b/navit/support/glib/gslice.c
index 29165bc5a..82394c8b2 100644
--- a/navit/support/glib/gslice.c
+++ b/navit/support/glib/gslice.c
@@ -34,6 +34,7 @@
#include "gthreadprivate.h"
#include "glib.h"
#include "galias.h"
+#include "fake.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h> /* sysconf() */
#endif
@@ -1265,17 +1266,17 @@ smc_notify_free (void *pointer,
found_one = smc_tree_lookup (adress, &real_size);
if (!found_one)
{
- fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
+// fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
return 0;
}
if (real_size != size && (real_size || size))
{
- fprintf (stderr, "GSlice: MemChecker: attempt to release block with invalid size: %p size=%" G_GSIZE_FORMAT " invalid-size=%" G_GSIZE_FORMAT "\n", pointer, real_size, size);
+// fprintf (stderr, "GSlice: MemChecker: attempt to release block with invalid size: %p size=%" G_GSIZE_FORMAT " invalid-size=%" G_GSIZE_FORMAT "\n", pointer, real_size, size);
return 0;
}
if (!smc_tree_remove (adress))
{
- fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
+// fprintf (stderr, "GSlice: MemChecker: attempt to release non-allocated block: %p size=%" G_GSIZE_FORMAT "\n", pointer, size);
return 0;
}
return 1; /* all fine */
diff --git a/navit/traffic/traff_android/traffic_traff_android.c b/navit/traffic/traff_android/traffic_traff_android.c
index 91d408777..1612b3a5f 100644
--- a/navit/traffic/traff_android/traffic_traff_android.c
+++ b/navit/traffic/traff_android/traffic_traff_android.c
@@ -117,13 +117,13 @@ static int traffic_traff_android_init(struct traffic_priv * this_) {
if (!android_find_class_global("org/navitproject/navit/NavitTraff", &this_->NavitTraffClass))
return 0;
- cid = (*jnienv)->GetMethodID(jnienv, this_->NavitTraffClass, "<init>", "(Landroid/content/Context;I)V");
+ cid = (*jnienv)->GetMethodID(jnienv, this_->NavitTraffClass, "<init>", "(Landroid/content/Context;J)V");
if (cid == NULL) {
dbg(lvl_error,"no method found");
return 0; /* exception thrown */
}
- this_->NavitTraff=(*jnienv)->NewObject(jnienv, this_->NavitTraffClass, cid, android_application,
- (int) this_->cbid);
+ this_->NavitTraff=(*jnienv)->NewObject(jnienv, this_->NavitTraffClass, cid, android_activity,
+ (jlong) this_->cbid);
dbg(lvl_debug,"result=%p", this_->NavitTraff);
if (!this_->NavitTraff)
return 0;
diff --git a/navit/vehicle/android/vehicle_android.c b/navit/vehicle/android/vehicle_android.c
index f6173e1b3..4db8c875d 100644
--- a/navit/vehicle/android/vehicle_android.c
+++ b/navit/vehicle/android/vehicle_android.c
@@ -233,14 +233,13 @@ static int vehicle_android_init(struct vehicle_priv *ret) {
if (!android_find_class_global("org/navitproject/navit/NavitVehicle", &ret->NavitVehicleClass))
return 0;
dbg(lvl_debug,"at 3");
- cid = (*jnienv)->GetMethodID(jnienv, ret->NavitVehicleClass, "<init>", "(Landroid/content/Context;III)V");
+ cid = (*jnienv)->GetMethodID(jnienv, ret->NavitVehicleClass, "<init>", "(Landroid/content/Context;JJJ)V");
if (cid == NULL) {
dbg(lvl_error,"no method found");
return 0; /* exception thrown */
}
- dbg(lvl_debug, "at 4 android_application=%p", android_application);
- ret->NavitVehicle=(*jnienv)->NewObject(jnienv, ret->NavitVehicleClass, cid, android_application,
- (int) ret->pcb, (int) ret->scb, (int) ret->fcb);
+ ret->NavitVehicle=(*jnienv)->NewObject(jnienv, ret->NavitVehicleClass, cid, android_activity,
+ (jlong) ret->pcb, (jlong) ret->scb, (jlong) ret->fcb);
dbg(lvl_debug,"result=%p",ret->NavitVehicle);
if (!ret->NavitVehicle)
return 0;
diff --git a/navit/xslt/android.xslt b/navit/xslt/android.xslt
index 3a1fdaf02..7a29ae4c8 100644
--- a/navit/xslt/android.xslt
+++ b/navit/xslt/android.xslt
@@ -34,6 +34,7 @@
<xsl:attribute name="icon_s"><xsl:value-of select="number($ICON_MEDIUM)"/></xsl:attribute>
<xsl:attribute name="icon_l"><xsl:value-of select="number($ICON_BIG)"/></xsl:attribute>
<xsl:attribute name="spacing"><xsl:value-of select="round(2*number($OSD_SIZE))"/></xsl:attribute>
+ <xsl:attribute name="keyboard">false</xsl:attribute>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>