Loading app/src/main/AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -61,12 +61,13 @@ android:exported="false" /> <receiver android:name=".BootCompletedReceiver" android:name=".RestartBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> Loading app/src/main/java/net/fabiszewski/ulogger/LoggerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public class LoggerService extends Service { boolean hasLocationUpdates = requestLocationUpdates(); if (hasLocationUpdates) { isRunning = true; setRunning(true); sendBroadcast(BROADCAST_LOCATION_STARTED); syncIntent = new Intent(getApplicationContext(), WebSyncService.class); Loading Loading @@ -254,7 +254,7 @@ public class LoggerService extends Service { db.close(); } isRunning = false; setRunning(false); mNotificationManager.cancel(NOTIFICATION_ID); sendBroadcast(BROADCAST_LOCATION_STOPPED); Loading @@ -280,6 +280,19 @@ public class LoggerService extends Service { return isRunning; } /** * Set service running state * @param isRunning True if running, false otherwise */ private void setRunning(boolean isRunning) { LoggerService.isRunning = isRunning; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(SettingsActivity.KEY_LOGGER_RUNNING, isRunning); editor.apply(); } /** * Return realtime of last update in milliseconds * Loading app/src/main/java/net/fabiszewski/ulogger/RestartBroadcastReceiver.java +39 −14 Original line number Diff line number Diff line Loading @@ -18,11 +18,14 @@ import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; /** * Receiver for boot completed broadcast * * Receiver for app restart broadcast */ public class BootCompletedReceiver extends BroadcastReceiver { public class RestartBroadcastReceiver extends BroadcastReceiver { private static final String BOOT_COMPLETED = Intent.ACTION_BOOT_COMPLETED; private static final String QUICKBOOT_POWERON = "android.intent.action.QUICKBOOT_POWERON"; private static final String MY_PACKAGE_REPLACED = Intent.ACTION_MY_PACKAGE_REPLACED; /** * Broadcast received on system boot completed. Loading @@ -33,17 +36,39 @@ public class BootCompletedReceiver extends BroadcastReceiver { */ @Override public void onReceive(Context context, Intent intent) { if (intent != null && intent.getAction() != null) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); switch (intent.getAction()) { case BOOT_COMPLETED: case QUICKBOOT_POWERON: boolean autoStart = prefs.getBoolean(SettingsActivity.KEY_AUTO_START, false); if (autoStart && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { if (autoStart) { startLoggerService(context); } break; case MY_PACKAGE_REPLACED: boolean wasRunning = prefs.getBoolean(SettingsActivity.KEY_LOGGER_RUNNING, false); if (wasRunning) { startLoggerService(context); } break; } } } /** * Start logger service * @param context Context */ private void startLoggerService(Context context) { DbAccess db = DbAccess.getInstance(); db.open(context); if (db.getTrackName() == null) { db.newAutoTrack(); } db.close(); Intent i = new Intent(context, LoggerService.class); ContextCompat.startForegroundService(context, i); } Intent intent = new Intent(context, LoggerService.class); ContextCompat.startForegroundService(context, intent); } } app/src/main/java/net/fabiszewski/ulogger/SettingsActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ public class SettingsActivity extends AppCompatActivity { public static final String KEY_USERNAME = "prefUsername"; public static final String KEY_USE_GPS = "prefUseGps"; public static final String KEY_USE_NET = "prefUseNet"; public static final String KEY_LOGGER_RUNNING = "prefLoggerRunning"; @Override protected void onCreate(Bundle savedInstanceState) { Loading Loading
app/src/main/AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -61,12 +61,13 @@ android:exported="false" /> <receiver android:name=".BootCompletedReceiver" android:name=".RestartBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> Loading
app/src/main/java/net/fabiszewski/ulogger/LoggerService.java +15 −2 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public class LoggerService extends Service { boolean hasLocationUpdates = requestLocationUpdates(); if (hasLocationUpdates) { isRunning = true; setRunning(true); sendBroadcast(BROADCAST_LOCATION_STARTED); syncIntent = new Intent(getApplicationContext(), WebSyncService.class); Loading Loading @@ -254,7 +254,7 @@ public class LoggerService extends Service { db.close(); } isRunning = false; setRunning(false); mNotificationManager.cancel(NOTIFICATION_ID); sendBroadcast(BROADCAST_LOCATION_STOPPED); Loading @@ -280,6 +280,19 @@ public class LoggerService extends Service { return isRunning; } /** * Set service running state * @param isRunning True if running, false otherwise */ private void setRunning(boolean isRunning) { LoggerService.isRunning = isRunning; SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.putBoolean(SettingsActivity.KEY_LOGGER_RUNNING, isRunning); editor.apply(); } /** * Return realtime of last update in milliseconds * Loading
app/src/main/java/net/fabiszewski/ulogger/RestartBroadcastReceiver.java +39 −14 Original line number Diff line number Diff line Loading @@ -18,11 +18,14 @@ import androidx.core.content.ContextCompat; import androidx.preference.PreferenceManager; /** * Receiver for boot completed broadcast * * Receiver for app restart broadcast */ public class BootCompletedReceiver extends BroadcastReceiver { public class RestartBroadcastReceiver extends BroadcastReceiver { private static final String BOOT_COMPLETED = Intent.ACTION_BOOT_COMPLETED; private static final String QUICKBOOT_POWERON = "android.intent.action.QUICKBOOT_POWERON"; private static final String MY_PACKAGE_REPLACED = Intent.ACTION_MY_PACKAGE_REPLACED; /** * Broadcast received on system boot completed. Loading @@ -33,17 +36,39 @@ public class BootCompletedReceiver extends BroadcastReceiver { */ @Override public void onReceive(Context context, Intent intent) { if (intent != null && intent.getAction() != null) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); switch (intent.getAction()) { case BOOT_COMPLETED: case QUICKBOOT_POWERON: boolean autoStart = prefs.getBoolean(SettingsActivity.KEY_AUTO_START, false); if (autoStart && Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { if (autoStart) { startLoggerService(context); } break; case MY_PACKAGE_REPLACED: boolean wasRunning = prefs.getBoolean(SettingsActivity.KEY_LOGGER_RUNNING, false); if (wasRunning) { startLoggerService(context); } break; } } } /** * Start logger service * @param context Context */ private void startLoggerService(Context context) { DbAccess db = DbAccess.getInstance(); db.open(context); if (db.getTrackName() == null) { db.newAutoTrack(); } db.close(); Intent i = new Intent(context, LoggerService.class); ContextCompat.startForegroundService(context, i); } Intent intent = new Intent(context, LoggerService.class); ContextCompat.startForegroundService(context, intent); } }
app/src/main/java/net/fabiszewski/ulogger/SettingsActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ public class SettingsActivity extends AppCompatActivity { public static final String KEY_USERNAME = "prefUsername"; public static final String KEY_USE_GPS = "prefUseGps"; public static final String KEY_USE_NET = "prefUseNet"; public static final String KEY_LOGGER_RUNNING = "prefLoggerRunning"; @Override protected void onCreate(Bundle savedInstanceState) { Loading