From 7a426d0b602ccff281fcb9cac82ceaa3858bb420 Mon Sep 17 00:00:00 2001 From: BlueMatthew Date: Mon, 8 Jan 2024 10:38:06 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xypower/mpmaster/AppMaster.java | 28 +++++++++++++--- .../com/xypower/mpmaster/MainActivity.java | 33 +++++++++++++++++++ .../com/xypower/mpmaster/MpMasterService.java | 25 ++++---------- 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java index 639b0689..5da8769f 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java @@ -93,6 +93,8 @@ public class AppMaster { @Override public void run() { + mMasterUrl = "http://192.168.50.50/mntn/"; + String masterUrl = mMasterUrl; if (TextUtils.isEmpty(masterUrl)) { @@ -186,6 +188,7 @@ public class AppMaster { private void processCmd(JSONObject jsonObject) { String cmd = jsonObject.optString("cmd", ""); + long cid = jsonObject.optLong("cid", 0); if (TextUtils.equals(cmd, CMD_REBOOT_DEV)) { SysApi.reboot(mService.getApplicationContext()); @@ -204,11 +207,26 @@ public class AppMaster { mService.updateMntn(newUrl); } } else if (TextUtils.equals(cmd, CMD_UPDATE_CONFIG)) { - String path = jsonObject.optString("path", null); - String fileName = jsonObject.optString("fileName", null); - String name = jsonObject.optString("name", null); - int fieldType = jsonObject.optInt("type", 0); - JSONObject val = jsonObject.optJSONObject("value"); + JSONArray jsonConfigs = null; + try { + jsonConfigs = jsonObject.getJSONArray("configs"); + + if (jsonConfigs != null) { + + for (int idx = 0; idx < jsonConfigs.length(); idx++) { + JSONObject jsonConfig = jsonConfigs.getJSONObject(idx); + + String path = jsonConfig.optString("path", null); + String fileName = jsonConfig.optString("fileName", null); + String configName = jsonConfig.optString("cfgName", null); + int fieldType = jsonConfig.optInt("cfgType", 0); + JSONObject val = jsonConfig.optJSONObject("cfgValue"); + + updateConfig(path, fileName, configName, fieldType, val); + } + } + } catch (Exception ex) { + } } else if (TextUtils.equals(cmd, CMD_PUSH_FILE)) { String path = jsonObject.optString("path", null); String content = jsonObject.optString("content", null); diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java b/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java index 9617805e..051224d2 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MainActivity.java @@ -2,12 +2,16 @@ package com.xypower.mpmaster; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.app.ActivityCompat; +import android.Manifest; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.net.ConnectivityManager; import android.os.Build; import android.os.Bundle; +import android.os.Handler; import android.os.StrictMode; import android.view.View; @@ -21,6 +25,9 @@ import java.util.Date; public class MainActivity extends AppCompatActivity { + private static int MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE = 100; + + private Handler mHandler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -28,6 +35,14 @@ public class MainActivity extends AppCompatActivity { ActionBar actionBar = getSupportActionBar(); + mHandler = new Handler(); + mHandler.postDelayed( + new Runnable() { + public void run() { + requestPermissions(); + } + }, 100); + // String buildTime = BuildConfig.BUILD_ Date date = new Date(BuildConfig.BUILD_TIMESTAMP); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -78,6 +93,24 @@ public class MainActivity extends AppCompatActivity { startMicroPhotoService(getApplicationContext()); } + private void requestPermissions() { + String[] accessPermissions = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.FOREGROUND_SERVICE, Manifest.permission.READ_PHONE_STATE, + /*Manifest.permission.PACKAGE_USAGE_STATS,*/ + /*Manifest.permission.SET_TIME,*/}; + boolean needRequire = false; + for (String access : accessPermissions) { + int curPermission = ActivityCompat.checkSelfPermission(MainActivity.this, access); + if (curPermission != PackageManager.PERMISSION_GRANTED) { + needRequire = true; + break; + } + } + if (needRequire) { + ActivityCompat.requestPermissions(MainActivity.this, accessPermissions, MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE); + return; + } + } + public static void startMicroPhotoService(Context context) { MicroPhotoContext.AppConfig appConfig = MicroPhotoContext.getMpAppConfig(context); diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index bc88433d..bcc53270 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -221,7 +221,7 @@ public class MpMasterService extends Service { // Cancel cuurent job first if (quickHbMode) { - + registerHeartbeatTimer(); } } } @@ -284,7 +284,8 @@ public class MpMasterService extends Service { PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); - alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + mHeartbeatDuration, pendingIntent); + long timeout = mQuickHbMode ? mQuickHeartbeatDuration : mHeartbeatDuration; + alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + timeout, pendingIntent); mNextHeartbeatTime = System.currentTimeMillis() + mHeartbeatDuration; // alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + timeout, pendingIntent); @@ -346,24 +347,10 @@ public class MpMasterService extends Service { String server = intent.getStringExtra("server"); int port = intent.getIntExtra("port", 0); String cmdid = intent.getStringExtra("cmdid"); - int protocol = intent.getIntExtra("protocol", 0); - int networkProtocol = intent.getIntExtra("networkProtocol", 0); - - if (!InetAddressUtils.isIPv4Address(server) && !InetAddressUtils.isIPv6Address(server)) { - // It is a domain - InetAddress addr = null; - try { - addr = InetAddress.getByName(server); - } catch (Exception e) { - e.printStackTrace(); - } - if (addr != null) { - server = addr.getHostAddress(); - } - } - Log.i(TAG, "AppPath=" + appPath + " Server=" + server + ":" + port + " cmdid=" + cmdid + " Protocol=" + protocol + " Network=" + networkProtocol); - mCmdid = cmdid; + + Log.i(TAG, "AppPath=" + appPath + " cmdid=" + cmdid); + registerHeartbeatTimer(); startMaster();