diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fef7848..6d97b08 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,6 +9,7 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java index 802f8bf..16de1f0 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java @@ -1,6 +1,7 @@ package org.timecrafters.TimeCraftersConfigurationTool; import android.content.Intent; +import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.util.Log; @@ -15,6 +16,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import org.timecrafters.TimeCraftersConfigurationTool.backend.Backend; import org.timecrafters.TimeCraftersConfigurationTool.backend.TAC; +import org.timecrafters.TimeCraftersConfigurationTool.tacnet.TACNETOnBootReceiver; import org.timecrafters.TimeCraftersConfigurationTool.tacnet.TACNETServerService; public class MainActivity extends AppCompatActivity { @@ -44,8 +46,7 @@ public class MainActivity extends AppCompatActivity { Backend.instance().applicationContext = getApplicationContext(); // Auto start TACNET server if allowed and device model contains AUTO_START_MODEL - if (!TAC.BUILD_COMPETITION_MODE && TAC.BUILD_AUTO_START && Backend.instance().getServer() == null && - Build.MODEL.toLowerCase().contains(TAC.BUILD_AUTO_START_MODEL)) { + if (TAC.allowAutoServerStart() && Backend.instance().getServer() == null) { Log.i(TAG, "Detected " + Build.MANUFACTURER + " " + Build.MODEL + " (" + Build.HARDWARE + "), starting TACNET Server Service..."); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { @@ -55,6 +56,8 @@ public class MainActivity extends AppCompatActivity { } } + registerReceiver(new TACNETOnBootReceiver(), new IntentFilter(Intent.ACTION_BOOT_COMPLETED)); + if (getIntent().getBooleanExtra("navigate_to_tacnet", false)) { Navigation.findNavController(this, R.id.nav_host_fragment).navigate(R.id.navigation_tacnet); } diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java index 65fd167..632b410 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java @@ -1,5 +1,6 @@ package org.timecrafters.TimeCraftersConfigurationTool.backend; +import android.os.Build; import android.os.Environment; import java.io.File; @@ -16,4 +17,10 @@ public class TAC { public static final boolean BUILD_COMPETITION_MODE = false; public static final boolean BUILD_AUTO_START = false; public static final String BUILD_AUTO_START_MODEL = "rev hub"; /* LOWERCASE */ + + static public boolean allowAutoServerStart() { + return !TAC.BUILD_COMPETITION_MODE && + TAC.BUILD_AUTO_START && + Build.MODEL.toLowerCase().contains(TAC.BUILD_AUTO_START_MODEL); + } } diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETOnBootReceiver.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETOnBootReceiver.java new file mode 100644 index 0000000..50db1b3 --- /dev/null +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/tacnet/TACNETOnBootReceiver.java @@ -0,0 +1,30 @@ +package org.timecrafters.TimeCraftersConfigurationTool.tacnet; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.os.Build; +import android.util.Log; + +import org.timecrafters.TimeCraftersConfigurationTool.backend.TAC; + +public class TACNETOnBootReceiver extends BroadcastReceiver { + private static final String TAG = "TACNETOnBootReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { + if (TAC.allowAutoServerStart()) { + Log.i(TAG, "Auto starting TACNET Server Service..."); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + context.startForegroundService(new Intent(context, TACNETServerService.class)); + } else { + context.startService(new Intent(context, TACNETServerService.class)); + } + } else { + Log.i(TAG, "Auto starting TACNET Server Service is not permitted. Check TAC.BUILD_ variables."); + } + } + } +}