Commit b3f8d7523aa5f1ef869c839293ee7758d354f57f

Authored by 杨帅
1 parent 13527623

1 修改跑步完成页面,查询轨迹逻辑

moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RunningFinishFragmetPresenter.java
@@ -2,24 +2,17 @@ package com.cnlive.moudle.pedometer.frame.presenter; @@ -2,24 +2,17 @@ package com.cnlive.moudle.pedometer.frame.presenter;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 import android.content.Context; 4 import android.content.Context;
5 -import android.graphics.Bitmap;  
6 -import android.os.Handler;  
7 import android.text.TextUtils; 5 import android.text.TextUtils;
8 import android.util.Log; 6 import android.util.Log;
9 -import android.view.View;  
10 import android.widget.Toast; 7 import android.widget.Toast;
11 8
12 -import com.baidu.mapapi.map.BaiduMap;  
13 import com.baidu.mapapi.model.LatLng; 9 import com.baidu.mapapi.model.LatLng;
14 import com.baidu.trace.LBSTraceClient; 10 import com.baidu.trace.LBSTraceClient;
15 import com.baidu.trace.model.SortType; 11 import com.baidu.trace.model.SortType;
16 -import com.cnlive.libs.base.logic.Event;  
17 import com.cnlive.libs.base.logic.Logic; 12 import com.cnlive.libs.base.logic.Logic;
18 import com.cnlive.libs.base.logic.callback.DataCallback; 13 import com.cnlive.libs.base.logic.callback.DataCallback;
19 import com.cnlive.libs.base.logic.callback.FailureCallback; 14 import com.cnlive.libs.base.logic.callback.FailureCallback;
20 -import com.cnlive.libs.base.logic.callback.StateCallback;  
21 import com.cnlive.libs.base.logic.callback.SuccessCallback; 15 import com.cnlive.libs.base.logic.callback.SuccessCallback;
22 -import com.cnlive.libs.base.util.ToastUtil;  
23 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 16 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
24 import com.cnlive.moudle.pedometer.frame.view.RunningFinishFragmentView; 17 import com.cnlive.moudle.pedometer.frame.view.RunningFinishFragmentView;
25 import com.cnlive.moudle.pedometer.model.Constant; 18 import com.cnlive.moudle.pedometer.model.Constant;
@@ -27,36 +20,24 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean; @@ -27,36 +20,24 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean;
27 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin; 20 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin;
28 import com.cnlive.moudle.pedometer.net.SubscriptionRequest; 21 import com.cnlive.moudle.pedometer.net.SubscriptionRequest;
29 import com.cnlive.moudle.pedometer.net.bean.BaseInfo; 22 import com.cnlive.moudle.pedometer.net.bean.BaseInfo;
30 -import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;  
31 -import com.cnlive.moudle.pedometer.service.StepService;  
32 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity; 23 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
33 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; 24 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
34 import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity; 25 import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity;
35 import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; 26 import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
36 -import com.cnlive.moudle.pedometer.ui.widget.TipDialog;  
37 -import com.cnlive.moudle.pedometer.upload.UploadLogic;  
38 import com.cnlive.moudle.pedometer.utils.GsonUtil; 27 import com.cnlive.moudle.pedometer.utils.GsonUtil;
39 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 28 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
40 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil; 29 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
41 import com.cnlive.moudle.pedometer.utils.StepUtil; 30 import com.cnlive.moudle.pedometer.utils.StepUtil;
42 -import com.cnlive.moudle.pedometer.utils.TimeUtil;  
43 import com.example.moudle_pedometer.R; 31 import com.example.moudle_pedometer.R;
44 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter; 32 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
45 33
46 -import java.io.File;  
47 -import java.io.FileOutputStream;  
48 -import java.text.SimpleDateFormat;  
49 import java.util.ArrayList; 34 import java.util.ArrayList;
50 -import java.util.Date;  
51 import java.util.HashMap; 35 import java.util.HashMap;
52 import java.util.List; 36 import java.util.List;
53 import java.util.Map; 37 import java.util.Map;
54 38
55 import io.reactivex.disposables.Disposable; 39 import io.reactivex.disposables.Disposable;
56 40
57 -import static com.cnlive.libs.base.logic.Config.STATE_IDLE;  
58 -import static com.cnlive.libs.base.logic.Config.STATE_LOAD;  
59 -  
60 public class RunningFinishFragmetPresenter extends MvpBasePresenter<RunningFinishFragmentView> { 41 public class RunningFinishFragmetPresenter extends MvpBasePresenter<RunningFinishFragmentView> {
61 private LBSTraceClient mClient = null; 42 private LBSTraceClient mClient = null;
62 private List<LatLng> importPoints; 43 private List<LatLng> importPoints;
@@ -103,7 +84,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -103,7 +84,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
103 isPause = "1"; 84 isPause = "1";
104 } 85 }
105 //继续时间 86 //继续时间
106 - String continueTime = userStepEntity.getContinueTime()+""; 87 + String continueTime = userStepEntity.getContinueTime() + "";
107 //是否完成 88 //是否完成
108 String completeStatus = runningFinishBean.getIsFinish(); 89 String completeStatus = runningFinishBean.getIsFinish();
109 //设置步数 90 //设置步数
@@ -201,7 +182,14 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -201,7 +182,14 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
201 //查询当前用户的历史轨迹 182 //查询当前用户的历史轨迹
202 long startTime = userStepEntity.getStartTimeStamp(); 183 long startTime = userStepEntity.getStartTimeStamp();
203 //获取当前的时间戳(秒) 184 //获取当前的时间戳(秒)
204 - long endTime = userStepEntity.getFinishTimeStamp(); 185 + long endTime = 0;
  186 + if (userStepEntity.getPauseCount() == 0) {
  187 + //没有暂停
  188 + endTime = userStepEntity.getFinishTimeStamp();
  189 + } else {
  190 + //暂停了
  191 + endTime = userStepEntity.getUserPauseTimeStamp();
  192 + }
205 //获取当前的实体名称 193 //获取当前的实体名称
206 String entityName = CommonInfo.getUserId(context); 194 String entityName = CommonInfo.getUserId(context);
207 //打的重要点 195 //打的重要点
@@ -212,71 +200,128 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis @@ -212,71 +200,128 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
212 if (mClient == null) { 200 if (mClient == null) {
213 mClient = new LBSTraceClient(context); 201 mClient = new LBSTraceClient(context);
214 } 202 }
  203 + List<LatLng> allResults = new ArrayList<>();
215 MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() { 204 MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() {
216 @Override 205 @Override
217 public void success(List<LatLng> resultPoints) { 206 public void success(List<LatLng> resultPoints) {
218 if (resultPoints != null) { 207 if (resultPoints != null) {
219 if (getView() != null) { 208 if (getView() != null) {
  209 + allResults.addAll(resultPoints);
220 QMUITipDialogUtil.dismessDialog(); 210 QMUITipDialogUtil.dismessDialog();
221 - MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end);  
222 - //先判断是否到达终点  
223 - if (!userStepEntity.getIsArriveEndPoint()) {  
224 - runningFinishBean.setIsFinish("0"); 211 + //判断用户是否点击暂停按钮
  212 + if (userStepEntity.getPauseCount() == 0) {
  213 + MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end);
  214 + //没有点击暂停
  215 + //先判断是否到达终点
  216 + checkUserIsFinish(resultPoints, userStepEntity, runningFinishBean, context);
  217 + saveRouteData(context, userStepEntity, runningFinishBean);
225 } else { 218 } else {
226 - if (importPoints != null) {  
227 - //判断是否完成  
228 - boolean isFinish = MyMapUtil.checkIsFinishTrace(importPoints, resultPoints, Constant.PASS_RATE);  
229 - if (isFinish) {  
230 - Toast.makeText(context, "完成", Toast.LENGTH_LONG).show();  
231 - runningFinishBean.setIsFinish("1");  
232 - } else {  
233 - Toast.makeText(context, "没有完成", Toast.LENGTH_LONG).show();  
234 - runningFinishBean.setIsFinish("0");  
235 - }  
236 - } 219 + MyMapUtil.drawHistoryTrack(context, getView().baiduMap, resultPoints, SortType.asc, R.color.red, R.drawable.icon_start, 0);
237 } 220 }
238 - saveRouteData(context, userStepEntity, runningFinishBean);  
239 221
  222 + //如果点击暂停
  223 + if (userStepEntity.getPauseCount() != 0) {
  224 + long contineTime = userStepEntity.getContinueTime();
  225 + long finishTime = userStepEntity.getFinishTimeStamp();
  226 + //开始查询
  227 + MyMapUtil.queryHistoryTrace(context, mClient, entityName, contineTime, finishTime, new MyMapUtil.CallBack() {
  228 + @Override
  229 + public void success(List<LatLng> resultPoints) {
  230 + if (null != resultPoints) {
  231 + allResults.addAll(resultPoints);
  232 + //判断用户是否完成
  233 + if (importPoints != null) {
  234 + //先判断是否到达终点
  235 + checkUserIsFinish(resultPoints, userStepEntity, runningFinishBean, context);
  236 + saveRouteData(context, userStepEntity, runningFinishBean);
  237 + }
  238 +
  239 + } else {
  240 + //查询失败
  241 + QMUITipDialogUtil.dismessDialog();
  242 + queryTraceFaile(context, userStepEntity, runningFinishBean);
  243 + //
  244 + }
  245 + }
  246 + });
  247 + }
240 } 248 }
241 } 249 }
242 //查询失败 250 //查询失败
243 else { 251 else {
244 QMUITipDialogUtil.dismessDialog(); 252 QMUITipDialogUtil.dismessDialog();
245 - if (failTraceDialog == null) {  
246 - failTraceDialog = new SelectDialog(context, "获取轨迹失败,是否重试?", "重试", new SelectDialog.DialogInterface() {  
247 - @Override  
248 - public void onClick(SelectDialog dialog) {  
249 - dialog.dismiss();  
250 - queryHistoryTrace(context, userStepEntity, runningFinishBean);  
251 - }  
252 - }, "暂存", new SelectDialog.DialogInterface() {  
253 - @Override  
254 - public void onClick(SelectDialog dialog) {  
255 - dialog.dismiss();  
256 - StepUtil.clearRunData(context, CommonInfo.getUserId(context));  
257 - CommonInfo.reset(context);  
258 - //跳转到上传失败列表  
259 - LineUpAgainActivity.newInstance(context);  
260 - //关闭当前窗口  
261 - context.finish(); 253 + queryTraceFaile(context, userStepEntity, runningFinishBean);
  254 + }
  255 + }
  256 + });
262 257
263 - }  
264 - });  
265 - failTraceDialog.setCanceledOnTouchOutside(false);  
266 - failTraceDialog.setCancelable(false);  
267 - if (!failTraceDialog.isShowing()) {  
268 - failTraceDialog.show();  
269 - } 258 + }
270 259
271 - } else {  
272 - if (!failTraceDialog.isShowing()) {  
273 - failTraceDialog.show();  
274 - }  
275 - } 260 + /**
  261 + * 判断用户是否完成
  262 + *
  263 + * @param resultPoints
  264 + * @param userStepEntity
  265 + * @param runningFinishBean
  266 + * @param context
  267 + */
  268 + public void checkUserIsFinish(List<LatLng> resultPoints, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean, Activity context) {
  269 + if (!userStepEntity.getIsArriveEndPoint()) {
  270 + runningFinishBean.setIsFinish("0");
  271 + } else {
  272 + if (importPoints != null) {
  273 + //判断是否完成
  274 + boolean isFinish = MyMapUtil.checkIsFinishTrace(importPoints, resultPoints, Constant.PASS_RATE);
  275 + if (isFinish) {
  276 + Toast.makeText(context, "完成", Toast.LENGTH_LONG).show();
  277 + runningFinishBean.setIsFinish("1");
  278 + } else {
  279 + Toast.makeText(context, "没有完成", Toast.LENGTH_LONG).show();
  280 + runningFinishBean.setIsFinish("0");
276 } 281 }
277 } 282 }
278 - }); 283 + }
  284 + }
279 285
  286 + /**
  287 + * 查询历史轨迹失败
  288 + *
  289 + * @param context
  290 + * @param userStepEntity
  291 + * @param runningFinishBean
  292 + */
  293 + public void queryTraceFaile(Activity context, UserStepEntity userStepEntity, RunningFinishBean runningFinishBean) {
  294 + if (failTraceDialog == null) {
  295 + failTraceDialog = new SelectDialog(context, "获取轨迹失败,是否重试?", "重试", new SelectDialog.DialogInterface() {
  296 + @Override
  297 + public void onClick(SelectDialog dialog) {
  298 + dialog.dismiss();
  299 + queryHistoryTrace(context, userStepEntity, runningFinishBean);
  300 + }
  301 + }, "暂存", new SelectDialog.DialogInterface() {
  302 + @Override
  303 + public void onClick(SelectDialog dialog) {
  304 + dialog.dismiss();
  305 + StepUtil.clearRunData(context, CommonInfo.getUserId(context));
  306 + CommonInfo.reset(context);
  307 + //跳转到上传失败列表
  308 + LineUpAgainActivity.newInstance(context);
  309 + //关闭当前窗口
  310 + context.finish();
  311 +
  312 + }
  313 + });
  314 + failTraceDialog.setCanceledOnTouchOutside(false);
  315 + failTraceDialog.setCancelable(false);
  316 + if (!failTraceDialog.isShowing()) {
  317 + failTraceDialog.show();
  318 + }
  319 +
  320 + } else {
  321 + if (!failTraceDialog.isShowing()) {
  322 + failTraceDialog.show();
  323 + }
  324 + }
280 } 325 }
281 326
282 327