summaryrefslogtreecommitdiff
path: root/navit/android/src/org/navitproject/navit
diff options
context:
space:
mode:
Diffstat (limited to 'navit/android/src/org/navitproject/navit')
-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
20 files changed, 1954 insertions, 2122 deletions
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");
+ }
}
}