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 {