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 2  
3 3 import android.app.Activity;
4 4 import android.content.Context;
5   -import android.graphics.Bitmap;
6   -import android.os.Handler;
7 5 import android.text.TextUtils;
8 6 import android.util.Log;
9   -import android.view.View;
10 7 import android.widget.Toast;
11 8  
12   -import com.baidu.mapapi.map.BaiduMap;
13 9 import com.baidu.mapapi.model.LatLng;
14 10 import com.baidu.trace.LBSTraceClient;
15 11 import com.baidu.trace.model.SortType;
16   -import com.cnlive.libs.base.logic.Event;
17 12 import com.cnlive.libs.base.logic.Logic;
18 13 import com.cnlive.libs.base.logic.callback.DataCallback;
19 14 import com.cnlive.libs.base.logic.callback.FailureCallback;
20   -import com.cnlive.libs.base.logic.callback.StateCallback;
21 15 import com.cnlive.libs.base.logic.callback.SuccessCallback;
22   -import com.cnlive.libs.base.util.ToastUtil;
23 16 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
24 17 import com.cnlive.moudle.pedometer.frame.view.RunningFinishFragmentView;
25 18 import com.cnlive.moudle.pedometer.model.Constant;
... ... @@ -27,36 +20,24 @@ import com.cnlive.moudle.pedometer.model.RunningFinishBean;
27 20 import com.cnlive.moudle.pedometer.net.ApiServiceRunLin;
28 21 import com.cnlive.moudle.pedometer.net.SubscriptionRequest;
29 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 23 import com.cnlive.moudle.pedometer.sql.entity.FailedEntity;
33 24 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
34 25 import com.cnlive.moudle.pedometer.ui.activity.LineUpAgainActivity;
35 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 27 import com.cnlive.moudle.pedometer.utils.GsonUtil;
39 28 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
40 29 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
41 30 import com.cnlive.moudle.pedometer.utils.StepUtil;
42   -import com.cnlive.moudle.pedometer.utils.TimeUtil;
43 31 import com.example.moudle_pedometer.R;
44 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 34 import java.util.ArrayList;
50   -import java.util.Date;
51 35 import java.util.HashMap;
52 36 import java.util.List;
53 37 import java.util.Map;
54 38  
55 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 41 public class RunningFinishFragmetPresenter extends MvpBasePresenter<RunningFinishFragmentView> {
61 42 private LBSTraceClient mClient = null;
62 43 private List<LatLng> importPoints;
... ... @@ -103,7 +84,7 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
103 84 isPause = "1";
104 85 }
105 86 //继续时间
106   - String continueTime = userStepEntity.getContinueTime()+"";
  87 + String continueTime = userStepEntity.getContinueTime() + "";
107 88 //是否完成
108 89 String completeStatus = runningFinishBean.getIsFinish();
109 90 //设置步数
... ... @@ -201,7 +182,14 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
201 182 //查询当前用户的历史轨迹
202 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 194 String entityName = CommonInfo.getUserId(context);
207 195 //打的重要点
... ... @@ -212,71 +200,128 @@ public class RunningFinishFragmetPresenter extends MvpBasePresenter&lt;RunningFinis
212 200 if (mClient == null) {
213 201 mClient = new LBSTraceClient(context);
214 202 }
  203 + List<LatLng> allResults = new ArrayList<>();
215 204 MyMapUtil.queryHistoryTrace(context, mClient, entityName, startTime, endTime, new MyMapUtil.CallBack() {
216 205 @Override
217 206 public void success(List<LatLng> resultPoints) {
218 207 if (resultPoints != null) {
219 208 if (getView() != null) {
  209 + allResults.addAll(resultPoints);
220 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 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 251 else {
244 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  
... ...