From 4a685cf9d91a9ec9cf09f01643f2faeb655a0c38 Mon Sep 17 00:00:00 2001 From: cyberarm Date: Tue, 10 Nov 2020 11:11:48 -0600 Subject: [PATCH] Fixed crash when autostarting TACNET Server Service from MainActivity due to android 8 prohibiting creating background services when app is not in foreground, refactored auto start constants. --- .../TimeCraftersConfigurationTool/MainActivity.java | 13 ++++++++----- .../TimeCraftersConfigurationTool/backend/TAC.java | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java index b19ca54..b327ba4 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/MainActivity.java @@ -21,7 +21,6 @@ import org.timecrafters.TimeCraftersConfigurationTool.tacnet.TACNETServerService public class MainActivity extends AppCompatActivity { private static final String TAG = "MainActivity"; - private static final String AUTO_START_MODEL = "pixel"; // "rev hub" /* LOWERCASE */ private AppBarConfiguration appBarConfiguration; @Override @@ -47,14 +46,18 @@ public class MainActivity extends AppCompatActivity { Backend.instance().applicationContext = getApplicationContext(); // Auto start TACNET server if allowed and device model contains AUTO_START_MODEL - if (!TAC.COMPETITION_MODE && Backend.instance().getServer() == null && Build.MODEL.toLowerCase().contains(AUTO_START_MODEL)) { - Log.i(TAG, "Detected REV Robotics Control Hub, attempting to auto-start TACNET Server Service..."); + if (!TAC.BUILD_COMPETITION_MODE && TAC.BUILD_AUTO_START && Backend.instance().getServer() == null && + Build.MODEL.toLowerCase().contains(TAC.BUILD_AUTO_START_MODEL)) { + Log.i(TAG, "Detected " + Build.MANUFACTURER + " " + Build.MODEL + " (" + Build.HARDWARE + "), starting TACNET Server Service..."); - startService(new Intent(this, TACNETServerService.class)); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + startForegroundService(new Intent(this, TACNETServerService.class)); + } else { + startService(new Intent(this, TACNETServerService.class)); + } } if (getIntent().getBooleanExtra("navigate_to_tacnet", false)) { - Log.i(TAG, "Navigatingg to tacnet..."); 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 52efa2a..f0f7a2d 100644 --- a/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java +++ b/app/src/main/java/org/timecrafters/TimeCraftersConfigurationTool/backend/TAC.java @@ -11,6 +11,9 @@ public class TAC { SETTINGS_PATH = ROOT_PATH + File.separator + "settings.json"; public static final int CONFIG_SPEC_VERSION = 2; + // Set COMPETITION_MODE to true to disable automatic TACNET server start - public static final boolean COMPETITION_MODE = false; + public static final boolean BUILD_COMPETITION_MODE = false; + public static final boolean BUILD_AUTO_START = true; + public static final String BUILD_AUTO_START_MODEL = "pixel";// "rev hub"; /* LOWERCASE */ }