diff --git a/app/build.gradle b/app/build.gradle
index a16499a1..9f3f88c8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -79,7 +79,7 @@ dependencies {
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation "androidx.preference:preference:1.2.1"
- implementation "androidx.work:work-runtime:2.8.1"
+ implementation "androidx.work:work-runtime:2.9.0"
implementation 'androidx.core:core-splashscreen:1.0.1'
implementation 'com.google.code.findbugs:jsr305:3.0.2'
implementation 'androidx.annotation:annotation:1.7.0'
@@ -88,8 +88,7 @@ dependencies {
implementation 'com.github.andreynovikov:Geo-Coordinate-Conversion-Java:v1.0.0'
implementation 'com.caverock:androidsvg:1.4'
implementation 'org.slf4j:slf4j-api:2.0.9'
- implementation 'org.slf4j:slf4j-jdk14:2.0.9'
- implementation 'com.noveogroup.android:android-logger:1.3.6'
+ implementation 'com.github.tony19:logback-android:3.0.0'
implementation 'org.greenrobot:eventbus:3.0.0'
implementation 'com.squareup.okhttp3:okhttp:4.8.1'
implementation 'org.openstreetmap.osmosis:osmosis-osm-binary:0.48.3'
diff --git a/app/src/main/assets/logback.xml b/app/src/main/assets/logback.xml
new file mode 100644
index 00000000..70c3c52a
--- /dev/null
+++ b/app/src/main/assets/logback.xml
@@ -0,0 +1,29 @@
+
+
+
+ %logger{32}
+
+
+ [%-10thread] %msg
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/mobi/maptrek/DataImportActivity.java b/app/src/main/java/mobi/maptrek/DataImportActivity.java
index 9c887bea..78f54d4c 100644
--- a/app/src/main/java/mobi/maptrek/DataImportActivity.java
+++ b/app/src/main/java/mobi/maptrek/DataImportActivity.java
@@ -18,12 +18,10 @@
import android.Manifest;
import android.annotation.SuppressLint;
-import android.app.Activity;
import android.app.AlertDialog;
-import android.app.Fragment;
-import android.app.FragmentManager;
import android.content.ComponentName;
import android.content.ContentResolver;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PermissionInfo;
@@ -37,6 +35,10 @@
import android.provider.OpenableColumns;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
@@ -63,7 +65,7 @@
import mobi.maptrek.util.ProgressHandler;
import mobi.maptrek.util.ProgressListener;
-public class DataImportActivity extends Activity {
+public class DataImportActivity extends FragmentActivity {
private static final Logger logger = LoggerFactory.getLogger(DataImportActivity.class);
private static final String DATA_IMPORT_FRAGMENT = "dataImportFragment";
private static final DateFormat SUFFIX_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss", Locale.ROOT);
@@ -87,7 +89,7 @@ protected void onCreate(Bundle savedInstanceState) {
mProgressBar = findViewById(R.id.progressBar);
mActionButton = findViewById(R.id.action);
- FragmentManager fm = getFragmentManager();
+ FragmentManager fm = getSupportFragmentManager();
mDataImportFragment = (DataImportFragment) fm.findFragmentByTag(DATA_IMPORT_FRAGMENT);
if (mDataImportFragment == null) {
mDataImportFragment = new DataImportFragment();
@@ -171,19 +173,15 @@ private void askForPermission(Runnable task) {
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- switch (requestCode) {
- case PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE: {
- // If request is cancelled, the result arrays are empty.
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- if (mTask != null)
- mDataImportFragment.startImport(mTask);
- } else {
- finish();
- }
- // return;
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
+ if (requestCode == PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE) {
+ // If request is cancelled, the result arrays are empty.
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ if (mTask != null)
+ mDataImportFragment.startImport(mTask);
+ } else {
+ finish();
}
- // other 'case' lines to check for other
- // permissions this app might request
}
}
@@ -273,19 +271,21 @@ public void setProgressHandler(ProgressListener listener) {
private void processIntent(final Intent intent) {
String action = intent.getAction();
String type = intent.getType();
- logger.debug("Action: {}", action);
+ logger.error("Action: {}", action);
logger.debug("Type: {}", type);
if (Intent.ACTION_SEND.equals(action) || Intent.ACTION_VIEW.equals(action)) {
Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
if (uri == null)
uri = intent.getData();
- logger.debug("Uri: {}", uri.toString());
+ if (uri == null)
+ return;
+ logger.debug("Uri: {}", uri);
logger.debug("Authority: {}", uri.getAuthority());
final Uri finalUri = uri;
Runnable task = () -> readFile(finalUri);
String scheme = uri.getScheme();
if ("file".equals(scheme)) {
- ((DataImportActivity) getActivity()).askForPermission(task);
+ ((DataImportActivity) requireActivity()).askForPermission(task);
} else {
startImport(task);
}
@@ -302,18 +302,20 @@ private void processIntent(final Intent intent) {
}
private void readFile(Uri uri) {
- DataImportActivity activity = (DataImportActivity) getActivity();
+ DataImportActivity activity = (DataImportActivity) requireActivity();
String name = null;
long length = -1;
String scheme = uri.getScheme();
if ("file".equals(scheme)) {
- String path = uri.getPath();
- File src = new File(path);
- name = uri.getLastPathSegment();
- length = src.length();
try {
+ String path = uri.getPath();
+ if (path == null)
+ throw new FileNotFoundException();
+ File src = new File(path);
+ name = uri.getLastPathSegment();
+ length = src.length();
mInputStream = new MonitoredInputStream(new FileInputStream(src));
} catch (FileNotFoundException e) {
logger.error("Failed to get imported file stream", e);
@@ -326,9 +328,11 @@ private void readFile(Uri uri) {
Cursor cursor = resolver.query(uri, new String[]{OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE}, null, null, null);
if (cursor != null) {
logger.debug(" from cursor");
- if (cursor.moveToFirst()) {
- name = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
- length = cursor.getLong(cursor.getColumnIndex(OpenableColumns.SIZE));
+ int nameIndex = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
+ int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+ if (nameIndex >= 0 && sizeIndex >= 0 && cursor.moveToFirst()) {
+ name = cursor.getString(nameIndex);
+ length = cursor.getLong(sizeIndex);
}
cursor.close();
}
@@ -341,11 +345,10 @@ private void readFile(Uri uri) {
cursor.close();
}
if (length == -1) {
- try {
- AssetFileDescriptor afd = resolver.openAssetFileDescriptor(uri, "r");
+ try (AssetFileDescriptor afd = resolver.openAssetFileDescriptor(uri, "r")) {
if (afd != null)
length = afd.getLength();
- } catch (FileNotFoundException e) {
+ } catch (IOException e) {
e.printStackTrace();
}
}
@@ -370,6 +373,12 @@ private void readFile(Uri uri) {
return;
}
+ if (name == null) {
+ logger.error("Failed to get file name");
+ activity.showError(getString(R.string.msgFailedToGetFileName));
+ return;
+ }
+
if (!name.endsWith(TrackManager.EXTENSION) &&
!name.endsWith(KMLManager.EXTENSION) &&
!name.endsWith(KMLManager.ZIP_EXTENSION) &&
@@ -385,7 +394,7 @@ private void readFile(Uri uri) {
mProgressListener.onProgressAnnotated(name);
File dst = null;
try {
- dst = getDestinationFile(name);
+ dst = getDestinationFile(activity, name);
mInputStream.addChangeListener(location -> {
if (mProgressListener != null) {
@@ -406,9 +415,9 @@ private void readFile(Uri uri) {
}
@Nullable
- private File getDestinationFile(String filename) {
+ private File getDestinationFile(@NonNull Context context, String filename) {
boolean isMap = filename.endsWith(".mbtiles") || filename.endsWith(".sqlitedb");
- File dir = getContext().getExternalFilesDir(isMap ? "maps" : "data");
+ File dir = context.getExternalFilesDir(isMap ? "maps" : "data");
if (dir == null) {
logger.error("Path for {} unavailable", isMap ? "maps" : "data");
return null;
diff --git a/app/src/main/java/mobi/maptrek/DataLoader.java b/app/src/main/java/mobi/maptrek/DataLoader.java
index 58c56613..c2e293ea 100644
--- a/app/src/main/java/mobi/maptrek/DataLoader.java
+++ b/app/src/main/java/mobi/maptrek/DataLoader.java
@@ -16,11 +16,12 @@
package mobi.maptrek;
-import android.content.AsyncTaskLoader;
import android.content.Context;
import android.os.FileObserver;
import android.util.Pair;
+import androidx.loader.content.AsyncTaskLoader;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -216,7 +217,7 @@ protected void onStartLoading() {
logger.debug("onStartLoading()");
if (mData != null) {
// Deliver any previously loaded data immediately.
- deliverResult(new ArrayList());
+ deliverResult(new ArrayList<>());
}
// Begin monitoring the underlying data source.
diff --git a/app/src/main/java/mobi/maptrek/MainActivity.java b/app/src/main/java/mobi/maptrek/MainActivity.java
index cd5ed326..37f006ef 100644
--- a/app/src/main/java/mobi/maptrek/MainActivity.java
+++ b/app/src/main/java/mobi/maptrek/MainActivity.java
@@ -24,9 +24,7 @@
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint;
-import android.app.Activity;
import android.app.AlertDialog;
-import android.app.LoaderManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -34,7 +32,6 @@
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.Loader;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
@@ -54,8 +51,10 @@
import android.os.Looper;
import android.os.Message;
import android.os.SystemClock;
-import android.preference.PreferenceManager;
+import androidx.activity.result.ActivityResultCallback;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.DrawableRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -80,6 +79,9 @@
import androidx.fragment.app.FragmentFactory;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import androidx.loader.app.LoaderManager;
+import androidx.loader.content.Loader;
+import androidx.preference.PreferenceManager;
import android.text.Html;
import android.text.method.LinkMovementMethod;
@@ -745,9 +747,6 @@ public void onChildViewRemoved(View parent, View child) {
//if (mapObject != null)
// startNavigation(mapObject, Configuration.getNavigationViaRoute());
- // Initialize data loader
- getLoaderManager();
-
// Get back to full screen mode after edge swipe
/*
decorView.setOnSystemUiVisibilityChangeListener(
@@ -886,7 +885,7 @@ protected void onStart() {
logger.debug("onStart()");
// Start loading user data
- DataLoader loader = (DataLoader) getLoaderManager().initLoader(0, null, this);
+ DataLoader loader = (DataLoader) LoaderManager.getInstance(this).initLoader(0, null, this);
loader.setProgressHandler(mProgressHandler);
ContextCompat.registerReceiver(this, mBroadcastReceiver, new IntentFilter(MapService.BROADCAST_MAP_ADDED), ContextCompat.RECEIVER_NOT_EXPORTED);
@@ -1039,7 +1038,7 @@ protected void onStop() {
unregisterReceiver(mBroadcastReceiver);
- Loader> loader = getLoaderManager().getLoader(0);
+ Loader> loader = LoaderManager.getInstance(this).getLoader(0);
if (loader != null) {
((DataLoader) loader).setProgressHandler(null);
}
@@ -1152,17 +1151,13 @@ public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
setPanelState((PANEL_STATE) savedInstanceState.getSerializable("panelState"));
}
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
- super.onActivityResult(requestCode, resultCode, resultData);
- if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
- if (resultData != null) {
- Uri uri = resultData.getData();
- Intent intent = new Intent(Intent.ACTION_SEND, uri, this, DataImportActivity.class);
+ ActivityResultLauncher mGetContent = registerForActivityResult(
+ new ActivityResultContracts.GetContent(),
+ uri -> {
+ Intent intent = new Intent(Intent.ACTION_SEND, uri, MainActivity.this, DataImportActivity.class);
startActivity(intent);
}
- }
- }
+ );
@Override
public boolean onMenuItemClick(MenuItem item) {
@@ -1332,10 +1327,7 @@ public boolean onMenuItemClick(MenuItem item) {
startMapSelection(true);
return true;
} else if (action == R.id.actionImport) {
- Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- intent.setType("*/*");
- startActivityForResult(intent, 1);
+ mGetContent.launch("*/*");
return true;
} else if (action == R.id.actionHideSystemUI) {
if (Configuration.getHideSystemUI())
@@ -1749,8 +1741,11 @@ private void onMoreClicked() {
MenuItem item = menu.findItem(R.id.actionActivity);
String[] activities = resources.getStringArray(R.array.activities);
int activity = Configuration.getActivity();
- if (activity > 0)
- ((TextView) item.getActionView()).setText(activities[activity]);
+ if (activity > 0) {
+ TextView textView = (TextView) item.getActionView();
+ if (textView != null)
+ textView.setText(activities[activity]);
+ }
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
menu.findItem(R.id.actionHideSystemUI).setChecked(Configuration.getHideSystemUI());
} else {
@@ -2857,7 +2852,7 @@ public void onTrackSave(final Track track) {
File thisFile = new File(fileSource.path);
File thatFile = new File(thisFile.getParent(), FileUtils.sanitizeFilename(track.name) + TrackManager.EXTENSION);
if (!thisFile.equals(thatFile)) {
- Loader> loader = getLoaderManager().getLoader(0);
+ Loader> loader = LoaderManager.getInstance(this).getLoader(0);
if (loader != null) {
// Let loader do the task if it is available
((DataLoader) loader).renameSource(fileSource, thatFile);
@@ -3982,6 +3977,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
}
}
+ @NonNull
@Override
public Loader> onCreateLoader(int id, Bundle args) {
logger.debug("onCreateLoader({})", id);
@@ -3989,7 +3985,7 @@ public Loader> onCreateLoader(int id, Bundle args) {
}
@Override
- public void onLoadFinished(Loader> loader, List data) {
+ public void onLoadFinished(@NonNull Loader> loader, List data) {
logger.debug("onLoadFinished()");
if (data == null)
return;
@@ -4010,7 +4006,7 @@ public void onLoadFinished(Loader> loader, List> loader) {
+ public void onLoaderReset(@NonNull Loader> loader) {
}
@@ -4018,7 +4014,7 @@ public void onLoaderReset(Loader> loader) {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
- logger.error("Broadcast: {}", action); // FIXME: test!
+ logger.debug("Broadcast: {}", action);
if (MapService.BROADCAST_MAP_ADDED.equals(action) || MapService.BROADCAST_MAP_REMOVED.equals(action)) {
mMap.clearMap();
}
@@ -4243,7 +4239,7 @@ public void setDataSourceAvailability(FileDataSource source, boolean available)
removeSourceFromMap(source);
}
source.setVisible(available); // Set visibility for UI response, it does not affect other parts as source is replaced by loader
- Loader> loader = getLoaderManager().getLoader(0);
+ Loader> loader = LoaderManager.getInstance(this).getLoader(0);
if (loader != null)
((DataLoader) loader).markDataSourceLoadable(source, available);
mMap.updateMap(true);
diff --git a/app/src/main/java/mobi/maptrek/MapTrek.java b/app/src/main/java/mobi/maptrek/MapTrek.java
index 2a592333..4245a483 100644
--- a/app/src/main/java/mobi/maptrek/MapTrek.java
+++ b/app/src/main/java/mobi/maptrek/MapTrek.java
@@ -29,12 +29,15 @@
import android.database.sqlite.SQLiteCantOpenDatabaseException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
+import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.preference.PreferenceManager;
+import androidx.work.Data;
+import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkInfo;
import androidx.work.WorkManager;
@@ -70,12 +73,14 @@
import mobi.maptrek.data.source.WaypointDbDataSource;
import mobi.maptrek.maps.MapFile;
import mobi.maptrek.maps.MapIndex;
+import mobi.maptrek.maps.MapService;
import mobi.maptrek.maps.MapWorker;
import mobi.maptrek.maps.maptrek.HillshadeDatabaseHelper;
import mobi.maptrek.maps.maptrek.Index;
import mobi.maptrek.maps.maptrek.MapTrekDatabaseHelper;
import mobi.maptrek.maps.maptrek.Tags;
import mobi.maptrek.util.LongSparseArrayIterator;
+import mobi.maptrek.util.NativeMapFilenameFilter;
import mobi.maptrek.util.OsmcSymbolFactory;
import mobi.maptrek.util.SafeResultReceiver;
import mobi.maptrek.util.ShieldFactory;
@@ -156,10 +161,9 @@ public void onCreate() {
AppCompatDelegate.setDefaultNightMode(Configuration.getNightModeState());
- /*
if (BuildConfig.DEBUG) {
// Look for test maps and import them
- File dir = getExternalDir("native");
+ File dir = getExternalFilesDir("native");
File[] mapFiles = dir.listFiles(new NativeMapFilenameFilter());
for (File mapFile : mapFiles) {
if (mapFile.getName().matches("\\d+-\\d+\\.mtiles")) {
@@ -183,7 +187,6 @@ public void onCreate() {
}
}
}
- */
}
private void initializeSettings() {
diff --git a/app/src/main/java/mobi/maptrek/location/LocationService.java b/app/src/main/java/mobi/maptrek/location/LocationService.java
index 76c37f77..02e69c03 100644
--- a/app/src/main/java/mobi/maptrek/location/LocationService.java
+++ b/app/src/main/java/mobi/maptrek/location/LocationService.java
@@ -48,10 +48,10 @@
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.os.SystemClock;
-import android.preference.PreferenceManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.preference.PreferenceManager;
import android.text.format.DateUtils;
import org.slf4j.Logger;
@@ -542,7 +542,7 @@ public void tryToSaveTrack() {
//TODO Try to 'guess' starting and ending location name
mLastTrack.description = DateUtils.formatDateRange(this, startTime, stopTime, flags) +
- " \u2014 " + StringFormatter.distanceH(mLastTrack.getDistance());
+ " — " + StringFormatter.distanceH(mLastTrack.getDistance());
flags |= DateUtils.FORMAT_ABBREV_ALL | DateUtils.FORMAT_SHOW_YEAR | DateUtils.FORMAT_SHOW_DATE;
mLastTrack.name = DateUtils.formatDateRange(this, startTime, stopTime, flags);
@@ -1067,6 +1067,7 @@ public void run() {
mLastKnownLocation = new Location(LocationManager.GPS_PROVIDER);
mLastKnownLocation.setTime(System.currentTimeMillis());
+ mLastKnownLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
mLastKnownLocation.setAccuracy(3 + mMockLocationTicker % 100);
mLastKnownLocation.setSpeed(20);
mLastKnownLocation.setAltitude(20 + mMockLocationTicker);
@@ -1093,19 +1094,19 @@ public void run() {
mLastKnownLocation.setBearing(270);
}
*/
- double lat = 60.0 + mMockLocationTicker * 0.0001;
+ double lat = 60.0 - mMockLocationTicker * 0.0001;
double lon = 30.3;
if (ddd < 10) {
- mLastKnownLocation.setBearing(ddd);
+ mLastKnownLocation.setBearing(180 + ddd);
}
if (ddd < 90) {
- mLastKnownLocation.setBearing(10);
+ mLastKnownLocation.setBearing(180 + 10);
} else if (ddd < 110) {
- mLastKnownLocation.setBearing(100 - ddd);
+ mLastKnownLocation.setBearing(180 + 100 - ddd);
} else if (ddd < 190) {
- mLastKnownLocation.setBearing(-10);
+ mLastKnownLocation.setBearing(180 - 10);
} else {
- mLastKnownLocation.setBearing(-200 + ddd);
+ mLastKnownLocation.setBearing(180 - 200 + ddd);
}
mLastKnownLocation.setLatitude(lat);
mLastKnownLocation.setLongitude(lon);
diff --git a/app/src/main/java/mobi/maptrek/location/NavigationService.java b/app/src/main/java/mobi/maptrek/location/NavigationService.java
index 14533883..dcd86a32 100644
--- a/app/src/main/java/mobi/maptrek/location/NavigationService.java
+++ b/app/src/main/java/mobi/maptrek/location/NavigationService.java
@@ -31,7 +31,8 @@
import android.os.Bundle;
import android.os.IBinder;
import android.os.SystemClock;
-import android.preference.PreferenceManager;
+
+import androidx.preference.PreferenceManager;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -42,7 +43,6 @@
import org.slf4j.LoggerFactory;
import java.io.File;
-import java.util.Locale;
import mobi.maptrek.Configuration;
import mobi.maptrek.MainActivity;
diff --git a/app/src/main/resources/android-logger.properties b/app/src/main/resources/android-logger.properties
deleted file mode 100644
index 7df75c6b..00000000
--- a/app/src/main/resources/android-logger.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-# suppress inspection "UnusedProperty" for whole file
-# suppress inspection "SpellCheckingInspection" for whole file
-
-# Android Logger configuration
-root=ERROR:MapTrek:%logger
-
-# DEBUG (and higher) messages
-#logger.mobi.maptrek.MainActivity=DEBUG:MainActivity
-#logger.mobi.maptrek.DataMoveActivity=DEBUG:DataMove
-#logger.mobi.maptrek.DataImportActivity=DEBUG:DataImport
-#logger.mobi.maptrek.maps.Themes=DEBUG:Themes
-#logger.mobi.maptrek.maps.MapIndex=DEBUG:MapIndex
-#logger.mobi.maptrek.maps.maptrek.Index=DEBUG:Index
-#logger.mobi.maptrek.maps.maptrek.MapTrekTileDecoder=DEBUG:MapTrekTileDecoder
-#logger.mobi.maptrek.location.LocationService=DEBUG:Location
-#logger.mobi.maptrek.location.NavigationService=DEBUG:Navigation
-#logger.mobi.maptrek.WaypointsRestoreReceiver=DEBUG:WaypointsRestoreReceiver
-#logger.mobi.maptrek.view.GaugePanel=DEBUG:GaugePanel
-#logger.mobi.maptrek.util.OsmcSymbolFactory=WARN:OsmcSymbolFactory
-
-logger.org.oscim.theme.XmlThemeBuilder=DEBUG:XmlThemeBuilder
-logger.org.oscim=WARN:VTM
\ No newline at end of file