diff --git a/app/build.gradle b/app/build.gradle index 7ca23dc..49eeccf 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,5 +26,5 @@ dependencies { compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'org.osmdroid:osmdroid-android:5.2@aar' - compile 'com.google.code.gson:gson:2.4' + compile 'com.google.code.gson:gson:2.7' } diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.java b/app/src/main/java/org/y20k/trackbook/MainActivity.java index f9bac8f..c276ca3 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivity.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivity.java @@ -361,11 +361,19 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { // get last location from MainActivity Fragment Location lastLocation = mMainActivityMapFragment.getCurrentBestLocation(); - // start tracker service - Intent intent = new Intent(this, TrackerService.class); - intent.setAction(ACTION_START); - intent.putExtra(EXTRA_LAST_LOCATION, lastLocation); - startService(intent); + if (lastLocation != null) { + // start tracker service + Intent intent = new Intent(this, TrackerService.class); + intent.setAction(ACTION_START); + intent.putExtra(EXTRA_LAST_LOCATION, lastLocation); + startService(intent); + } else { + Toast.makeText(this, getString(R.string.toast_message_location_services_not_ready), Toast.LENGTH_LONG).show(); + // change state back + mTrackerServiceRunning = false; + setFloatingActionButtonState(); + } + } // update tracking state in MainActivityMapFragment diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java index f9f5394..4862c36 100644 --- a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java @@ -299,25 +299,35 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { // app does not have any location fix mCurrentBestLocation = LocationHelper.determineLastKnownLocation(mLocationManager); } - position = convertToGeoPoint(mCurrentBestLocation); - // center map on current position - mController.setCenter(position); - // mark user's new location on map and remove last marker - updateMyLocationMarker(); + // check if really got a position + if (mCurrentBestLocation != null) { + position = convertToGeoPoint(mCurrentBestLocation); - // inform user about location quality - String locationInfo; - long locationAge = (SystemClock.elapsedRealtimeNanos() - mCurrentBestLocation.getElapsedRealtimeNanos()) / 1000000; - String locationAgeString = LocationHelper.convertToReadableTime(locationAge, false); - if (locationAgeString == null) { - locationAgeString = mActivity.getString(R.string.toast_message_last_location_age_one_hour); + // center map on current position + mController.setCenter(position); + + // mark user's new location on map and remove last marker + updateMyLocationMarker(); + + // inform user about location quality + String locationInfo; + long locationAge = (SystemClock.elapsedRealtimeNanos() - mCurrentBestLocation.getElapsedRealtimeNanos()) / 1000000; + String locationAgeString = LocationHelper.convertToReadableTime(locationAge, false); + if (locationAgeString == null) { + locationAgeString = mActivity.getString(R.string.toast_message_last_location_age_one_hour); + } + locationInfo = " " + locationAgeString + " | " + mCurrentBestLocation.getProvider(); + Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_last_location) + locationInfo, Toast.LENGTH_LONG).show(); + return true; + } else { + Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_location_services_not_ready), Toast.LENGTH_LONG).show(); + return false; } - locationInfo = " " + locationAgeString + " | " + mCurrentBestLocation.getProvider(); - Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_last_location) + locationInfo, Toast.LENGTH_LONG).show(); - return true; + + // CASE DEFAULT default: @@ -374,6 +384,7 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { /* Removes track crumbs from map */ public void clearMap() { +// TODO clear map or clear intent if (mTrackOverlay != null) { Toast.makeText(mActivity, mActivity.getString(R.string.toast_message_clear_map), Toast.LENGTH_LONG).show(); mMapView.getOverlays().remove(mTrackOverlay); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 4af7e0c..4ff8f9c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -16,8 +16,8 @@ LETZTE AUFZEICHNUNG - Trackbook ist aktiv - Trackbook ist inaktiv + Trackbook ist inaktiv + Trackbook ist aktiv Stopp (Ausblenden setzt Kartenansicht zurück) Dauer @@ -34,6 +34,7 @@ Zugriff auf den externen Speicher verweigert. Standortdienste sind deaktiviert. Trackbook kann nicht aufzeichnen. Suche aktuellen Standort. + Standortdienste noch nicht bereit. Bitte erneut versuchen. Letzte Position: Kartenansicht wird zurückgesetzt über eine Stunde diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 04cc638..161c547 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -34,6 +34,7 @@ Unable to access external storage. Location is turned off. Trackbook will not work. Acquiring current location. + Location services not ready. Please retry. Last location: Clearing map. over one hour