Matthew 3 months ago
commit 4cae89014d

@ -5,7 +5,7 @@ plugins {
// 10,00,000 major-minor-build // 10,00,000 major-minor-build
def AppMajorVersion = 1 def AppMajorVersion = 1
def AppMinorVersion = 3 def AppMinorVersion = 3
def AppBuildNumber = 70 def AppBuildNumber = 71
def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber def AppVersionName = AppMajorVersion + "." + AppMinorVersion + "." + AppBuildNumber
def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber def AppVersionCode = AppMajorVersion * 100000 + AppMinorVersion * 1000 + AppBuildNumber

@ -2099,7 +2099,7 @@ bool CPhoneDevice::TakePhoto(const IDevice::PHOTO_INFO& photoInfo, const vector<
std::this_thread::sleep_for(std::chrono::seconds(5)); std::this_thread::sleep_for(std::chrono::seconds(5));
} }
CameraPhotoCmd(ts, localPhotoInfo.channel, 0, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr); CameraPhotoCmd(ts, localPhotoInfo.channel, TAKE_PHOTO, localPhotoInfo.resolution, localPhotoInfo.preset, param.serfile, param.baud, param.addr);
XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over"); XYLOG(XYLOG_SEVERITY_INFO, "Taking photo over");
if(localPhotoInfo.scheduleTime == 0) { if(localPhotoInfo.scheduleTime == 0) {

@ -106,7 +106,7 @@
#define D_OPEN_MODULE_POWER 0x0009000C /* 打开机芯电源(1 有效)*/ #define D_OPEN_MODULE_POWER 0x0009000C /* 打开机芯电源(1 有效)*/
/* 摄像机下发命令宏定义*/ /* 摄像机下发命令宏定义*/
#define TAKE_PHOTO 0 /* 拍照*/ #define TAKE_PHOTO 20000 /* 拍照*/
#define SET_BAUD 10000 /* 设置球机波特率*/ #define SET_BAUD 10000 /* 设置球机波特率*/
#define STOP_CMD 10005 /* 取消或停止指令*/ #define STOP_CMD 10005 /* 取消或停止指令*/
#define AUTO_SCAN 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/ #define AUTO_SCAN 10006 /* 自动扫描功能控制(1/0 打开/关闭该功能)*/

@ -50,7 +50,6 @@ import java.lang.reflect.Method;
import java.nio.channels.FileLock; import java.nio.channels.FileLock;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
@ -765,65 +764,67 @@ public class MpMasterService extends Service {
} }
private void registerHeartbeatTimer() { private void registerHeartbeatTimer() {
long delaySec = 20; // 比i1延迟20秒
long interval = mHeartbeatDuration; // 距离下一次间隔默认10分钟
boolean keepAlive = false;
long currentSec = System.currentTimeMillis() / 1000;
long timeout = mHeartbeatDuration;
boolean keepAlive = false;
long currentTimeMs = System.currentTimeMillis();
if (mMntnMode) { if (mMntnMode) {
// 无延迟
delaySec = 0;
if (mQuickHbMode) { if (mQuickHbMode) {
interval = mQuickHeartbeatDuration; timeout = mQuickHeartbeatDuration;
} }
registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive); registerHeartbeatTimer(currentTimeMs + timeout * 1000, keepAlive);
} else { } else {
long closestTime = -1;
if (mUsingAbsHbTime) { if (mUsingAbsHbTime) {
long expandSec = 120; // 扩展2分钟之内的都触发 Date dt = new Date();
Calendar calendar = Calendar.getInstance(); long ts = dt.getTime();
calendar.set(Calendar.HOUR_OF_DAY, 0); ts -= ts % 1000;
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0); dt.setHours(0);
calendar.set(Calendar.MILLISECOND, 0); dt.setMinutes(0);
long todayZero = calendar.getTimeInMillis() / 1000; dt.setSeconds(0);
long todaySec = currentSec - todayZero;
long zeroPoint = dt.getTime();
long nextAbsSec = this.getNextAbsSec(todaySec); zeroPoint -= zeroPoint % 1000;
if (nextAbsSec - todaySec > interval + expandSec) { long offsetTs = (ts - zeroPoint) / 1000;
keepAlive = true;
registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive);
} else {
registerHeartbeatTimer((todayZero + nextAbsSec) * 1000, keepAlive);
}
} else {
// mUsingAbsHbTime=false间隔10分钟 + 延迟
registerHeartbeatTimer((currentSec + interval + delaySec) * 1000, keepAlive);
}
}
}
private long getNextAbsSec(long todaySec) {
long nextAbsSec = -1;
if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) { if (mAbsHeartbeatTimes != null && mAbsHeartbeatTimes.length > 0) {
for (int i = 0; i < mAbsHeartbeatTimes.length; i++) { for (int i = 0; i < mAbsHeartbeatTimes.length; i++) {
if (mAbsHeartbeatTimes[i] > todaySec) { if (mAbsHeartbeatTimes[i] > offsetTs) {
nextAbsSec = mAbsHeartbeatTimes[i]; closestTime = mAbsHeartbeatTimes[i];
break; break;
} }
} }
if (nextAbsSec == -1) { if (closestTime == -1) {
// next day // next day
nextAbsSec = mAbsHeartbeatTimes[0] + 24 * 3600; closestTime = mAbsHeartbeatTimes[0] + 86400;
}
} else {
closestTime = 9 * 3600 + 13 * 60;
if (offsetTs > closestTime) {
closestTime += 86400;
}
}
if (zeroPoint + closestTime * 1000 > currentTimeMs + mMpHeartbeatDuration) {
keepAlive = true;
registerHeartbeatTimer(currentTimeMs + mMpHeartbeatDuration + 5000, keepAlive);
} else {
registerHeartbeatTimer(zeroPoint + closestTime * 1000, keepAlive);
} }
} else { } else {
nextAbsSec = 9 * 3600 + 13 * 60; // mUsingAbsHbTime: false
if (todaySec > nextAbsSec) { if ((mPreviousHeartbeatTime != 0) && (mPreviousHeartbeatTime - currentTimeMs < mHeartbeatDuration * 1000)) {
nextAbsSec += 24 * 3600; registerHeartbeatTimer(mPreviousHeartbeatTime + mHeartbeatDuration * 1000, keepAlive);
} else {
registerHeartbeatTimer(currentTimeMs + timeout * 1000, keepAlive);
}
} }
} }
return nextAbsSec;
} }
private void registerHeartbeatTimer(long triggerTime, boolean keepAlive) { private void registerHeartbeatTimer(long triggerTime, boolean keepAlive) {
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

Loading…
Cancel
Save