From 6ceeba91cf4541f67a43fc709011499e22b8d51f Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 22 Sep 2024 19:06:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E5=88=86=E4=B8=8A=E6=8A=A5=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=81=9A=E4=B8=80=E4=BA=9B=E6=95=B0=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mpmaster/src/main/AndroidManifest.xml | 2 + .../java/com/xypower/mpmaster/AppMaster.java | 63 +++++++++++++++---- .../com/xypower/mpmaster/MpMasterService.java | 13 +++- 3 files changed, 65 insertions(+), 13 deletions(-) diff --git a/mpmaster/src/main/AndroidManifest.xml b/mpmaster/src/main/AndroidManifest.xml index 74f77bcb..2e8ff058 100644 --- a/mpmaster/src/main/AndroidManifest.xml +++ b/mpmaster/src/main/AndroidManifest.xml @@ -13,6 +13,8 @@ + + diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java index 2507cf59..e1b82b7f 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java @@ -120,7 +120,7 @@ public class AppMaster { return (System.currentTimeMillis() - SystemClock.elapsedRealtimeNanos() / 1000000) / 1000; } - public void start() { + public void start(final boolean isCriticalTime) { new Thread(new Runnable() { @@ -160,7 +160,7 @@ public class AppMaster { } try { - runImpl(); + runImpl(isCriticalTime); } catch (Exception ex) { ex.printStackTrace(); } @@ -177,7 +177,7 @@ public class AppMaster { } } else { try { - runImpl(); + runImpl(isCriticalTime); } catch (Exception ex) { ex.printStackTrace(); } @@ -186,7 +186,7 @@ public class AppMaster { }).start(); } - private boolean runImpl() { + private boolean runImpl(final boolean isCriticalTime) { String masterUrl = mMasterUrl; if (TextUtils.isEmpty(masterUrl)) { @@ -201,8 +201,10 @@ public class AppMaster { now.setMinutes(0); now.setSeconds(0); - long startTime = now.getTime() / 1000; - long endTime = startTime + 86400 - 1; + final long startTimeMs = now.getTime(); + final long startTime = startTimeMs / 1000; + final long endTimeMs = startTimeMs + 86400000 - 1; + final long endTime = startTime + 86400 - 1; String startTimeStr = Integer.toString(now.getYear()) + (now.getMonth() < 10 ? "0" : "") + Integer.toString(now.getMonth()) + (now.getDate() < 10 ? "0" : "") + Integer.toString(now.getDate()); @@ -231,13 +233,21 @@ public class AppMaster { postParams.add(new Pair("signalLevel1", Integer.toString(MpMasterService.getSignalLevel(1)))); postParams.add(new Pair("signalLevel2", Integer.toString(MpMasterService.getSignalLevel(2)))); - // SysApi. - postParams.add(new Pair("simcard1", mService.getIccid(1))); - // if (mService.isSeparateNetwork()) { - postParams.add(new Pair("simcard2", mService.getIccid(2))); - // } + if (isCriticalTime) { + // SysApi. + postParams.add(new Pair("simcard1", mService.getIccid(1))); + // if (mService.isSeparateNetwork()) { + postParams.add(new Pair("simcard2", mService.getIccid(2))); + + postParams.add(new Pair("freeROM", getFreeROM())); - postParams.add(new Pair("freeROM", getFreeROM())); + /* + String crashTimes = getCrashTimes(startTimeMs, endTimeMs); + if (!TextUtils.isEmpty(crashTimes)) { + postParams.add(new Pair("crashes", crashTimes)); + } + */ + } buildStats(startTime, postParams); @@ -442,6 +452,35 @@ public class AppMaster { } } + private String getCrashTimes(final long startTimeMs, final long endTimeMs) { + String path = "/data/system/dropbox/"; + final String prefixFileName = "data_app_crash@"; + final int[] cnts = new int[2]; + cnts[0] = 0; + cnts[1] = 0; + + long weekStartTime = startTimeMs - 86400000 * 7; + FileFilter fileFilter = new FileFilter() { + @Override + public boolean accept(File pathname) { + if (pathname.isFile() && pathname.getName().startsWith(prefixFileName) && pathname.lastModified() <= endTimeMs) { + if (pathname.lastModified() >= startTimeMs) { + cnts[0]++; + } + // if (pathname.lastModified() >= weekStartTime) { + cnts[1]++; + // } + } + return false; + } + }; + File file = new File(path); + String[] files = file.list(); + File[] subFiles = file.listFiles(fileFilter); + + return ((cnts[0] == 0) && (cnts[1] == 0)) ? null : Integer.toString(cnts[0]) + " " + Integer.toString(cnts[1]); + } + private String getBatteryVoltage() { int val = 0; for (int idx = 0; idx < 3; idx++) { diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index c338223d..0953daeb 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -81,6 +81,7 @@ public class MpMasterService extends Service { private SmsSendReceiver mSmsSnedReceiver; private int mPrevDateForLogs = 0; + private int mMasterTimers = 0; public static class STATE_SERVICE { public static final int CONNECTED = 10; @@ -477,6 +478,14 @@ public class MpMasterService extends Service { } } + public boolean isCriticalTime() { + if (mSeparateNetwork) { + return true; + } + + return (mMasterTimers % 12) == 0; + } + private void startMaster(boolean bundleWithMpApp) { String masterUrl = MicroPhotoContext.DEFAULT_MASTER_URL; @@ -493,8 +502,10 @@ public class MpMasterService extends Service { logger.warning("Start Mntn report: " + masterUrl + " MntnMode=" + (mMntnMode ? "1" : "0") + " QuickHB=" + (mQuickHbMode ? "1" : "0")); + AppMaster appMaster = new AppMaster(this, masterUrl, appConfig.cmdid, bundleWithMpApp); - appMaster.start(); + appMaster.start(isCriticalTime()); + mMasterTimers++; } public static class AlarmReceiver extends BroadcastReceiver {