mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-27 06:17:27 +00:00
TRACKING APP: If the app is killed but services continue running, restarting app continues correctly upon restart
This commit is contained in:
1 parent
984fe40748
commit
6c255c678d
8 files changed
+79
-18
No files matched your search
@@ -24,4 +24,6 @@
|
||||
<string name="preference_gps_fastest_fix_interval_ms_default">100</string>
|
||||
<string name="preference_battery_is_charging">batteryIsCharging</string>
|
||||
<string name="preference_tracking_timer_started">trackingTimerStarted</string>
|
||||
<string name="preference_tracker_is_tracking">trackerIsTracking</string>
|
||||
<string name="preference_tracker_is_tracking_event_id">trackerIsTrackingEventId</string>
|
||||
</resources>
|
||||
@@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="tracking_activity_event_id_parameter">trackingActivityEventId</string>
|
||||
<string name="tracking_activity_started_by_start_activity_parameter">startedByStartActivity</string>
|
||||
</resources>
|
||||
+22
-14
@@ -107,7 +107,10 @@ public class TrackingService extends Service implements ConnectionCallbacks,
|
||||
locationUpdateRequested = true;
|
||||
|
||||
ExLog.i(this, TAG, "Started Tracking");
|
||||
showNotification();
|
||||
//showNotification();
|
||||
|
||||
prefs.setTrackerIsTracking(true);
|
||||
prefs.setTrackerIsTrackingEventId(eventId);
|
||||
}
|
||||
|
||||
public void stopTracking() {
|
||||
@@ -116,9 +119,14 @@ public class TrackingService extends Service implements ConnectionCallbacks,
|
||||
}
|
||||
locationClient.disconnect();
|
||||
locationUpdateRequested = false;
|
||||
|
||||
if (scheduler != null) {
|
||||
scheduler.shutdown();
|
||||
}
|
||||
|
||||
prefs.setTrackerIsTracking(false);
|
||||
prefs.setTrackerIsTrackingEventId(-1);
|
||||
|
||||
stopSelf();
|
||||
ExLog.i(this, TAG, "Stopped Tracking");
|
||||
}
|
||||
@@ -205,19 +213,19 @@ public class TrackingService extends Service implements ConnectionCallbacks,
|
||||
.show();
|
||||
}
|
||||
|
||||
private void showNotification() {
|
||||
Intent intent = new Intent(this, RegattaActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
| Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
|
||||
CharSequence text = getText(R.string.tracker_started);
|
||||
Notification notification = new NotificationCompat.Builder(this)
|
||||
.setContentTitle(getText(R.string.app_name))
|
||||
.setContentText(text).setContentIntent(pi)
|
||||
.setSmallIcon(R.drawable.icon).build();
|
||||
notification.flags |= Notification.FLAG_NO_CLEAR;
|
||||
startForeground(NOTIFICATION_ID, notification);
|
||||
}
|
||||
// private void showNotification() {
|
||||
// Intent intent = new Intent(this, RegattaActivity.class);
|
||||
// intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
|
||||
// | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
// PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);
|
||||
// CharSequence text = getText(R.string.tracker_started);
|
||||
// Notification notification = new NotificationCompat.Builder(this)
|
||||
// .setContentTitle(getText(R.string.app_name))
|
||||
// .setContentText(text).setContentIntent(pi)
|
||||
// .setSmallIcon(R.drawable.icon).build();
|
||||
// notification.flags |= Notification.FLAG_NO_CLEAR;
|
||||
// startForeground(NOTIFICATION_ID, notification);
|
||||
// }
|
||||
|
||||
public void registerGPSQualityListener(GPSQualityListener listener) {
|
||||
gpsQualityListener = listener;
|
||||
|
||||
+14
@@ -66,5 +66,19 @@ public class StartActivity extends BaseActivity {
|
||||
this.startService(serviceIntent);
|
||||
|
||||
intent.setData(null);
|
||||
|
||||
if (prefs.getTrackerIsTracking())
|
||||
{
|
||||
int eventId = prefs.getTrackerIsTrackingEventId();
|
||||
startTrackingActivity(eventId);
|
||||
}
|
||||
}
|
||||
|
||||
private void startTrackingActivity(int eventId) {
|
||||
Intent intent = new Intent(this, TrackingActivity.class);
|
||||
intent.putExtra(getString(R.string.tracking_activity_event_id_parameter), eventId);
|
||||
intent.putExtra(getString(R.string.tracking_activity_started_by_start_activity_parameter), true);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
}
|
||||
+12
-1
@@ -28,6 +28,7 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
TransmittingService transmittingService;
|
||||
boolean transmittingServiceBound;
|
||||
boolean startedByStartActivity;
|
||||
|
||||
private final static String TAG = TrackingActivity.class.getName();
|
||||
|
||||
@@ -39,7 +40,8 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
|
||||
Intent intent = getIntent();
|
||||
eventId = intent.getExtras().getInt(getString(R.string.tracking_activity_event_id_parameter));
|
||||
|
||||
startedByStartActivity = intent.getExtras().getBoolean(getString(R.string.tracking_activity_started_by_start_activity_parameter));
|
||||
|
||||
setContentView(R.layout.fragment_container);
|
||||
|
||||
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
@@ -174,4 +176,13 @@ public class TrackingActivity extends BaseActivity implements GPSQualityListener
|
||||
trackingServiceBound = false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* the fragment can call this to know if tracking was running before, so it doesn't reset the timer.
|
||||
* @return
|
||||
*/
|
||||
public boolean getStartedByStartActivity()
|
||||
{
|
||||
return startedByStartActivity;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -122,7 +122,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
|
||||
}
|
||||
else
|
||||
{
|
||||
showTrackingActivity();
|
||||
startTrackingActivity();
|
||||
}
|
||||
break;
|
||||
case R.id.add_photo_button:
|
||||
@@ -215,7 +215,7 @@ public class RegattaFragment extends BaseFragment implements OnClickListener {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
||||
private void showTrackingActivity() {
|
||||
private void startTrackingActivity() {
|
||||
RegattaActivity regattaActivity = (RegattaActivity) getActivity();
|
||||
Intent intent = new Intent(getActivity(), TrackingActivity.class);
|
||||
intent.putExtra(getString(R.string.tracking_activity_event_id_parameter), regattaActivity.getEventId());
|
||||
|
||||
+6
-1
@@ -26,6 +26,7 @@ import com.sap.sailing.android.tracking.app.R;
|
||||
import com.sap.sailing.android.tracking.app.services.TrackingService;
|
||||
import com.sap.sailing.android.tracking.app.services.TrackingService.GPSQuality;
|
||||
import com.sap.sailing.android.tracking.app.services.TransmittingService.APIConnectivity;
|
||||
import com.sap.sailing.android.tracking.app.ui.activities.TrackingActivity;
|
||||
import com.sap.sailing.android.tracking.app.utils.AppPreferences;
|
||||
import com.sap.sailing.android.tracking.app.views.AutoResizeTextView;
|
||||
import com.sap.sailing.android.tracking.app.views.SignalQualityIndicatorView;
|
||||
@@ -49,7 +50,11 @@ public class TrackingFragment extends BaseFragment implements OnClickListener {
|
||||
stopTracking.setOnClickListener(this);
|
||||
|
||||
prefs = new AppPreferences(getActivity());
|
||||
prefs.setTrackingTimerStarted(System.currentTimeMillis());
|
||||
|
||||
if (((TrackingActivity)getActivity()).getStartedByStartActivity() == false)
|
||||
{
|
||||
prefs.setTrackingTimerStarted(System.currentTimeMillis());
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
+20
@@ -113,4 +113,24 @@ public class AppPreferences {
|
||||
{
|
||||
return preferences.getLong(context.getString(R.string.preference_tracking_timer_started), 0);
|
||||
}
|
||||
|
||||
public void setTrackerIsTracking(boolean isTracking)
|
||||
{
|
||||
preferences.edit().putBoolean(context.getString(R.string.preference_tracker_is_tracking), isTracking).commit();
|
||||
}
|
||||
|
||||
public boolean getTrackerIsTracking()
|
||||
{
|
||||
return preferences.getBoolean(context.getString(R.string.preference_tracker_is_tracking), false);
|
||||
}
|
||||
|
||||
public void setTrackerIsTrackingEventId(int eventId)
|
||||
{
|
||||
preferences.edit().putInt(context.getString(R.string.preference_tracker_is_tracking_event_id), eventId).commit();
|
||||
}
|
||||
|
||||
public Integer getTrackerIsTrackingEventId()
|
||||
{
|
||||
return preferences.getInt(context.getString(R.string.preference_tracker_is_tracking_event_id), -1);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user