diff --git a/common/src/main/java/com/xypower/common/MicroPhotoContext.java b/common/src/main/java/com/xypower/common/MicroPhotoContext.java index 706901a0..16d79fc2 100644 --- a/common/src/main/java/com/xypower/common/MicroPhotoContext.java +++ b/common/src/main/java/com/xypower/common/MicroPhotoContext.java @@ -1,5 +1,6 @@ package com.xypower.common; +import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; @@ -17,6 +18,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; +import java.util.List; public class MicroPhotoContext { @@ -92,6 +94,21 @@ public class MicroPhotoContext { return stringBuilder == null ? null : stringBuilder.toString(); } + public static boolean isAppAlive(Context context, String packageName) { + ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); + List services = am.getRunningServices(Integer.MAX_VALUE); + + boolean isRunning = false; + for (ActivityManager.RunningServiceInfo rsi : services) { + if (packageName.equalsIgnoreCase(rsi.service.getPackageName())) { + isRunning = true; + break; + } + } + + return isRunning; + } + public static String buildAppDir(Context contxt) { String path = Environment.getExternalStorageDirectory().getAbsolutePath(); diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java index e786725f..764a30bc 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/AppMaster.java @@ -4,6 +4,7 @@ import android.content.Context; import android.os.Environment; import android.os.PowerManager; import android.os.SystemClock; +import android.os.storage.StorageManager; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -102,13 +103,7 @@ public class AppMaster { public void run() { // mMasterUrl = "http://192.168.50.100/mntn/"; - final Context context = mService.getApplicationContext(); - String appPath = MicroPhotoContext.buildAppDir(context); - File mpappDb = new File(appPath + "data/App.db"); - if (!mpappDb.exists() || ((System.currentTimeMillis() - mpappDb.lastModified()) > 1800000)) { - // greater than 30m - MicroPhotoContext.restartMpApp(context); - } + String masterUrl = mMasterUrl; @@ -571,4 +566,5 @@ public class AppMaster { } + } diff --git a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java index e994242a..8825d277 100644 --- a/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java +++ b/mpmaster/src/main/java/com/xypower/mpmaster/MpMasterService.java @@ -121,6 +121,9 @@ public class MpMasterService extends Service { private String mSerialNo = null; + private long mTimeToStartMpApp = 0; + private long mTimeOfMpAppAlive = 1800000; // 30minutes + public MpMasterService() { } @Override @@ -184,6 +187,7 @@ public class MpMasterService extends Service { // AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); startMaster(); + startMpApp(); registerHeartbeatTimer(); @@ -221,6 +225,36 @@ public class MpMasterService extends Service { return mCmdid; } + public void startMpApp() { + try { + final Context context = getApplicationContext(); + + if (MicroPhotoContext.isAppAlive(context, MicroPhotoContext.PACKAGE_NAME_MPAPP)) { + return; + } + + + String appPath = MicroPhotoContext.buildMpAppDir(context); + long ts = System.currentTimeMillis(); + if (ts - mTimeToStartMpApp < 30000) { + return; + } + + File mpappDb = new File(appPath + "data/App.db"); + long modifiedTimeOfDb = 0; + if (mpappDb.exists()) { + modifiedTimeOfDb = mpappDb.lastModified(); + } + if ((ts - modifiedTimeOfDb) > mTimeOfMpAppAlive) { + // greater than 30m + MicroPhotoContext.restartMpApp(context); + mTimeToStartMpApp = ts; + } + } catch (Exception ex) { + + } + } + public String getMpAppVersion() { if (TextUtils.isEmpty(mMpAppVersion)) { PackageManager packageManager = getPackageManager(); @@ -306,6 +340,7 @@ public class MpMasterService extends Service { mService.registerHeartbeatTimer(); mService.startMaster(); + mService.startMpApp(); } else if (TextUtils.equals(ACTION_MSG_BROADCAST, action)) { @@ -693,5 +728,9 @@ public class MpMasterService extends Service { SysApi.selectSimCard4Data(getApplicationContext(), num); } + + + ////////////////////////GPS//////////////////// + } \ No newline at end of file