任务数据计算参数问题修复。修复无任务数据时未进行位置距离计算的问题。

This commit is contained in:
ZhanGSKen
2025-10-28 14:16:01 +08:00
parent 298b337392
commit dd20060754
2 changed files with 20 additions and 11 deletions

View File

@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle #Created by .winboll/winboll_app_build.gradle
#Tue Oct 28 13:36:57 HKT 2025 #Tue Oct 28 06:06:00 GMT 2025
stageCount=16 stageCount=16
libraryProject= libraryProject=
baseVersion=15.0 baseVersion=15.0
publishVersion=15.0.15 publishVersion=15.0.15
buildCount=0 buildCount=6
baseBetaVersion=15.0.16 baseBetaVersion=15.0.16

View File

@@ -111,17 +111,15 @@ public class DistanceCalculatorUtil {
LogUtils.d(TAG, "传入坐标参数为空,退出函数。"); LogUtils.d(TAG, "传入坐标参数为空,退出函数。");
return; return;
} }
if (mGpsPositionCalculated == null) {
mGpsPositionCalculated = currentGpsPosition;
LogUtils.d(TAG, "最后计算位置记录为空,现在使用新坐标为初始化。");
}
// 计算频率控制模块 // 计算频率控制模块
// //
// 计算与最近一次GPS计算的时间间隔 // 计算与最近一次GPS计算的时间间隔
long nCalculatedTimeBettween = System.currentTimeMillis() - mLastCalculatedTime; long nCalculatedTimeBettween = System.currentTimeMillis() - mLastCalculatedTime;
// 计算跳跃距离 // 计算跳跃距离
double jumpDistance = calculateHaversineDistance(mGpsPositionCalculated.getLatitude(), mGpsPositionCalculated.getLongitude(), currentGpsPosition.getLatitude(), currentGpsPosition.getLongitude()); double gpsPositionCalculatedLatitude = mGpsPositionCalculated == null ?0.0f: mGpsPositionCalculated.getLatitude();
double gpsPositionCalculatedLongitude = mGpsPositionCalculated == null ?0.0f: mGpsPositionCalculated.getLongitude();
double jumpDistance = calculateHaversineDistance(gpsPositionCalculatedLatitude, gpsPositionCalculatedLongitude, currentGpsPosition.getLatitude(), currentGpsPosition.getLongitude());
if (jumpDistance < mMinjumpDistance) { if (jumpDistance < mMinjumpDistance) {
LogUtils.d(TAG, String.format("checkAllTaskTriggerCondition跳跃距离%f小于50米。", jumpDistance)); LogUtils.d(TAG, String.format("checkAllTaskTriggerCondition跳跃距离%f小于50米。", jumpDistance));
// 跳跃距离小于最小有效跳跃值 // 跳跃距离小于最小有效跳跃值
@@ -132,22 +130,33 @@ public class DistanceCalculatorUtil {
} }
} }
LogUtils.d(TAG, String.format("checkAllTaskTriggerCondition跳跃距离%f与上次计算间隔%d启动任务数据计算。", jumpDistance, nCalculatedTimeBettween)); if (mGpsPositionCalculated == null) {
mGpsPositionCalculated = currentGpsPosition;
LogUtils.d(TAG, "最后计算位置记录为空,现在使用新坐标为初始化。");
}
LogUtils.d(TAG, String.format("checkAllTaskTriggerCondition跳跃距离%f与上次计算间隔%d现在启动任务数据计算。", jumpDistance, nCalculatedTimeBettween));
// 获取位置任务基础数据 // 获取位置任务基础数据
MainService mainService = MainService.getInstance(mContext); MainService mainService = MainService.getInstance(mContext);
mPositionList = mainService.getPositionList(); mPositionList = mainService.getPositionList();
mAllTasks = mainService.getAllTasks(); mAllTasks = mainService.getAllTasks();
// 任务为空,跳过校验。 // 位置数据为空,跳过校验。
if (mPositionList.isEmpty() || mAllTasks.isEmpty()) { if (mPositionList.isEmpty()) {
LogUtils.d(TAG, "checkAllTaskTriggerCondition任务数据为空,跳过校验"); LogUtils.d(TAG, "checkAllTaskTriggerCondition位置数据为空,跳过距离计算");
return; return;
} }
// 更新所有位置点的位置距离数据 // 更新所有位置点的位置距离数据
refreshRealPositionDistance(currentGpsPosition); refreshRealPositionDistance(currentGpsPosition);
// 任务数据为空,跳过校验。
if (mAllTasks.isEmpty()) {
LogUtils.d(TAG, "checkAllTaskTriggerCondition任务数据为空跳过任务提醒检查计算。");
return;
}
// 迭代器遍历任务Java 7 安全遍历,避免并发修改异常) // 迭代器遍历任务Java 7 安全遍历,避免并发修改异常)
Iterator<PositionTaskModel> taskIter = mAllTasks.iterator(); Iterator<PositionTaskModel> taskIter = mAllTasks.iterator();
while (taskIter.hasNext()) { while (taskIter.hasNext()) {