Compare commits

..

2 Commits

Author SHA1 Message Date
ZhanGSKen
dd20060754 任务数据计算参数问题修复。修复无任务数据时未进行位置距离计算的问题。 2025-10-28 14:16:01 +08:00
ZhanGSKen
298b337392 服务模块启动参数BugFix. 2025-10-28 14:12:32 +08:00
3 changed files with 27 additions and 15 deletions

View File

@@ -1,8 +1,8 @@
#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
libraryProject=
baseVersion=15.0
publishVersion=15.0.15
buildCount=0
buildCount=6
baseBetaVersion=15.0.16

View File

@@ -630,9 +630,12 @@ public class MainService extends Service {
*/
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
boolean isSettingToEnable = intent.getBooleanExtra(EXTRA_IS_SETTING_TO_ENABLE, false);
if (isSettingToEnable) {
run(); // 重启服务核心逻辑(保证服务启动后进入运行状态)
boolean isSettingToEnable = false;
if (intent != null) {
isSettingToEnable = intent.getBooleanExtra(EXTRA_IS_SETTING_TO_ENABLE, false);
if (isSettingToEnable) {
run(); // 重启服务核心逻辑(保证服务启动后进入运行状态)
}
}
// 如果被设置为自启动就返回START_STICKY服务被异常杀死后系统会尝试重启原逻辑保留
@@ -904,7 +907,7 @@ public class MainService extends Service {
}
LogUtils.i(TAG, "任务触发通知:" + triggerContent);
}
/**
* 更新前台通知的GPS状态Java 7 主线程切换匿名Runnable实现

View File

@@ -111,17 +111,15 @@ public class DistanceCalculatorUtil {
LogUtils.d(TAG, "传入坐标参数为空,退出函数。");
return;
}
if (mGpsPositionCalculated == null) {
mGpsPositionCalculated = currentGpsPosition;
LogUtils.d(TAG, "最后计算位置记录为空,现在使用新坐标为初始化。");
}
// 计算频率控制模块
//
// 计算与最近一次GPS计算的时间间隔
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) {
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);
mPositionList = mainService.getPositionList();
mAllTasks = mainService.getAllTasks();
// 任务为空,跳过校验。
if (mPositionList.isEmpty() || mAllTasks.isEmpty()) {
LogUtils.d(TAG, "checkAllTaskTriggerCondition任务数据为空,跳过校验");
// 位置数据为空,跳过校验。
if (mPositionList.isEmpty()) {
LogUtils.d(TAG, "checkAllTaskTriggerCondition位置数据为空,跳过距离计算");
return;
}
// 更新所有位置点的位置距离数据
refreshRealPositionDistance(currentGpsPosition);
// 任务数据为空,跳过校验。
if (mAllTasks.isEmpty()) {
LogUtils.d(TAG, "checkAllTaskTriggerCondition任务数据为空跳过任务提醒检查计算。");
return;
}
// 迭代器遍历任务Java 7 安全遍历,避免并发修改异常)
Iterator<PositionTaskModel> taskIter = mAllTasks.iterator();
while (taskIter.hasNext()) {