优先使用MpAPP的心跳触发

serial
Matthew 1 year ago
parent 5052f3a755
commit fc6e835773

@ -95,7 +95,7 @@ public class MicroPhotoService extends Service {
public static final String ACTION_START = "com.xypower.mpapp.ACT_START";
public static final String ACTION_STOP = "com.xypower.mpapp.ACT_STOP";
public static final String ACTION_MAIN = "com.xypower.mpapp.ACT_MAIN";
private static final String ACTION_HEARTBEAT = "com.xypower.mpapp.ACT_HB";
private static final String ACTION_HEARTBEAT = MicroPhotoContext.ACTION_HEARTBEAT_MP;
private static final String ACTION_TAKE_PHOTO = "com.xypower.mpapp.ACT_TP";
private static final String ACTION_IMP_PUBKRY = "com.xypower.mpapp.ACT_IMP_PUBKEY";
@ -225,20 +225,7 @@ public class MicroPhotoService extends Service {
if (aci == null) {
break;
}
/*
if (aci.getShowIntent().isBroadcast()) {
// alarmManager.cancel(aci.getShowIntent());
}
*/
}
// alarmManager.cancel();
// boolean res = false;
// Environment.getExternalStoragePublicDirectory(String)
// registerHeartbeatTimer(getHeartbeatDuration());
enableGps(true);
requestPosition();

@ -25,6 +25,8 @@ public class MicroPhotoContext {
public static final String PACKAGE_NAME_MPAPP = "com.xypower.mpapp";
public static final String PACKAGE_NAME_MPMASTER = "com.xypower.mpmaster";
public static final String ACTION_HEARTBEAT_MP = "com.xypower.mpapp.ACT_HB";
public final static String DEFAULT_MASTER_URL = "http://180.166.218.222:40101/";
public final static String MASTER_URL_CMDID = "cmdid";
public final static int DEFAULT_PROTOCOL = 0xFF00;

@ -114,6 +114,9 @@ public class MpMasterService extends Service {
private boolean mSeparateNetwork = false;
private PendingIntent mPreviousHB = null;
private long mPreviousHeartbeatTime = 0;
public MpMasterService() {
}
@Override
@ -199,6 +202,9 @@ public class MpMasterService extends Service {
intentFilter.addAction(ACTION_MSG_BROADCAST);
intentFilter.addAction(ACTION_UPDATE_CONFIGS);
intentFilter.addAction(ACTION_UPD_OTA);
if (!mSeparateNetwork) {
intentFilter.addAction(MicroPhotoContext.ACTION_HEARTBEAT_MP);
}
registerReceiver(mAlarmReceiver, intentFilter);
}
@ -400,6 +406,15 @@ public class MpMasterService extends Service {
mService.startMaster();
mService.startMpApp();
} else if (TextUtils.equals(MicroPhotoContext.ACTION_HEARTBEAT_MP, action)) {
if (!mService.mSeparateNetwork && !mService.mMntnMode && !mService.mQuickHbMode) {
mService.logger.info("Heartbeat Timer Fired By MpAPP ACTION=" + action);
mService.registerHeartbeatTimer(mService.mPreviousHeartbeatTime + mService.mHeartbeatDuration * 1000);
mService.startMaster();
mService.startMpApp();
}
} else if (TextUtils.equals(ACTION_UPDATE_CONFIGS, action)) {
int restart = intent.getIntExtra("restart", 0);
mService.logger.info("Update Config Fired ACTION=" + action + " restart=" + restart);
@ -413,21 +428,9 @@ public class MpMasterService extends Service {
}
}
}
private void registerHeartbeatTimer(int duration) {
int orgHeartbeatDuration = mHeartbeatDuration;
mHeartbeatDuration = duration;
if (orgHeartbeatDuration == 0) {
registerHeartbeatTimer();
}
}
private void registerHeartbeatTimer() {
Intent alarmIntent = new Intent();
alarmIntent.setAction(ACTION_HEARTBEAT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
long timeout = mHeartbeatDuration;
if (mMntnMode && mQuickHbMode) {
timeout = mQuickHeartbeatDuration;
@ -435,7 +438,26 @@ public class MpMasterService extends Service {
}
alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + timeout * 1000, pendingIntent);
registerHeartbeatTimer(SystemClock.elapsedRealtime() + timeout * 1000);
}
private void registerHeartbeatTimer(long triggerTime) {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
if (mPreviousHB != null) {
try {
alarmManager.cancel(mPreviousHB);
} catch (Exception ex) {
}
mPreviousHeartbeatTime = 0;
}
Intent alarmIntent = new Intent();
alarmIntent.setAction(ACTION_HEARTBEAT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0);
mPreviousHB = pendingIntent;
mPreviousHeartbeatTime = triggerTime;
alarmManager.setExactAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerTime, pendingIntent);
}
@Override

Loading…
Cancel
Save