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.");
+ }
+ }
+ }
+}