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