saving the duration in shared preferences introduced problems - now using duration within track object (see #29)
This commit is contained in:
		
							parent
							
								
									9e46a09401
								
							
						
					
					
						commit
						adc68605a4
					
				
					 2 changed files with 18 additions and 20 deletions
				
			
		|  | @ -275,9 +275,9 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { | |||
|             intent.putExtra(EXTRA_LAST_LOCATION, lastLocation); | ||||
|         } | ||||
| 
 | ||||
|         // start service | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { | ||||
|             // ... in foreground to prevent it being killed on Oreo | ||||
|         // communicate with service | ||||
|         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && intentAction.equals(ACTION_START)) { | ||||
|             // ... start service in foreground to prevent it being killed on Oreo | ||||
|             startForegroundService(intent); | ||||
|         } else { | ||||
|             startService(intent); | ||||
|  |  | |||
|  | @ -115,7 +115,7 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
| 
 | ||||
|         // RESTART CHECK:  checking for empty intent - try to get saved track | ||||
|         if (intent == null || intent.getAction() == null) { | ||||
|             LogHelper.e(LOG_TAG, "Null-Intent received. Are we being restarted?"); | ||||
|             LogHelper.w(LOG_TAG, "Null-Intent received. Trying to restart tracking."); | ||||
|             StorageHelper storageHelper = new StorageHelper(this); | ||||
|             if (storageHelper.tempFileExists()) { | ||||
|                 mTrack = storageHelper.loadTrack(FILE_TEMP_TRACK); | ||||
|  | @ -136,14 +136,14 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
|                 stopTracking(); | ||||
|             } else { | ||||
|                 // handle error - save state | ||||
|                 saveTrackerServiceState(mTrackerServiceRunning, 0, FAB_STATE_DEFAULT); | ||||
|                 saveTrackerServiceState(mTrackerServiceRunning, FAB_STATE_DEFAULT); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         // ACTION DISMISS | ||||
|         else if (intent.getAction().equals(ACTION_DISMISS)) { | ||||
|             // save state | ||||
|             saveTrackerServiceState(mTrackerServiceRunning, mTrack.getTrackDuration(), FAB_STATE_DEFAULT); | ||||
|             saveTrackerServiceState(mTrackerServiceRunning, FAB_STATE_DEFAULT); | ||||
|             // dismiss notification | ||||
|             mNotificationManager.cancel(TRACKER_SERVICE_NOTIFICATION_ID); // todo check if necessary? | ||||
|             stopForeground(true); | ||||
|  | @ -230,19 +230,23 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
|         mNotificationManager.notify(TRACKER_SERVICE_NOTIFICATION_ID, mNotification); // todo check if necessary in pre Android O | ||||
| 
 | ||||
|         // set timer to retrieve new locations and to prevent endless tracking | ||||
|         SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); | ||||
|         final long previouslyRecorded = settings.getLong(PREFS_CURRENT_TRACK_DURATION, 0);// todo describe | ||||
| //        SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); | ||||
| //        final long previouslyRecordedDuration = settings.getLong(PREFS_CURRENT_TRACK_DURATION, 0);// todo describe | ||||
|         final long previouslyRecordedDuration = mTrack.getTrackDuration();// todo describe | ||||
|         mTimer = new CountDownTimer(EIGHT_HOURS_IN_MILLISECONDS, FIFTEEN_SECONDS_IN_MILLISECONDS) { | ||||
|             @Override | ||||
|             public void onTick(long millisUntilFinished) { | ||||
|                 // update track duration | ||||
|                 long duration = EIGHT_HOURS_IN_MILLISECONDS - millisUntilFinished + previouslyRecorded; | ||||
|                 long duration = EIGHT_HOURS_IN_MILLISECONDS - millisUntilFinished + previouslyRecordedDuration; | ||||
|                 mTrack.setDuration(duration); | ||||
|                 // try to add WayPoint to Track | ||||
|                 addWayPointToTrack(); | ||||
|                 // update notification | ||||
|                 mNotification = NotificationHelper.getUpdatedNotification(TrackerService.this, mNotificationBuilder, mTrack); | ||||
|                 mNotificationManager.notify(TRACKER_SERVICE_NOTIFICATION_ID, mNotification); | ||||
|                 // save a temp file in case the service has been killed by the system | ||||
|                 SaveTempTrackAsyncHelper saveTempTrackAsyncHelper = new SaveTempTrackAsyncHelper(); | ||||
|                 saveTempTrackAsyncHelper.execute(); | ||||
|             } | ||||
| 
 | ||||
|             @Override | ||||
|  | @ -358,18 +362,11 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
|                 // if new, add current best location to track | ||||
|                 newWayPoint = mTrack.addWayPoint(mCurrentBestLocation); | ||||
|             } | ||||
| 
 | ||||
|             // save state | ||||
|             saveTrackerServiceState(mTrackerServiceRunning, mTrack.getTrackDuration(), FAB_STATE_RECORDING); | ||||
|         } | ||||
| 
 | ||||
|         // send local broadcast if new WayPoint added | ||||
|         if (newWayPoint != null) { | ||||
|             sendTrackUpdate(); | ||||
| 
 | ||||
|             // save a temp file in case the service has been killed by the system | ||||
|             SaveTempTrackAsyncHelper saveTempTrackAsyncHelper = new SaveTempTrackAsyncHelper(); | ||||
|             saveTempTrackAsyncHelper.execute(); | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|  | @ -427,7 +424,7 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
|             mTrackerServiceRunning = true; | ||||
|         } | ||||
|         LocationHelper.registerLocationListeners(mLocationManager, mGPSListener, mNetworkListener); | ||||
|         saveTrackerServiceState(mTrackerServiceRunning, mTrack.getTrackDuration(), FAB_STATE_RECORDING); | ||||
|         saveTrackerServiceState(mTrackerServiceRunning, FAB_STATE_RECORDING); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -436,7 +433,7 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
|         // remove listeners | ||||
|         LocationHelper.removeLocationListeners(mLocationManager, mGPSListener, mNetworkListener); | ||||
|         mTrackerServiceRunning = false; | ||||
|         saveTrackerServiceState(mTrackerServiceRunning, mTrack.getTrackDuration(),FAB_STATE_SAVE); | ||||
|         saveTrackerServiceState(mTrackerServiceRunning, FAB_STATE_SAVE); | ||||
| 
 | ||||
|         // notify MainActivityMapFragment | ||||
|         Intent i = new Intent(); | ||||
|  | @ -448,11 +445,12 @@ public class TrackerService extends Service implements TrackbookKeys, SensorEven | |||
| 
 | ||||
| 
 | ||||
|     /* Saves state of Tracker Service and floating Action Button */ | ||||
|     private void saveTrackerServiceState(boolean trackerServiceRunning, long currentTrackDuration, int fabState) { | ||||
|     private void saveTrackerServiceState(boolean trackerServiceRunning, int fabState) { | ||||
| //    private void saveTrackerServiceState(boolean trackerServiceRunning, long currentTrackDuration, int fabState) { | ||||
|         SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); | ||||
|         SharedPreferences.Editor editor = settings.edit(); | ||||
|         editor.putBoolean(PREFS_TRACKER_SERVICE_RUNNING, trackerServiceRunning); | ||||
|         editor.putLong(PREFS_CURRENT_TRACK_DURATION, currentTrackDuration); | ||||
| //        editor.putLong(PREFS_CURRENT_TRACK_DURATION, currentTrackDuration); // todo remove | ||||
|         editor.putInt(PREFS_FAB_STATE, fabState); | ||||
|         editor.apply(); | ||||
|     } | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 y20k
						y20k