From 460289ba801ecd5c8901ccf8c7c98fb6bdae3425 Mon Sep 17 00:00:00 2001 From: Andrey Novikov Date: Tue, 19 Dec 2023 23:29:48 +0300 Subject: [PATCH] Fix some deprecations --- app/build.gradle | 5 +- app/src/main/assets/logback.xml | 29 +++++++ .../java/mobi/maptrek/DataImportActivity.java | 77 +++++++++++-------- .../main/java/mobi/maptrek/DataLoader.java | 5 +- .../main/java/mobi/maptrek/MainActivity.java | 54 ++++++------- app/src/main/java/mobi/maptrek/MapTrek.java | 9 ++- .../maptrek/location/LocationService.java | 17 ++-- .../maptrek/location/NavigationService.java | 4 +- .../main/resources/android-logger.properties | 22 ------ 9 files changed, 119 insertions(+), 103 deletions(-) create mode 100644 app/src/main/assets/logback.xml delete mode 100644 app/src/main/resources/android-logger.properties 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