Commit 370cb73a authored by Bartek Fabiszewski's avatar Bartek Fabiszewski
Browse files

Restart logging after package update, closes #52

parent 109cfc07
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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>
+15 −2
Original line number Diff line number Diff line
@@ -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);
@@ -254,7 +254,7 @@ public class LoggerService extends Service {
            db.close();
        }

        isRunning = false;
        setRunning(false);

        mNotificationManager.cancel(NOTIFICATION_ID);
        sendBroadcast(BROADCAST_LOCATION_STOPPED);
@@ -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
     *
+39 −14
Original line number Diff line number Diff line
@@ -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.
@@ -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);
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -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) {