Added BroadcastReceiver to support auto starting TACNET Server Service if TAC.BUILD_ variables permit it

This commit is contained in:
2020-11-10 20:32:45 -06:00
parent 1e1b6c36df
commit ec45d0c2c8
4 changed files with 50 additions and 2 deletions

View File

@@ -9,6 +9,7 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:allowBackup="true"
@@ -36,7 +37,14 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity" />
<receiver android:name=".tacnet.TACNETOnBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

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