Commit 91d9516fe878471ceee9e81ff2549c4c8ac5998c

Authored by 杨帅
1 parent 92bf6c51

1.更改计步相关逻辑

Showing 21 changed files with 607 additions and 260 deletions
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/service/CollStepService.java
@@ -348,9 +348,9 @@ public class CollStepService extends Service implements SensorEventListener { @@ -348,9 +348,9 @@ public class CollStepService extends Service implements SensorEventListener {
348 //开启轨迹服务 348 //开启轨迹服务
349 if (mClient != null) { 349 if (mClient != null) {
350 mClient.startTrace(mTrace, traceListener); 350 mClient.startTrace(mTrace, traceListener);
351 - long stepStartTime = CommonInfo.getStepStartTime(getApplicationContext()); 351 + long stepStartTime = CollCommonInfo.getStepStartTime(getApplicationContext());
352 if (stepStartTime == 0) { 352 if (stepStartTime == 0) {
353 - CommonInfo.setStepStartTime(getApplicationContext(), TimeUtil.getCurrentTime()); 353 + CollCommonInfo.setStepStartTime(getApplicationContext(), TimeUtil.getNowTimeStamp());
354 } 354 }
355 } 355 }
356 356
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/CollRunningMapFragment.java
@@ -15,6 +15,7 @@ import com.cnlive.libs.base.ui.QMUIFragment; @@ -15,6 +15,7 @@ import com.cnlive.libs.base.ui.QMUIFragment;
15 import com.cnlive.libs.base.util.StatusBarUtil2; 15 import com.cnlive.libs.base.util.StatusBarUtil2;
16 import com.cnlive.moudle.collectionTrace.frame.presenter.CollRunningMapFragmentPresenter; 16 import com.cnlive.moudle.collectionTrace.frame.presenter.CollRunningMapFragmentPresenter;
17 import com.cnlive.moudle.collectionTrace.frame.view.CollRunningMapFragmentView; 17 import com.cnlive.moudle.collectionTrace.frame.view.CollRunningMapFragmentView;
  18 +import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo;
18 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 19 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
19 import com.cnlive.moudle.pedometer.model.Constant; 20 import com.cnlive.moudle.pedometer.model.Constant;
20 import com.cnlive.moudle.pedometer.model.MessageEvent; 21 import com.cnlive.moudle.pedometer.model.MessageEvent;
@@ -104,7 +105,7 @@ public class CollRunningMapFragment extends QMUIFragment<CollRunningMapFragmentV @@ -104,7 +105,7 @@ public class CollRunningMapFragment extends QMUIFragment<CollRunningMapFragmentV
104 } 105 }
105 //开始进行历史轨迹查询 106 //开始进行历史轨迹查询
106 if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) { 107 if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) {
107 - long stepStartTime = CommonInfo.getStepStartTime(getActivity()); 108 + long stepStartTime = CollCommonInfo.getStepStartTime(getActivity());
108 Log.e(TAG, "onViewCreated: 时间"+stepStartTime ); 109 Log.e(TAG, "onViewCreated: 时间"+stepStartTime );
109 long startTime = 0; 110 long startTime = 0;
110 if (stepStartTime != 0) { 111 if (stepStartTime != 0) {
@@ -112,7 +113,7 @@ public class CollRunningMapFragment extends QMUIFragment<CollRunningMapFragmentV @@ -112,7 +113,7 @@ public class CollRunningMapFragment extends QMUIFragment<CollRunningMapFragmentV
112 } else { 113 } else {
113 startTime = (int) (System.currentTimeMillis() / 1000 -12 * 60 * 60); 114 startTime = (int) (System.currentTimeMillis() / 1000 -12 * 60 * 60);
114 } 115 }
115 - long current = TimeUtil.getCurrentTime(); 116 + long current = TimeUtil.getNowTimeStamp();
116 // long startTime = current - hour * 3600 * 1000 - minute * 60 * 1000 - second * 1000; 117 // long startTime = current - hour * 3600 * 1000 - minute * 60 * 1000 - second * 1000;
117 long endTime = current; 118 long endTime = current;
118 // Log.e(TAG, "onViewCreated: " + "hour:" + hour + ",minute" + minute + ",second:" + second); 119 // Log.e(TAG, "onViewCreated: " + "hour:" + hour + ",minute" + minute + ",second:" + second);
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/commonInfo/CommonInfo.java
@@ -7,23 +7,23 @@ import com.cnlive.moudle.pedometer.utils.TimeUtil; @@ -7,23 +7,23 @@ import com.cnlive.moudle.pedometer.utils.TimeUtil;
7 7
8 public class CommonInfo { 8 public class CommonInfo {
9 9
10 - /**  
11 - * 设置计步时间  
12 - *  
13 - * @param context  
14 - */  
15 - public static void setStepStartTime(Context context, long currentTime) {  
16 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putLong("stepStartTime", currentTime);  
17 - }  
18 -  
19 - /**  
20 - * 获取计步时间  
21 - *  
22 - * @param context  
23 - */  
24 - public static long getStepStartTime(Context context) {  
25 - return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0);  
26 - } 10 +// /**
  11 +// * 设置计步时间
  12 +// *
  13 +// * @param context
  14 +// */
  15 +// public static void setStepStartTime(Context context, long currentTime) {
  16 +// MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putLong("stepStartTime", currentTime);
  17 +// }
  18 +//
  19 +// /**
  20 +// * 获取计步时间
  21 +// *
  22 +// * @param context
  23 +// */
  24 +// public static long getStepStartTime(Context context) {
  25 +// return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0);
  26 +// }
27 27
28 /** 28 /**
29 * 设置计步完成时间 29 * 设置计步完成时间
@@ -209,8 +209,8 @@ public class CommonInfo { @@ -209,8 +209,8 @@ public class CommonInfo {
209 * 209 *
210 * @param context 210 * @param context
211 */ 211 */
212 - public static void getUserNickName(Context context) {  
213 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("RunUserNickName", ""); 212 + public static String getUserNickName(Context context) {
  213 + return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("RunUserNickName", "");
214 214
215 } 215 }
216 216
@@ -229,28 +229,27 @@ public class CommonInfo { @@ -229,28 +229,27 @@ public class CommonInfo {
229 * 229 *
230 * @param context 230 * @param context
231 */ 231 */
232 - public static void getUserFaceUrl(Context context) {  
233 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("RunUserFaceUrl", ""); 232 + public static String getUserFaceUrl(Context context) {
  233 + return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("RunUserFaceUrl", "");
234 234
235 } 235 }
236 236
  237 +
237 /*重置 238 /*重置
238 * @param context 239 * @param context
239 */ 240 */
240 public static void reset(Context context) { 241 public static void reset(Context context) {
241 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("writeUserStep"); 242 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("writeUserStep");
242 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("stepStartTime");  
243 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runStepService"); 243 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("runStepService");
244 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("stepStartTime");  
245 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("KeepAliveService"); 244 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("KeepAliveService");
246 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("RunBaiduTraceService"); 245 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("RunBaiduTraceService");
247 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("streetId"); 246 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("streetId");
248 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("FirstStepSendTraceTip"); 247 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("FirstStepSendTraceTip");
249 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("FenceId"); 248 MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("FenceId");
250 - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("stepEndTime");  
251 249
252 250
253 } 251 }
254 252
255 253
  254 +
256 } 255 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunMainFragmentView.java
@@ -33,6 +33,7 @@ import com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity; @@ -33,6 +33,7 @@ import com.cnlive.moudle.pedometer.ui.activity.RunningFinishActivity;
33 import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity; 33 import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity;
34 import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment; 34 import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment;
35 import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; 35 import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
  36 +import com.cnlive.moudle.pedometer.ui.widget.TipDialog;
36 import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil; 37 import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil;
37 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 38 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
38 import com.cnlive.moudle.pedometer.utils.MySpHelper; 39 import com.cnlive.moudle.pedometer.utils.MySpHelper;
@@ -115,11 +116,8 @@ public class RunMainFragmentView implements MvpView { @@ -115,11 +116,8 @@ public class RunMainFragmentView implements MvpView {
115 * 初始化相关视图 116 * 初始化相关视图
116 */ 117 */
117 public void initView() { 118 public void initView() {
118 - 119 + uid = CommonInfo.getUserId(getContext());
119 UserStepEntity userStepEntity = StepUtil.getUserStepData(getContext(), uid); 120 UserStepEntity userStepEntity = StepUtil.getUserStepData(getContext(), uid);
120 - if (userStepEntity != null) {  
121 - StepUtil.clearRunData(getContext(), CommonInfo.getUserId(getContext()));  
122 - }  
123 initLocationClient(); 121 initLocationClient();
124 fragment.binding.llRunMainRoot.setVisibility(View.GONE); 122 fragment.binding.llRunMainRoot.setVisibility(View.GONE);
125 ButtonAnimUtil.startAnimation(fragment.binding.llStartTimeTip, false); 123 ButtonAnimUtil.startAnimation(fragment.binding.llStartTimeTip, false);
@@ -180,40 +178,38 @@ public class RunMainFragmentView implements MvpView { @@ -180,40 +178,38 @@ public class RunMainFragmentView implements MvpView {
180 } 178 }
181 }); 179 });
182 180
183 -// boolean isRunStep = CommonInfo.getIsRunStepService(getContext());  
184 //当前用户已经在运动 181 //当前用户已经在运动
185 -// if (!isRunStep) {  
186 - //依次倒计时  
187 - handler.postDelayed(runnable, 1000);  
188 -// } else {  
189 -// //隐藏计时界面  
190 -// fragment.binding.llStartTimeTip.setVisibility(View.GONE);  
191 -// fragment.binding.llRunMainRoot.setVisibility(View.VISIBLE);  
192 -// new Handler().postDelayed(new Runnable() {  
193 -// @Override  
194 -// public void run() {  
195 -// //开始计时  
196 -// if (firstTimeFlag) {  
197 -// firstTimeFlag = false;  
198 -// if (userStepEntity != null) {  
199 -// if ((userStepEntity.getPauseTimeStamp() != 0) && (userStepEntity.getRecordTime() != 0)) {  
200 -// fragment.binding.chronometer.setBase(userStepEntity.getPauseTimeStamp() + (SystemClock.elapsedRealtime() - userStepEntity.getRecordTime()));  
201 -// } else {  
202 -// fragment.binding.chronometer.setFormat("00:00:01");  
203 -// fragment.binding.chronometer.setBase(SystemClock.elapsedRealtime());  
204 -// }  
205 -// //设置步数  
206 -// if (!TextUtils.isEmpty(userStepEntity.getStepCount())) {  
207 -// fragment.binding.tvStepCount.setText(userStepEntity.getStepCount());  
208 -// }  
209 -// }  
210 -// fragment.binding.chronometer.start();  
211 -// }  
212 -// }  
213 -// }, 10);  
214 -// //开启计步服务  
215 -// startStepService(getContext(), uid);  
216 -// } 182 + if (userStepEntity == null) {
  183 + //依次倒计时
  184 + handler.postDelayed(runnable, 1000);
  185 + } else {
  186 + //隐藏计时界面
  187 + fragment.binding.llStartTimeTip.setVisibility(View.GONE);
  188 + fragment.binding.llRunMainRoot.setVisibility(View.VISIBLE);
  189 + new Handler().postDelayed(new Runnable() {
  190 + @Override
  191 + public void run() {
  192 + //开始计时
  193 + if (firstTimeFlag) {
  194 + firstTimeFlag = false;
  195 + if (userStepEntity != null) {
  196 + if ((userStepEntity.getPauseTimeStamp() != 0) && (userStepEntity.getRecordTime() != 0)) {
  197 + fragment.binding.chronometer.setBase(userStepEntity.getPauseTimeStamp() + (SystemClock.elapsedRealtime() - userStepEntity.getRecordTime()));
  198 + } else {
  199 + fragment.binding.chronometer.setFormat("00:00:01");
  200 + fragment.binding.chronometer.setBase(SystemClock.elapsedRealtime());
  201 + }
  202 + //设置步数
  203 + if (!TextUtils.isEmpty(userStepEntity.getStepCount())) {
  204 + fragment.binding.tvStepCount.setText(userStepEntity.getStepCount());
  205 + }
  206 + }
  207 + fragment.binding.chronometer.start();
  208 + }
  209 + }
  210 + }, 10);
  211 +
  212 + }
217 213
218 //设置继续按钮,缩放效果 214 //设置继续按钮,缩放效果
219 fragment.binding.flContinue.setOnTouchListener(new View.OnTouchListener() { 215 fragment.binding.flContinue.setOnTouchListener(new View.OnTouchListener() {
@@ -246,20 +242,19 @@ public class RunMainFragmentView implements MvpView { @@ -246,20 +242,19 @@ public class RunMainFragmentView implements MvpView {
246 StepService.mClient.startTrace(StepService.mTrace, StepService.traceListener); 242 StepService.mClient.startTrace(StepService.mTrace, StepService.traceListener);
247 } 243 }
248 needWriteDataFlag = true; 244 needWriteDataFlag = true;
  245 + //todo 第二阶段使用
249 //将当前计时器时间戳写入数据库 246 //将当前计时器时间戳写入数据库
250 - setSQLPauseTime(uid); 247 + // setSQLPauseTime(uid);
251 //为了点击时可以显示缩放动画,这里延迟一个动画时间进行(包括放大和缩小) 248 //为了点击时可以显示缩放动画,这里延迟一个动画时间进行(包括放大和缩小)
252 handler.postDelayed(new Runnable() { 249 handler.postDelayed(new Runnable() {
253 @Override 250 @Override
254 public void run() { 251 public void run() {
255 - //  
256 //隐藏两个按钮 252 //隐藏两个按钮
257 fragment.binding.flStopTip.setVisibility(View.INVISIBLE); 253 fragment.binding.flStopTip.setVisibility(View.INVISIBLE);
258 fragment.binding.llTwoBottomButton.setVisibility(View.GONE); 254 fragment.binding.llTwoBottomButton.setVisibility(View.GONE);
259 ButtonAnimUtil.setViewShowZoomIn(fragment.binding.llPause); 255 ButtonAnimUtil.setViewShowZoomIn(fragment.binding.llPause);
260 //显示暂停按钮 256 //显示暂停按钮
261 fragment.binding.llPause.setVisibility(View.VISIBLE); 257 fragment.binding.llPause.setVisibility(View.VISIBLE);
262 - //  
263 } 258 }
264 }, ButtonAnimUtil.DEFAULT_ZOOM_DURATION * 2); 259 }, ButtonAnimUtil.DEFAULT_ZOOM_DURATION * 2);
265 //继续计步 260 //继续计步
@@ -269,8 +264,6 @@ public class RunMainFragmentView implements MvpView { @@ -269,8 +264,6 @@ public class RunMainFragmentView implements MvpView {
269 fragment.binding.chronometer.setBase(fragment.binding.chronometer.getBase() + (SystemClock.elapsedRealtime() - mRecordTime)); 264 fragment.binding.chronometer.setBase(fragment.binding.chronometer.getBase() + (SystemClock.elapsedRealtime() - mRecordTime));
270 } 265 }
271 fragment.binding.chronometer.start(); 266 fragment.binding.chronometer.start();
272 -  
273 -  
274 } 267 }
275 }); 268 });
276 //设置停止按钮缩放特效 269 //设置停止按钮缩放特效
@@ -308,17 +301,14 @@ public class RunMainFragmentView implements MvpView { @@ -308,17 +301,14 @@ public class RunMainFragmentView implements MvpView {
308 SelectDialog selectDialog = new SelectDialog(fragment.getActivity(), "确定结束运动吗?", "确定", new SelectDialog.DialogInterface() { 301 SelectDialog selectDialog = new SelectDialog(fragment.getActivity(), "确定结束运动吗?", "确定", new SelectDialog.DialogInterface() {
309 @Override 302 @Override
310 public void onClick(SelectDialog dialog) { 303 public void onClick(SelectDialog dialog) {
311 - CommonInfo.setIsRunKeepAliveService(getContext(), false);  
312 - CommonInfo.setIsWriteUserStep(getContext(), false);  
313 - //设置运动结束时间 304 + //设置状态标志位
  305 + setStopStartFlag();
  306 + //设置运动结束时间戳
  307 + StepUtil.setUserFinishTimeStamp(getContext(), uid);
314 CommonInfo.setStepEndTime(getContext(), TimeUtil.getNowTimeStamp()); 308 CommonInfo.setStepEndTime(getContext(), TimeUtil.getNowTimeStamp());
315 fragment.binding.cpCurrent.setVisibility(View.GONE); 309 fragment.binding.cpCurrent.setVisibility(View.GONE);
316 ButtonAnimUtil.setViewDefault(fragment.binding.flStop); 310 ButtonAnimUtil.setViewDefault(fragment.binding.flStop);
317 dialog.dismiss(); 311 dialog.dismiss();
318 - if (StepService.mClient != null) {  
319 - StepService.mClient.stopGather(StepService.traceListener);  
320 - }  
321 - fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class));  
322 RunningFinishBean runningFinishBean = new RunningFinishBean(); 312 RunningFinishBean runningFinishBean = new RunningFinishBean();
323 runningFinishBean.setStartPoint("开始地点"); 313 runningFinishBean.setStartPoint("开始地点");
324 runningFinishBean.setEndPoint("结束地点"); 314 runningFinishBean.setEndPoint("结束地点");
@@ -396,17 +386,43 @@ public class RunMainFragmentView implements MvpView { @@ -396,17 +386,43 @@ public class RunMainFragmentView implements MvpView {
396 fragment.binding.llPause.setVisibility(View.GONE); 386 fragment.binding.llPause.setVisibility(View.GONE);
397 } 387 }
398 }, ButtonAnimUtil.HIDE_VIEW_ZOOM_DURATION); 388 }, ButtonAnimUtil.HIDE_VIEW_ZOOM_DURATION);
399 - //显示继续按钮  
400 - fragment.binding.llTwoBottomButton.setVisibility(View.VISIBLE);  
401 - ButtonAnimUtil.setViewShowZoomIn(fragment.binding.flContinue);  
402 - ButtonAnimUtil.setViewShowZoomIn(fragment.binding.flStop);  
403 - //停止计时  
404 - fragment.binding.chronometer.stop();  
405 - mRecordTime = SystemClock.elapsedRealtime();  
406 - //暂停计步  
407 - EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_PAUSE, ""));  
408 - //重置速度  
409 -// resetSpeed(); 389 +
  390 + //获取当前用户暂停次数
  391 + int userPauseCount = StepUtil.getUserPauseCount(getContext(), uid);
  392 + if (userPauseCount != -1) {
  393 + if (userPauseCount > 1) {
  394 + //设置停止标志位,关闭相关服务
  395 + setStopStartFlag();
  396 + //清除数据库
  397 + StepUtil.clearRunData(getContext(), CommonInfo.getUserId(getContext()));
  398 + //进行提示
  399 + TipDialog tipDialog = new TipDialog(getContext(), getContext().getString(R.string.more_than_pause_count_tip), "我知道了", R.color.green_round, new TipDialog.DialogInterface() {
  400 + @Override
  401 + public void onClick(TipDialog dialog) {
  402 + //关闭当前对话框
  403 + dialog.dismiss();
  404 + //关闭当前页面
  405 + if (getContext() == null) {
  406 + return;
  407 + }
  408 + fragment.getActivity().finish();
  409 + }
  410 + });
  411 + tipDialog.setCanceledOnTouchOutside(false);
  412 + tipDialog.setCancelable(false);
  413 + tipDialog.show();
  414 +
  415 + }
  416 + //显示继续按钮
  417 + fragment.binding.llTwoBottomButton.setVisibility(View.VISIBLE);
  418 + ButtonAnimUtil.setViewShowZoomIn(fragment.binding.flContinue);
  419 + ButtonAnimUtil.setViewShowZoomIn(fragment.binding.flStop);
  420 + //停止计时
  421 + fragment.binding.chronometer.stop();
  422 + mRecordTime = SystemClock.elapsedRealtime();
  423 + //暂停计步
  424 + EventBus.getDefault().post(new MessageEvent(Constant.SERVICE_STEP_COUNT_PAUSE, ""));
  425 + }
410 } 426 }
411 }); 427 });
412 //gps点击事件 428 //gps点击事件
@@ -431,6 +447,16 @@ public class RunMainFragmentView implements MvpView { @@ -431,6 +447,16 @@ public class RunMainFragmentView implements MvpView {
431 RunningMapActivity.startActivity(fragment.getActivity(), runningMapBean); 447 RunningMapActivity.startActivity(fragment.getActivity(), runningMapBean);
432 } 448 }
433 }); 449 });
  450 + //返回按钮点击事件
  451 + fragment.binding.ivBack.setOnClickListener(new View.OnClickListener() {
  452 + @Override
  453 + public void onClick(View view) {
  454 + if (getContext() == null) {
  455 + return;
  456 + }
  457 + fragment.getActivity().finish();
  458 + }
  459 + });
434 460
435 fragment.binding.rlClose.setOnClickListener(new View.OnClickListener() { 461 fragment.binding.rlClose.setOnClickListener(new View.OnClickListener() {
436 @Override 462 @Override
@@ -450,6 +476,8 @@ public class RunMainFragmentView implements MvpView { @@ -450,6 +476,8 @@ public class RunMainFragmentView implements MvpView {
450 userStepEntity.setPauseTimeStamp(fragment.binding.chronometer.getBase()); 476 userStepEntity.setPauseTimeStamp(fragment.binding.chronometer.getBase());
451 //设置当前暂停的时间戳 477 //设置当前暂停的时间戳
452 userStepEntity.setRecordTime(SystemClock.elapsedRealtime()); 478 userStepEntity.setRecordTime(SystemClock.elapsedRealtime());
  479 + //设置暂停次数
  480 + userStepEntity.setPauseCount(userStepEntity.getPauseCount() + 1);
453 //更新数据 481 //更新数据
454 StepUtil.updateStepData(fragment.getActivity(), userStepEntity); 482 StepUtil.updateStepData(fragment.getActivity(), userStepEntity);
455 } 483 }
@@ -457,6 +485,20 @@ public class RunMainFragmentView implements MvpView { @@ -457,6 +485,20 @@ public class RunMainFragmentView implements MvpView {
457 } 485 }
458 } 486 }
459 487
  488 + public void setFragmentPauseTime(String id) {
  489 + if (!TextUtils.isEmpty(id)) {
  490 + UserStepEntity userStepEntity = StepUtil.getUserStepData(fragment.getActivity(), uid);
  491 + if (userStepEntity != null) {
  492 + userStepEntity.setPauseTimeStamp(fragment.binding.chronometer.getBase());
  493 + userStepEntity.setRecordTime(SystemClock.elapsedRealtime());
  494 + //设置当前暂停的时间戳
  495 + userStepEntity.setUserPauseTimeStamp(TimeUtil.getNowTimeStamp());
  496 + //更新数据
  497 + StepUtil.updateStepData(fragment.getActivity(), userStepEntity);
  498 + }
  499 + }
  500 + }
  501 +
460 502
461 /** 503 /**
462 * 更新行走距离 504 * 更新行走距离
@@ -551,6 +593,20 @@ public class RunMainFragmentView implements MvpView { @@ -551,6 +593,20 @@ public class RunMainFragmentView implements MvpView {
551 } 593 }
552 } 594 }
553 } 595 }
  596 +
  597 + }
  598 +
  599 + /**
  600 + * 设置停止状态标志位
  601 + */
  602 + private void setStopStartFlag() {
  603 + CommonInfo.setTsRunBaiduTraceService(getContext(), false);
  604 + CommonInfo.setIsRunKeepAliveService(getContext(), false);
  605 + CommonInfo.setIsWriteUserStep(getContext(), false);
  606 + if (StepService.mClient != null) {
  607 + StepService.mClient.stopGather(StepService.traceListener);
  608 + }
  609 + fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class));
554 } 610 }
555 611
556 public void onDestroy() { 612 public void onDestroy() {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
@@ -50,17 +50,22 @@ import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo; @@ -50,17 +50,22 @@ import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo;
50 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 50 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
51 import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo; 51 import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo;
52 import com.cnlive.moudle.pedometer.service.KeepLiveService; 52 import com.cnlive.moudle.pedometer.service.KeepLiveService;
  53 +import com.cnlive.moudle.pedometer.service.StepService;
  54 +import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
53 import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity; 55 import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity;
54 import com.cnlive.moudle.pedometer.ui.activity.RaceRecordActivity; 56 import com.cnlive.moudle.pedometer.ui.activity.RaceRecordActivity;
55 import com.cnlive.moudle.pedometer.ui.activity.RegistrationInfoActivity; 57 import com.cnlive.moudle.pedometer.ui.activity.RegistrationInfoActivity;
56 import com.cnlive.moudle.pedometer.ui.activity.TakePartActivity; 58 import com.cnlive.moudle.pedometer.ui.activity.TakePartActivity;
57 import com.cnlive.moudle.pedometer.ui.fragment.RunRaceDetailFragment; 59 import com.cnlive.moudle.pedometer.ui.fragment.RunRaceDetailFragment;
  60 +import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
58 import com.cnlive.moudle.pedometer.ui.widget.TipDialog; 61 import com.cnlive.moudle.pedometer.ui.widget.TipDialog;
59 import com.cnlive.moudle.pedometer.utils.BitmapUtil; 62 import com.cnlive.moudle.pedometer.utils.BitmapUtil;
60 import com.cnlive.moudle.pedometer.utils.GsonUtil; 63 import com.cnlive.moudle.pedometer.utils.GsonUtil;
61 import com.cnlive.moudle.pedometer.utils.MyMapUtil; 64 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
62 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil; 65 import com.cnlive.moudle.pedometer.utils.QMUITipDialogUtil;
63 import com.cnlive.moudle.pedometer.utils.ScreenUtil; 66 import com.cnlive.moudle.pedometer.utils.ScreenUtil;
  67 +import com.cnlive.moudle.pedometer.utils.ServiceUtils;
  68 +import com.cnlive.moudle.pedometer.utils.StepUtil;
64 import com.cnlive.moudle.pedometer.utils.TimeUtil; 69 import com.cnlive.moudle.pedometer.utils.TimeUtil;
65 import com.cnlive.strike.application.GlideApp; 70 import com.cnlive.strike.application.GlideApp;
66 import com.example.moudle_pedometer.R; 71 import com.example.moudle_pedometer.R;
@@ -111,6 +116,8 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -111,6 +116,8 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
111 private LatLng startLatLng = new LatLng(39.934733, 116.308646);//起始点 116 private LatLng startLatLng = new LatLng(39.934733, 116.308646);//起始点
112 private List<LatLng> trackPoints; 117 private List<LatLng> trackPoints;
113 private RunRaceDetailInfo runRaceDetailInfo; 118 private RunRaceDetailInfo runRaceDetailInfo;
  119 + private UserStepEntity userStepEntity;
  120 + private boolean isDifferentStreet = false;
114 121
115 public RunRaceDetailFragmentView(RunRaceDetailFragment fragment) { 122 public RunRaceDetailFragmentView(RunRaceDetailFragment fragment) {
116 this.fragment = fragment; 123 this.fragment = fragment;
@@ -313,6 +320,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -313,6 +320,7 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
313 fragment.binding.rlScrollViewStartBtn.setTag("1"); 320 fragment.binding.rlScrollViewStartBtn.setTag("1");
314 fragment.binding.tvRunNow.setText("现在开始"); 321 fragment.binding.tvRunNow.setText("现在开始");
315 fragment.binding.tvGoTip.setVisibility(View.VISIBLE); 322 fragment.binding.tvGoTip.setVisibility(View.VISIBLE);
  323 + checkStartBtnState();
316 } else { 324 } else {
317 fragment.binding.rlScrollViewStartBtn.setTag("0"); 325 fragment.binding.rlScrollViewStartBtn.setTag("0");
318 fragment.binding.tvRunNow.setText("立即报名"); 326 fragment.binding.tvRunNow.setText("立即报名");
@@ -373,9 +381,44 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -373,9 +381,44 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
373 //立即报名 381 //立即报名
374 if ("0".equals(fragment.binding.rlScrollViewStartBtn.getTag())) { 382 if ("0".equals(fragment.binding.rlScrollViewStartBtn.getTag())) {
375 RegistrationInfoActivity.newInstance(fragment.getActivity()); 383 RegistrationInfoActivity.newInstance(fragment.getActivity());
376 - } else { 384 + }
  385 + //现在开始
  386 + else if ("1".equals(fragment.binding.rlScrollViewStartBtn.getTag())) {
377 startStepService(getContext()); 387 startStepService(getContext());
378 } 388 }
  389 + //继续运动
  390 + else if ("2".equals(fragment.binding.rlScrollViewStartBtn.getTag())) {
  391 + if (!isDifferentStreet) {
  392 + checkBaiduServiceState();
  393 + }
  394 +
  395 + //赛事id不同
  396 + else {
  397 + SelectDialog selectDialog = new SelectDialog(getContext(), "您正在进行另一赛事,是否回到当前进行赛事?", "否", new SelectDialog.DialogInterface() {
  398 + @Override
  399 + public void onClick(SelectDialog dialog) {
  400 + dialog.dismiss();
  401 + //清空上次保存数据
  402 + StepUtil.clearRunData(getContext(), CommonInfo.getUserId(getContext()));
  403 + //停止服务
  404 + stopStepService();
  405 + //更改当前按钮
  406 + fragment.binding.tvRunNow.setText("立即开始");
  407 + fragment.binding.rlScrollViewStartBtn.setTag("1");
  408 +
  409 + }
  410 + }, "是", new SelectDialog.DialogInterface() {
  411 + @Override
  412 + public void onClick(SelectDialog dialog) {
  413 + dialog.dismiss();
  414 + checkBaiduServiceState();
  415 + }
  416 + });
  417 + selectDialog.setCanceledOnTouchOutside(false);
  418 + selectDialog.setCancelable(false);
  419 + selectDialog.show();
  420 + }
  421 + }
379 } 422 }
380 }); 423 });
381 //查看全部成绩点击事件 424 //查看全部成绩点击事件
@@ -405,6 +448,32 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -405,6 +448,32 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
405 }); 448 });
406 } 449 }
407 450
  451 + private void checkBaiduServiceState() {
  452 + boolean isRunBaidu = CommonInfo.getIsRunBaiduTraceService(getContext());
  453 + if (isRunBaidu) {
  454 + //判断百度服务是否运行
  455 + if (!ServiceUtils.isServiceRunning(getContext(), "com.baidu.trace.LBSTraceService")) {
  456 + stopStepService();
  457 + startStepService(getContext());
  458 + } else {
  459 + PedometerMainActivity.startActivity(fragment.getActivity());
  460 + }
  461 + } else {
  462 + PedometerMainActivity.startActivity(fragment.getActivity());
  463 + }
  464 + }
  465 +
  466 + private void stopStepService() {
  467 + CommonInfo.setTsRunBaiduTraceService(getContext(), false);
  468 + CommonInfo.setIsRunKeepAliveService(getContext(), false);
  469 + CommonInfo.setIsWriteUserStep(getContext(), false);
  470 + CommonInfo.setIsFirstStepSendTraceTip(getContext(), true);
  471 + if (StepService.mClient != null) {
  472 + StepService.mClient.stopGather(StepService.traceListener);
  473 + }
  474 + fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class));
  475 + }
  476 +
408 public void initMap() { 477 public void initMap() {
409 //隐藏底部滑动卡片 478 //隐藏底部滑动卡片
410 fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN); 479 fragment.binding.slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.HIDDEN);
@@ -717,9 +786,50 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -717,9 +786,50 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
717 } 786 }
718 787
719 public void onResume() { 788 public void onResume() {
  789 + if (getContext() == null) {
  790 + return;
  791 + }
720 if (mMapView != null) { 792 if (mMapView != null) {
721 mMapView.onResume(); 793 mMapView.onResume();
722 } 794 }
  795 +
  796 + }
  797 +
  798 + public void checkStartBtnState() {
  799 + //判断是否有进行中的赛事
  800 + userStepEntity = StepUtil.getUserStepData(getContext(), CommonInfo.getUserId(getContext()));
  801 + Log.e(TAG, "checkStartBtnState: " + userStepEntity);
  802 + if (userStepEntity != null) {
  803 + //判断赛事id是否一致
  804 + String currentStreetId = CommonInfo.getStreetId(getContext());
  805 + //数据库保存的id
  806 + String dbStreetId = userStepEntity.getStreetId();
  807 + //获取当前时间戳
  808 + long currnetTime = TimeUtil.getNowTimeStamp();
  809 + //获取用户暂停的时间戳
  810 + long userPauseTime = userStepEntity.getUserPauseTimeStamp();
  811 + //判断时间是否小于9小时
  812 + if ((currnetTime - userPauseTime) <= (9 * 60 * 60 * 1000)) {
  813 + fragment.binding.tvRunNow.setText("继续运动");
  814 + fragment.binding.rlScrollViewStartBtn.setTag("2");
  815 + } else {
  816 + fragment.binding.tvRunNow.setText("立即开始");
  817 + fragment.binding.rlScrollViewStartBtn.setTag("1");
  818 + }
  819 +
  820 + if (currentStreetId.equals(dbStreetId)) {
  821 + isDifferentStreet = false;
  822 + }
  823 + //当前id与赛事id不一样
  824 + else {
  825 + isDifferentStreet = true;
  826 + }
  827 +
  828 + } else {
  829 + fragment.binding.tvRunNow.setText("立即开始");
  830 + fragment.binding.rlScrollViewStartBtn.setTag("1");
  831 + }
  832 +
723 } 833 }
724 834
725 public void onPause() { 835 public void onPause() {
@@ -862,9 +972,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -862,9 +972,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
862 public void startStepService(Context context) { 972 public void startStepService(Context context) {
863 CommonInfo.setIsFirstStepSendTraceTip(getContext(), true); 973 CommonInfo.setIsFirstStepSendTraceTip(getContext(), true);
864 QMUITipDialogUtil.loadingDialog(getContext(), "请稍后", false); 974 QMUITipDialogUtil.loadingDialog(getContext(), "请稍后", false);
865 - if (CommonInfo.getStepStartTime(context) == 0) {  
866 - CommonInfo.setStepStartTime(context, TimeUtil.getNowTimeStamp());  
867 - }  
868 CommonInfo.setIsRunKeepAliveService(context, true); 975 CommonInfo.setIsRunKeepAliveService(context, true);
869 CommonInfo.setIsRunStepService(context, true); 976 CommonInfo.setIsRunStepService(context, true);
870 CommonInfo.setTsRunBaiduTraceService(context, true); 977 CommonInfo.setTsRunBaiduTraceService(context, true);
@@ -883,4 +990,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener { @@ -883,4 +990,6 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
883 fragment.binding.tvRunNow.setText("现在开始"); 990 fragment.binding.tvRunNow.setText("现在开始");
884 fragment.binding.tvGoTip.setVisibility(View.VISIBLE); 991 fragment.binding.tvGoTip.setVisibility(View.VISIBLE);
885 } 992 }
  993 +
  994 +
886 } 995 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningFinishFragmentView.java
1 package com.cnlive.moudle.pedometer.frame.view; 1 package com.cnlive.moudle.pedometer.frame.view;
2 2
3 import android.content.Context; 3 import android.content.Context;
  4 +import android.text.TextUtils;
  5 +import android.util.Log;
4 import android.view.View; 6 import android.view.View;
5 7
  8 +import com.bumptech.glide.Glide;
  9 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
6 import com.cnlive.moudle.pedometer.model.RunningFinishBean; 10 import com.cnlive.moudle.pedometer.model.RunningFinishBean;
7 import com.cnlive.moudle.pedometer.ui.fragment.RunningFinishFragment; 11 import com.cnlive.moudle.pedometer.ui.fragment.RunningFinishFragment;
8 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment; 12 import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment;
9 import com.hannesdorfmann.mosby3.mvp.MvpView; 13 import com.hannesdorfmann.mosby3.mvp.MvpView;
10 14
  15 +
11 public class RunningFinishFragmentView implements MvpView { 16 public class RunningFinishFragmentView implements MvpView {
  17 + private final String TAG = "RunningFinishView";
12 private RunningFinishFragment fragment; 18 private RunningFinishFragment fragment;
13 19
14 public RunningFinishFragmentView(RunningFinishFragment fragment) { 20 public RunningFinishFragmentView(RunningFinishFragment fragment) {
@@ -20,16 +26,34 @@ public class RunningFinishFragmentView implements MvpView { @@ -20,16 +26,34 @@ public class RunningFinishFragmentView implements MvpView {
20 } 26 }
21 27
22 public void initView(RunningFinishBean runningFinishBean) { 28 public void initView(RunningFinishBean runningFinishBean) {
  29 + //设置用户头像
  30 + String faceUrl = CommonInfo.getUserFaceUrl(getContext());
  31 + if (!TextUtils.isEmpty(faceUrl)) {
  32 + Glide.with(getContext()).load(faceUrl).into(fragment.binding.includeFinishUserInfo.qmIvIcon);
  33 + }
  34 + //设置用户昵称
  35 + String nickName = CommonInfo.getUserNickName(getContext());
  36 + if (!TextUtils.isEmpty(nickName)) {
  37 + fragment.binding.includeFinishUserInfo.tvUserNickName.setText(nickName);
  38 + }
23 //设置距离 39 //设置距离
24 fragment.binding.includeFinishUserInfo.tvDistance.setText(runningFinishBean.getRunDistance()); 40 fragment.binding.includeFinishUserInfo.tvDistance.setText(runningFinishBean.getRunDistance());
25 //设置配速 41 //设置配速
26 - fragment.binding.includeFinishUserInfo.tvSpeed.setText(runningFinishBean.getSpeed()); 42 + if ("--".equals(runningFinishBean.getSpeed())) {
  43 + fragment.binding.includeFinishUserInfo.tvSpeed.setText("0");
  44 + } else {
  45 + fragment.binding.includeFinishUserInfo.tvSpeed.setText(runningFinishBean.getSpeed());
  46 + }
27 //设置用时 47 //设置用时
28 fragment.binding.includeFinishUserInfo.tvTimer.setText(runningFinishBean.getTime()); 48 fragment.binding.includeFinishUserInfo.tvTimer.setText(runningFinishBean.getTime());
29 //设置日期 49 //设置日期
30 fragment.binding.includeFinishUserInfo.tvDate.setText(runningFinishBean.getDate()); 50 fragment.binding.includeFinishUserInfo.tvDate.setText(runningFinishBean.getDate());
31 //设置步数 51 //设置步数
32 - fragment.binding.includeFinishStep.tvStep.setText(runningFinishBean.getStep()); 52 + if ("--".equals(runningFinishBean.getStep())) {
  53 + fragment.binding.includeFinishStep.tvStep.setText("0");
  54 + } else {
  55 + fragment.binding.includeFinishStep.tvStep.setText(runningFinishBean.getStep());
  56 + }
33 //设置起点位置 57 //设置起点位置
34 fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint()); 58 fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint());
35 //设置终点位置 59 //设置终点位置
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningMapFragmentView.java
@@ -48,7 +48,7 @@ import java.util.HashMap; @@ -48,7 +48,7 @@ import java.util.HashMap;
48 import java.util.List; 48 import java.util.List;
49 49
50 public class RunningMapFragmentView implements MvpView, SensorEventListener { 50 public class RunningMapFragmentView implements MvpView, SensorEventListener {
51 - private static final String TAG = "CollRunningMapFragmentView"; 51 + private static final String TAG = "RunningMapFragmentView";
52 private RunningMapFragment fragment; 52 private RunningMapFragment fragment;
53 public BaiduMap baiduMap; 53 public BaiduMap baiduMap;
54 private MapView mMapView; 54 private MapView mMapView;
@@ -180,7 +180,6 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener { @@ -180,7 +180,6 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
180 fragment.binding.flBack.setOnTouchListener(new View.OnTouchListener() { 180 fragment.binding.flBack.setOnTouchListener(new View.OnTouchListener() {
181 @Override 181 @Override
182 public boolean onTouch(View view, MotionEvent motionEvent) { 182 public boolean onTouch(View view, MotionEvent motionEvent) {
183 - Log.e(TAG, "onTouch: " + motionEvent.getAction());  
184 if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 183 if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
185 ButtonAnimUtil.setViewZoomIn(fragment.binding.flBack); 184 ButtonAnimUtil.setViewZoomIn(fragment.binding.flBack);
186 } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 185 } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/KeepLiveService.java
@@ -44,7 +44,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion @@ -44,7 +44,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion
44 public static boolean isKeepService = true; 44 public static boolean isKeepService = true;
45 public static KeepLiveService instance; 45 public static KeepLiveService instance;
46 private int startId; 46 private int startId;
47 - private final String TAG = "CollKeepLiveService"; 47 + private final String TAG = "KeepLiveService";
48 private Handler handler; 48 private Handler handler;
49 private Runnable runnable; 49 private Runnable runnable;
50 50
@@ -108,7 +108,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion @@ -108,7 +108,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion
108 // intentFilter.addAction(Intent.ACTION_TIME_CHANGED); 108 // intentFilter.addAction(Intent.ACTION_TIME_CHANGED);
109 // intentFilter.addAction(Intent.ACTION_POWER_CONNECTED); 109 // intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
110 // intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED); 110 // intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
111 - intentFilter.addAction("com.cnlive.strike.receiver.CollServiceReceiver"); 111 + intentFilter.addAction("com.cnlive.strike.receiver.ServiceReceiver");
112 intentFilter.addAction("close.KeepService"); 112 intentFilter.addAction("close.KeepService");
113 registerReceiver(myReceiver, intentFilter); 113 registerReceiver(myReceiver, intentFilter);
114 } 114 }
@@ -136,7 +136,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion @@ -136,7 +136,7 @@ public class KeepLiveService extends Service implements MediaPlayer.OnCompletion
136 //判断是否运行计步服务 136 //判断是否运行计步服务
137 boolean isRunStepService = CommonInfo.getIsRunStepService(getApplicationContext()); 137 boolean isRunStepService = CommonInfo.getIsRunStepService(getApplicationContext());
138 if (isRunStepService) { 138 if (isRunStepService) {
139 - if (!ServiceUtils.isServiceRunning(getApplicationContext(), "com.cnlive.moudle.pedometer.service.CollStepService")) { 139 + if (!ServiceUtils.isServiceRunning(getApplicationContext(), "com.cnlive.moudle.pedometer.service.StepService")) {
140 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 140 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
141 startForegroundService(new Intent(getApplicationContext(), StepService.class)); 141 startForegroundService(new Intent(getApplicationContext(), StepService.class));
142 } else { 142 } else {
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/StepService.java
@@ -37,18 +37,16 @@ import com.baidu.trace.model.LocationMode; @@ -37,18 +37,16 @@ import com.baidu.trace.model.LocationMode;
37 import com.baidu.trace.model.OnTraceListener; 37 import com.baidu.trace.model.OnTraceListener;
38 import com.baidu.trace.model.PushMessage; 38 import com.baidu.trace.model.PushMessage;
39 import com.baidu.trace.model.StatusCodes; 39 import com.baidu.trace.model.StatusCodes;
40 -import com.cnlive.moudle.pedometer.commonInfo.CollCommonInfo;  
41 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; 40 import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
42 import com.cnlive.moudle.pedometer.model.Constant; 41 import com.cnlive.moudle.pedometer.model.Constant;
43 import com.cnlive.moudle.pedometer.model.MessageEvent; 42 import com.cnlive.moudle.pedometer.model.MessageEvent;
44 import com.cnlive.moudle.pedometer.model.step.StepCount; 43 import com.cnlive.moudle.pedometer.model.step.StepCount;
45 import com.cnlive.moudle.pedometer.model.step.StepValuePassListener; 44 import com.cnlive.moudle.pedometer.model.step.StepValuePassListener;
46 -import com.cnlive.moudle.pedometer.sql.dao.UserStepEntityDao;  
47 import com.cnlive.moudle.pedometer.sql.db.DbCore; 45 import com.cnlive.moudle.pedometer.sql.db.DbCore;
48 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; 46 import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity;
49 import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity; 47 import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity;
50 -import com.cnlive.moudle.pedometer.utils.MySpHelper;  
51 import com.cnlive.moudle.pedometer.utils.ServiceUtils; 48 import com.cnlive.moudle.pedometer.utils.ServiceUtils;
  49 +import com.cnlive.moudle.pedometer.utils.StepUtil;
52 import com.cnlive.moudle.pedometer.utils.TimeUtil; 50 import com.cnlive.moudle.pedometer.utils.TimeUtil;
53 import com.example.moudle_pedometer.R; 51 import com.example.moudle_pedometer.R;
54 52
@@ -58,15 +56,11 @@ import org.greenrobot.eventbus.ThreadMode; @@ -58,15 +56,11 @@ import org.greenrobot.eventbus.ThreadMode;
58 56
59 import java.text.SimpleDateFormat; 57 import java.text.SimpleDateFormat;
60 import java.util.Date; 58 import java.util.Date;
61 -import java.util.List;  
62 -import java.util.UUID;  
63 59
64 60
65 public class StepService extends Service implements SensorEventListener { 61 public class StepService extends Service implements SensorEventListener {
66 62
67 - private String TAG = "CollStepService";  
68 - public static boolean isKeep = true;  
69 - 63 + private String TAG = "StepService";
70 /** 64 /**
71 * 通知栏相关 65 * 通知栏相关
72 */ 66 */
@@ -353,9 +347,10 @@ public class StepService extends Service implements SensorEventListener { @@ -353,9 +347,10 @@ public class StepService extends Service implements SensorEventListener {
353 //开启轨迹服务 347 //开启轨迹服务
354 if (mClient != null) { 348 if (mClient != null) {
355 mClient.startTrace(mTrace, traceListener); 349 mClient.startTrace(mTrace, traceListener);
356 - long stepStartTime = CommonInfo.getStepStartTime(getApplicationContext());  
357 - if (stepStartTime == 0) {  
358 - CommonInfo.setStepStartTime(getApplicationContext(), TimeUtil.getCurrentTime()); 350 + //设置用户开始时间以及赛事ID
  351 + UserStepEntity userStepEntity = StepUtil.getUserStepData(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()));
  352 + if (userStepEntity == null) {
  353 + StepUtil.setStepStartData(getApplicationContext(), userId, TimeUtil.getNowTimeStamp(), CommonInfo.getStreetId(getApplicationContext()));
359 } 354 }
360 } 355 }
361 356
@@ -548,17 +543,13 @@ public class StepService extends Service implements SensorEventListener { @@ -548,17 +543,13 @@ public class StepService extends Service implements SensorEventListener {
548 return; 543 return;
549 } 544 }
550 //获取当天的数据,用于展示 CURRENT_DATE 545 //获取当天的数据,用于展示 CURRENT_DATE
551 - List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(userId), UserStepEntityDao.Properties.Date.eq(CURRENT_DATE)).list();  
552 - if (list == null) {  
553 - return;  
554 - }  
555 - if (list.size() == 0 || list.isEmpty()) { 546 + UserStepEntity userStepEntity = StepUtil.getUserStepData(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()));
  547 + if (userStepEntity == null) {
556 CURRENT_STEP = 0; 548 CURRENT_STEP = 0;
557 - } else if (list.size() == 1) {  
558 - Log.e(TAG, "StepData=" + list.get(0).toString());  
559 - CURRENT_STEP = Integer.parseInt(list.get(0).getStepCount());  
560 } else { 549 } else {
561 - Log.e(TAG, "出错了!"); 550 + if (userStepEntity.getStepCount() != null) {
  551 + CURRENT_STEP = Integer.parseInt(userStepEntity.getStepCount());
  552 + }
562 } 553 }
563 if (mStepCount != null) { 554 if (mStepCount != null) {
564 mStepCount.setSteps(CURRENT_STEP); 555 mStepCount.setSteps(CURRENT_STEP);
@@ -915,19 +906,16 @@ public class StepService extends Service implements SensorEventListener { @@ -915,19 +906,16 @@ public class StepService extends Service implements SensorEventListener {
915 return; 906 return;
916 } 907 }
917 int tempStep = CURRENT_STEP; 908 int tempStep = CURRENT_STEP;
918 - List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(userId), UserStepEntityDao.Properties.Date.eq(CURRENT_DATE)).list();  
919 - if (list.size() == 0 || list.isEmpty()) { 909 + UserStepEntity userStepEntity = StepUtil.getUserStepData(getApplicationContext(), CommonInfo.getUserId(getApplicationContext()));
  910 + if (userStepEntity == null) {
920 UserStepEntity data = new UserStepEntity(); 911 UserStepEntity data = new UserStepEntity();
921 - data.setUuid(UUID.randomUUID().toString());  
922 data.setUserId(userId); 912 data.setUserId(userId);
923 data.setDate(CURRENT_DATE); 913 data.setDate(CURRENT_DATE);
924 data.setStepCount(tempStep + ""); 914 data.setStepCount(tempStep + "");
925 - DbCore.getDaoSession().getUserStepEntityDao().insert(data);  
926 - } else if (list.size() == 1) {  
927 - UserStepEntity data = list.get(0);  
928 - data.setStepCount(tempStep + "");  
929 - DbCore.getDaoSession().getUserStepEntityDao().update(data); 915 + StepUtil.insertStepData(getApplicationContext(), data);
930 } else { 916 } else {
  917 + userStepEntity.setStepCount(tempStep + "");
  918 + StepUtil.updateStepData(getApplicationContext(), userStepEntity);
931 } 919 }
932 } 920 }
933 921
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/dao/UserStepEntityDao.java
@@ -24,14 +24,20 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; { @@ -24,14 +24,20 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; {
24 * Can be used for QueryBuilder and for referencing column names. 24 * Can be used for QueryBuilder and for referencing column names.
25 */ 25 */
26 public static class Properties { 26 public static class Properties {
27 - public final static Property Uuid = new Property(0, String.class, "uuid", true, "UUID");  
28 - public final static Property UserId = new Property(1, String.class, "userId", false, "USER_ID");  
29 - public final static Property Date = new Property(2, String.class, "date", false, "DATE");  
30 - public final static Property StepCount = new Property(3, String.class, "stepCount", false, "STEP_COUNT");  
31 - public final static Property PauseTimeStamp = new Property(4, long.class, "pauseTimeStamp", false, "PAUSE_TIME_STAMP");  
32 - public final static Property RecordTime = new Property(5, long.class, "recordTime", false, "RECORD_TIME");  
33 - public final static Property CaloriesCount = new Property(6, double.class, "caloriesCount", false, "CALORIES_COUNT");  
34 - public final static Property ServerTraceData = new Property(7, String.class, "serverTraceData", false, "SERVER_TRACE_DATA"); 27 + public final static Property UserId = new Property(0, String.class, "userId", true, "USER_ID");
  28 + public final static Property Date = new Property(1, String.class, "date", false, "DATE");
  29 + public final static Property StepCount = new Property(2, String.class, "stepCount", false, "STEP_COUNT");
  30 + public final static Property PauseTimeStamp = new Property(3, long.class, "pauseTimeStamp", false, "PAUSE_TIME_STAMP");
  31 + public final static Property RecordTime = new Property(4, long.class, "recordTime", false, "RECORD_TIME");
  32 + public final static Property CaloriesCount = new Property(5, double.class, "caloriesCount", false, "CALORIES_COUNT");
  33 + public final static Property ServerTraceData = new Property(6, String.class, "serverTraceData", false, "SERVER_TRACE_DATA");
  34 + public final static Property StartPoint = new Property(7, String.class, "startPoint", false, "START_POINT");
  35 + public final static Property EndPoint = new Property(8, String.class, "endPoint", false, "END_POINT");
  36 + public final static Property StartTimeStamp = new Property(9, long.class, "startTimeStamp", false, "START_TIME_STAMP");
  37 + public final static Property FinishTimeStamp = new Property(10, long.class, "finishTimeStamp", false, "FINISH_TIME_STAMP");
  38 + public final static Property StreetId = new Property(11, String.class, "streetId", false, "STREET_ID");
  39 + public final static Property PauseCount = new Property(12, int.class, "pauseCount", false, "PAUSE_COUNT");
  40 + public final static Property UserPauseTimeStamp = new Property(13, long.class, "userPauseTimeStamp", false, "USER_PAUSE_TIME_STAMP");
35 } 41 }
36 42
37 43
@@ -47,14 +53,20 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; { @@ -47,14 +53,20 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; {
47 public static void createTable(Database db, boolean ifNotExists) { 53 public static void createTable(Database db, boolean ifNotExists) {
48 String constraint = ifNotExists? "IF NOT EXISTS ": ""; 54 String constraint = ifNotExists? "IF NOT EXISTS ": "";
49 db.execSQL("CREATE TABLE " + constraint + "\"USER_STEP_ENTITY\" (" + // 55 db.execSQL("CREATE TABLE " + constraint + "\"USER_STEP_ENTITY\" (" + //
50 - "\"UUID\" TEXT PRIMARY KEY NOT NULL ," + // 0: uuid  
51 - "\"USER_ID\" TEXT," + // 1: userId  
52 - "\"DATE\" TEXT," + // 2: date  
53 - "\"STEP_COUNT\" TEXT," + // 3: stepCount  
54 - "\"PAUSE_TIME_STAMP\" INTEGER NOT NULL ," + // 4: pauseTimeStamp  
55 - "\"RECORD_TIME\" INTEGER NOT NULL ," + // 5: recordTime  
56 - "\"CALORIES_COUNT\" REAL NOT NULL ," + // 6: caloriesCount  
57 - "\"SERVER_TRACE_DATA\" TEXT);"); // 7: serverTraceData 56 + "\"USER_ID\" TEXT PRIMARY KEY NOT NULL ," + // 0: userId
  57 + "\"DATE\" TEXT," + // 1: date
  58 + "\"STEP_COUNT\" TEXT," + // 2: stepCount
  59 + "\"PAUSE_TIME_STAMP\" INTEGER NOT NULL ," + // 3: pauseTimeStamp
  60 + "\"RECORD_TIME\" INTEGER NOT NULL ," + // 4: recordTime
  61 + "\"CALORIES_COUNT\" REAL NOT NULL ," + // 5: caloriesCount
  62 + "\"SERVER_TRACE_DATA\" TEXT," + // 6: serverTraceData
  63 + "\"START_POINT\" TEXT," + // 7: startPoint
  64 + "\"END_POINT\" TEXT," + // 8: endPoint
  65 + "\"START_TIME_STAMP\" INTEGER NOT NULL ," + // 9: startTimeStamp
  66 + "\"FINISH_TIME_STAMP\" INTEGER NOT NULL ," + // 10: finishTimeStamp
  67 + "\"STREET_ID\" TEXT," + // 11: streetId
  68 + "\"PAUSE_COUNT\" INTEGER NOT NULL ," + // 12: pauseCount
  69 + "\"USER_PAUSE_TIME_STAMP\" INTEGER NOT NULL );"); // 13: userPauseTimeStamp
58 } 70 }
59 71
60 /** Drops the underlying database table. */ 72 /** Drops the underlying database table. */
@@ -67,66 +79,94 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; { @@ -67,66 +79,94 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; {
67 protected final void bindValues(DatabaseStatement stmt, UserStepEntity entity) { 79 protected final void bindValues(DatabaseStatement stmt, UserStepEntity entity) {
68 stmt.clearBindings(); 80 stmt.clearBindings();
69 81
70 - String uuid = entity.getUuid();  
71 - if (uuid != null) {  
72 - stmt.bindString(1, uuid);  
73 - }  
74 -  
75 String userId = entity.getUserId(); 82 String userId = entity.getUserId();
76 if (userId != null) { 83 if (userId != null) {
77 - stmt.bindString(2, userId); 84 + stmt.bindString(1, userId);
78 } 85 }
79 86
80 String date = entity.getDate(); 87 String date = entity.getDate();
81 if (date != null) { 88 if (date != null) {
82 - stmt.bindString(3, date); 89 + stmt.bindString(2, date);
83 } 90 }
84 91
85 String stepCount = entity.getStepCount(); 92 String stepCount = entity.getStepCount();
86 if (stepCount != null) { 93 if (stepCount != null) {
87 - stmt.bindString(4, stepCount); 94 + stmt.bindString(3, stepCount);
88 } 95 }
89 - stmt.bindLong(5, entity.getPauseTimeStamp());  
90 - stmt.bindLong(6, entity.getRecordTime());  
91 - stmt.bindDouble(7, entity.getCaloriesCount()); 96 + stmt.bindLong(4, entity.getPauseTimeStamp());
  97 + stmt.bindLong(5, entity.getRecordTime());
  98 + stmt.bindDouble(6, entity.getCaloriesCount());
92 99
93 String serverTraceData = entity.getServerTraceData(); 100 String serverTraceData = entity.getServerTraceData();
94 if (serverTraceData != null) { 101 if (serverTraceData != null) {
95 - stmt.bindString(8, serverTraceData); 102 + stmt.bindString(7, serverTraceData);
  103 + }
  104 +
  105 + String startPoint = entity.getStartPoint();
  106 + if (startPoint != null) {
  107 + stmt.bindString(8, startPoint);
  108 + }
  109 +
  110 + String endPoint = entity.getEndPoint();
  111 + if (endPoint != null) {
  112 + stmt.bindString(9, endPoint);
  113 + }
  114 + stmt.bindLong(10, entity.getStartTimeStamp());
  115 + stmt.bindLong(11, entity.getFinishTimeStamp());
  116 +
  117 + String streetId = entity.getStreetId();
  118 + if (streetId != null) {
  119 + stmt.bindString(12, streetId);
96 } 120 }
  121 + stmt.bindLong(13, entity.getPauseCount());
  122 + stmt.bindLong(14, entity.getUserPauseTimeStamp());
97 } 123 }
98 124
99 @Override 125 @Override
100 protected final void bindValues(SQLiteStatement stmt, UserStepEntity entity) { 126 protected final void bindValues(SQLiteStatement stmt, UserStepEntity entity) {
101 stmt.clearBindings(); 127 stmt.clearBindings();
102 128
103 - String uuid = entity.getUuid();  
104 - if (uuid != null) {  
105 - stmt.bindString(1, uuid);  
106 - }  
107 -  
108 String userId = entity.getUserId(); 129 String userId = entity.getUserId();
109 if (userId != null) { 130 if (userId != null) {
110 - stmt.bindString(2, userId); 131 + stmt.bindString(1, userId);
111 } 132 }
112 133
113 String date = entity.getDate(); 134 String date = entity.getDate();
114 if (date != null) { 135 if (date != null) {
115 - stmt.bindString(3, date); 136 + stmt.bindString(2, date);
116 } 137 }
117 138
118 String stepCount = entity.getStepCount(); 139 String stepCount = entity.getStepCount();
119 if (stepCount != null) { 140 if (stepCount != null) {
120 - stmt.bindString(4, stepCount); 141 + stmt.bindString(3, stepCount);
121 } 142 }
122 - stmt.bindLong(5, entity.getPauseTimeStamp());  
123 - stmt.bindLong(6, entity.getRecordTime());  
124 - stmt.bindDouble(7, entity.getCaloriesCount()); 143 + stmt.bindLong(4, entity.getPauseTimeStamp());
  144 + stmt.bindLong(5, entity.getRecordTime());
  145 + stmt.bindDouble(6, entity.getCaloriesCount());
125 146
126 String serverTraceData = entity.getServerTraceData(); 147 String serverTraceData = entity.getServerTraceData();
127 if (serverTraceData != null) { 148 if (serverTraceData != null) {
128 - stmt.bindString(8, serverTraceData); 149 + stmt.bindString(7, serverTraceData);
  150 + }
  151 +
  152 + String startPoint = entity.getStartPoint();
  153 + if (startPoint != null) {
  154 + stmt.bindString(8, startPoint);
  155 + }
  156 +
  157 + String endPoint = entity.getEndPoint();
  158 + if (endPoint != null) {
  159 + stmt.bindString(9, endPoint);
  160 + }
  161 + stmt.bindLong(10, entity.getStartTimeStamp());
  162 + stmt.bindLong(11, entity.getFinishTimeStamp());
  163 +
  164 + String streetId = entity.getStreetId();
  165 + if (streetId != null) {
  166 + stmt.bindString(12, streetId);
129 } 167 }
  168 + stmt.bindLong(13, entity.getPauseCount());
  169 + stmt.bindLong(14, entity.getUserPauseTimeStamp());
130 } 170 }
131 171
132 @Override 172 @Override
@@ -137,39 +177,51 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; { @@ -137,39 +177,51 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; {
137 @Override 177 @Override
138 public UserStepEntity readEntity(Cursor cursor, int offset) { 178 public UserStepEntity readEntity(Cursor cursor, int offset) {
139 UserStepEntity entity = new UserStepEntity( // 179 UserStepEntity entity = new UserStepEntity( //
140 - cursor.isNull(offset + 0) ? null : cursor.getString(offset + 0), // uuid  
141 - cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // userId  
142 - cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // date  
143 - cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // stepCount  
144 - cursor.getLong(offset + 4), // pauseTimeStamp  
145 - cursor.getLong(offset + 5), // recordTime  
146 - cursor.getDouble(offset + 6), // caloriesCount  
147 - cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7) // serverTraceData 180 + cursor.isNull(offset + 0) ? null : cursor.getString(offset + 0), // userId
  181 + cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // date
  182 + cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // stepCount
  183 + cursor.getLong(offset + 3), // pauseTimeStamp
  184 + cursor.getLong(offset + 4), // recordTime
  185 + cursor.getDouble(offset + 5), // caloriesCount
  186 + cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6), // serverTraceData
  187 + cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // startPoint
  188 + cursor.isNull(offset + 8) ? null : cursor.getString(offset + 8), // endPoint
  189 + cursor.getLong(offset + 9), // startTimeStamp
  190 + cursor.getLong(offset + 10), // finishTimeStamp
  191 + cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11), // streetId
  192 + cursor.getInt(offset + 12), // pauseCount
  193 + cursor.getLong(offset + 13) // userPauseTimeStamp
148 ); 194 );
149 return entity; 195 return entity;
150 } 196 }
151 197
152 @Override 198 @Override
153 public void readEntity(Cursor cursor, UserStepEntity entity, int offset) { 199 public void readEntity(Cursor cursor, UserStepEntity entity, int offset) {
154 - entity.setUuid(cursor.isNull(offset + 0) ? null : cursor.getString(offset + 0));  
155 - entity.setUserId(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));  
156 - entity.setDate(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));  
157 - entity.setStepCount(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));  
158 - entity.setPauseTimeStamp(cursor.getLong(offset + 4));  
159 - entity.setRecordTime(cursor.getLong(offset + 5));  
160 - entity.setCaloriesCount(cursor.getDouble(offset + 6));  
161 - entity.setServerTraceData(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7)); 200 + entity.setUserId(cursor.isNull(offset + 0) ? null : cursor.getString(offset + 0));
  201 + entity.setDate(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
  202 + entity.setStepCount(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
  203 + entity.setPauseTimeStamp(cursor.getLong(offset + 3));
  204 + entity.setRecordTime(cursor.getLong(offset + 4));
  205 + entity.setCaloriesCount(cursor.getDouble(offset + 5));
  206 + entity.setServerTraceData(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
  207 + entity.setStartPoint(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7));
  208 + entity.setEndPoint(cursor.isNull(offset + 8) ? null : cursor.getString(offset + 8));
  209 + entity.setStartTimeStamp(cursor.getLong(offset + 9));
  210 + entity.setFinishTimeStamp(cursor.getLong(offset + 10));
  211 + entity.setStreetId(cursor.isNull(offset + 11) ? null : cursor.getString(offset + 11));
  212 + entity.setPauseCount(cursor.getInt(offset + 12));
  213 + entity.setUserPauseTimeStamp(cursor.getLong(offset + 13));
162 } 214 }
163 215
164 @Override 216 @Override
165 protected final String updateKeyAfterInsert(UserStepEntity entity, long rowId) { 217 protected final String updateKeyAfterInsert(UserStepEntity entity, long rowId) {
166 - return entity.getUuid(); 218 + return entity.getUserId();
167 } 219 }
168 220
169 @Override 221 @Override
170 public String getKey(UserStepEntity entity) { 222 public String getKey(UserStepEntity entity) {
171 if(entity != null) { 223 if(entity != null) {
172 - return entity.getUuid(); 224 + return entity.getUserId();
173 } else { 225 } else {
174 return null; 226 return null;
175 } 227 }
@@ -177,7 +229,7 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; { @@ -177,7 +229,7 @@ public class UserStepEntityDao extends AbstractDao&lt;UserStepEntity, String&gt; {
177 229
178 @Override 230 @Override
179 public boolean hasKey(UserStepEntity entity) { 231 public boolean hasKey(UserStepEntity entity) {
180 - return entity.getUuid() != null; 232 + return entity.getUserId() != null;
181 } 233 }
182 234
183 @Override 235 @Override
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/entity/UserStepEntity.java
@@ -7,7 +7,6 @@ import org.greenrobot.greendao.annotation.Id; @@ -7,7 +7,6 @@ import org.greenrobot.greendao.annotation.Id;
7 @Entity 7 @Entity
8 public class UserStepEntity { 8 public class UserStepEntity {
9 @Id 9 @Id
10 - private String uuid;  
11 private String userId; 10 private String userId;
12 private String date; 11 private String date;
13 private String stepCount; 12 private String stepCount;
@@ -15,12 +14,18 @@ public class UserStepEntity { @@ -15,12 +14,18 @@ public class UserStepEntity {
15 private long recordTime;//暂停时间 14 private long recordTime;//暂停时间
16 private double caloriesCount;//卡路里 15 private double caloriesCount;//卡路里
17 private String serverTraceData;//服务端赛道数据 16 private String serverTraceData;//服务端赛道数据
18 -  
19 - @Generated(hash = 1521646580)  
20 - public UserStepEntity(String uuid, String userId, String date, String stepCount,  
21 - long pauseTimeStamp, long recordTime, double caloriesCount,  
22 - String serverTraceData) {  
23 - this.uuid = uuid; 17 + private String startPoint;
  18 + private String endPoint;
  19 + private long startTimeStamp;
  20 + private long finishTimeStamp;
  21 + private String streetId;//赛事ID
  22 + private int pauseCount;//暂停次数
  23 + private long userPauseTimeStamp;//暂停时间戳
  24 +
  25 + @Generated(hash = 446594441)
  26 + public UserStepEntity(String userId, String date, String stepCount, long pauseTimeStamp, long recordTime, double caloriesCount,
  27 + String serverTraceData, String startPoint, String endPoint, long startTimeStamp, long finishTimeStamp, String streetId, int pauseCount,
  28 + long userPauseTimeStamp) {
24 this.userId = userId; 29 this.userId = userId;
25 this.date = date; 30 this.date = date;
26 this.stepCount = stepCount; 31 this.stepCount = stepCount;
@@ -28,6 +33,13 @@ public class UserStepEntity { @@ -28,6 +33,13 @@ public class UserStepEntity {
28 this.recordTime = recordTime; 33 this.recordTime = recordTime;
29 this.caloriesCount = caloriesCount; 34 this.caloriesCount = caloriesCount;
30 this.serverTraceData = serverTraceData; 35 this.serverTraceData = serverTraceData;
  36 + this.startPoint = startPoint;
  37 + this.endPoint = endPoint;
  38 + this.startTimeStamp = startTimeStamp;
  39 + this.finishTimeStamp = finishTimeStamp;
  40 + this.streetId = streetId;
  41 + this.pauseCount = pauseCount;
  42 + this.userPauseTimeStamp = userPauseTimeStamp;
31 } 43 }
32 44
33 @Generated(hash = 273857141) 45 @Generated(hash = 273857141)
@@ -58,14 +70,6 @@ public class UserStepEntity { @@ -58,14 +70,6 @@ public class UserStepEntity {
58 this.stepCount = stepCount; 70 this.stepCount = stepCount;
59 } 71 }
60 72
61 - public String getUuid() {  
62 - return this.uuid;  
63 - }  
64 -  
65 - public void setUuid(String uuid) {  
66 - this.uuid = uuid;  
67 - }  
68 -  
69 public long getPauseTimeStamp() { 73 public long getPauseTimeStamp() {
70 return this.pauseTimeStamp; 74 return this.pauseTimeStamp;
71 } 75 }
@@ -74,14 +78,6 @@ public class UserStepEntity { @@ -74,14 +78,6 @@ public class UserStepEntity {
74 this.pauseTimeStamp = pauseTimeStamp; 78 this.pauseTimeStamp = pauseTimeStamp;
75 } 79 }
76 80
77 - public double getCaloriesCount() {  
78 - return this.caloriesCount;  
79 - }  
80 -  
81 - public void setCaloriesCount(double caloriesCount) {  
82 - this.caloriesCount = caloriesCount;  
83 - }  
84 -  
85 public long getRecordTime() { 81 public long getRecordTime() {
86 return this.recordTime; 82 return this.recordTime;
87 } 83 }
@@ -90,6 +86,14 @@ public class UserStepEntity { @@ -90,6 +86,14 @@ public class UserStepEntity {
90 this.recordTime = recordTime; 86 this.recordTime = recordTime;
91 } 87 }
92 88
  89 + public double getCaloriesCount() {
  90 + return this.caloriesCount;
  91 + }
  92 +
  93 + public void setCaloriesCount(double caloriesCount) {
  94 + this.caloriesCount = caloriesCount;
  95 + }
  96 +
93 public String getServerTraceData() { 97 public String getServerTraceData() {
94 return this.serverTraceData; 98 return this.serverTraceData;
95 } 99 }
@@ -98,5 +102,61 @@ public class UserStepEntity { @@ -98,5 +102,61 @@ public class UserStepEntity {
98 this.serverTraceData = serverTraceData; 102 this.serverTraceData = serverTraceData;
99 } 103 }
100 104
  105 + public String getStartPoint() {
  106 + return this.startPoint;
  107 + }
  108 +
  109 + public void setStartPoint(String startPoint) {
  110 + this.startPoint = startPoint;
  111 + }
  112 +
  113 + public String getEndPoint() {
  114 + return this.endPoint;
  115 + }
  116 +
  117 + public void setEndPoint(String endPoint) {
  118 + this.endPoint = endPoint;
  119 + }
  120 +
  121 + public long getStartTimeStamp() {
  122 + return this.startTimeStamp;
  123 + }
  124 +
  125 + public void setStartTimeStamp(long startTimeStamp) {
  126 + this.startTimeStamp = startTimeStamp;
  127 + }
  128 +
  129 + public long getFinishTimeStamp() {
  130 + return this.finishTimeStamp;
  131 + }
  132 +
  133 + public void setFinishTimeStamp(long finishTimeStamp) {
  134 + this.finishTimeStamp = finishTimeStamp;
  135 + }
  136 +
  137 + public String getStreetId() {
  138 + return this.streetId;
  139 + }
  140 +
  141 + public void setStreetId(String streetId) {
  142 + this.streetId = streetId;
  143 + }
  144 +
  145 + public int getPauseCount() {
  146 + return this.pauseCount;
  147 + }
  148 +
  149 + public void setPauseCount(int pauseCount) {
  150 + this.pauseCount = pauseCount;
  151 + }
  152 +
  153 + public long getUserPauseTimeStamp() {
  154 + return this.userPauseTimeStamp;
  155 + }
  156 +
  157 + public void setUserPauseTimeStamp(long userPauseTimeStamp) {
  158 + this.userPauseTimeStamp = userPauseTimeStamp;
  159 + }
  160 +
101 161
102 } 162 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/RunLineActivity.java
@@ -24,6 +24,11 @@ public class RunLineActivity extends AppCompatActivity { @@ -24,6 +24,11 @@ public class RunLineActivity extends AppCompatActivity {
24 setContentView(R.layout.activity_run_line); 24 setContentView(R.layout.activity_run_line);
25 25
26 CommonInfo.setUserId(this, "10513196"); 26 CommonInfo.setUserId(this, "10513196");
  27 + //设置用户昵称
  28 + CommonInfo.setUserNickName(this, "测试账号");
  29 + //设置用户头像
  30 +
  31 + CommonInfo.setUserFaceUrl(this, "http://yweb0.cnliveimg.com/images/headImg/2019/0505/1557039035723_small.jpg");
27 getSupportFragmentManager().beginTransaction().replace(R.id.run_line_container, new RunLineFragment()).commit(); 32 getSupportFragmentManager().beginTransaction().replace(R.id.run_line_container, new RunLineFragment()).commit();
28 } 33 }
29 } 34 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunMainFragment.java
@@ -10,6 +10,7 @@ import android.view.View; @@ -10,6 +10,7 @@ import android.view.View;
10 import com.cnlive.libs.base.ui.QMUIFragment; 10 import com.cnlive.libs.base.ui.QMUIFragment;
11 import com.cnlive.libs.base.util.StatusBarUtil; 11 import com.cnlive.libs.base.util.StatusBarUtil;
12 import com.cnlive.libs.base.util.StatusBarUtil2; 12 import com.cnlive.libs.base.util.StatusBarUtil2;
  13 +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo;
13 import com.cnlive.moudle.pedometer.frame.presenter.RunMainFragmentPresenter; 14 import com.cnlive.moudle.pedometer.frame.presenter.RunMainFragmentPresenter;
14 import com.cnlive.moudle.pedometer.frame.view.RunMainFragmentView; 15 import com.cnlive.moudle.pedometer.frame.view.RunMainFragmentView;
15 import com.cnlive.moudle.pedometer.model.Constant; 16 import com.cnlive.moudle.pedometer.model.Constant;
@@ -57,10 +58,11 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr @@ -57,10 +58,11 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr
57 @Override 58 @Override
58 public void onPause() { 59 public void onPause() {
59 super.onPause(); 60 super.onPause();
  61 + //todo 第二期在用
60 //记录当前计时器相关数据 62 //记录当前计时器相关数据
61 if (getMvpView() != null) { 63 if (getMvpView() != null) {
62 - if (!TextUtils.isEmpty(userId)) {  
63 - getMvpView().setSQLPauseTime(userId); 64 + if (!TextUtils.isEmpty(CommonInfo.getUserId(getActivity()))) {
  65 + getMvpView().setFragmentPauseTime(userId);
64 } 66 }
65 } 67 }
66 } 68 }
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunRaceDetailFragment.java
@@ -89,12 +89,14 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie @@ -89,12 +89,14 @@ public class RunRaceDetailFragment extends QMUIFragment&lt;RunRaceDetailFragmentVie
89 super.onResume(); 89 super.onResume();
90 if (getMvpView() != null) { 90 if (getMvpView() != null) {
91 getMvpView().onResume(); 91 getMvpView().onResume();
  92 + getMvpView().checkStartBtnState();
92 } 93 }
93 if (getMvpView() != null) { 94 if (getMvpView() != null) {
94 //为系统的方向传感器注册监听器 95 //为系统的方向传感器注册监听器
95 mSensorManager.registerListener(getMvpView(), mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), 96 mSensorManager.registerListener(getMvpView(), mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION),
96 SensorManager.SENSOR_DELAY_UI); 97 SensorManager.SENSOR_DELAY_UI);
97 } 98 }
  99 +
98 } 100 }
99 101
100 @Override 102 @Override
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunningMapFragment.java
@@ -109,7 +109,8 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run @@ -109,7 +109,8 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run
109 } 109 }
110 //开始进行历史轨迹查询 110 //开始进行历史轨迹查询
111 if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) { 111 if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) {
112 - long stepStartTime = CommonInfo.getStepStartTime(getActivity()); 112 + long stepStartTime = 0;
  113 +// CommonInfo.getStepStartTime(getActivity());
113 Log.e(TAG, "onViewCreated: 时间"+stepStartTime ); 114 Log.e(TAG, "onViewCreated: 时间"+stepStartTime );
114 long startTime = 0; 115 long startTime = 0;
115 if (stepStartTime != 0) { 116 if (stepStartTime != 0) {
@@ -117,7 +118,7 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run @@ -117,7 +118,7 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run
117 } else { 118 } else {
118 startTime = (int) (System.currentTimeMillis() / 1000 -12 * 60 * 60); 119 startTime = (int) (System.currentTimeMillis() / 1000 -12 * 60 * 60);
119 } 120 }
120 - long current = TimeUtil.getCurrentTime(); 121 + long current = TimeUtil.getNowTimeStamp();
121 // long startTime = current - hour * 3600 * 1000 - minute * 60 * 1000 - second * 1000; 122 // long startTime = current - hour * 3600 * 1000 - minute * 60 * 1000 - second * 1000;
122 long endTime = current; 123 long endTime = current;
123 // Log.e(TAG, "onViewCreated: " + "hour:" + hour + ",minute" + minute + ",second:" + second); 124 // Log.e(TAG, "onViewCreated: " + "hour:" + hour + ",minute" + minute + ",second:" + second);
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/StepUtil.java
@@ -90,14 +90,11 @@ public class StepUtil { @@ -90,14 +90,11 @@ public class StepUtil {
90 */ 90 */
91 public static void clearRunData(Context context, String uid) { 91 public static void clearRunData(Context context, String uid) {
92 DbCore.init(context, dbName); 92 DbCore.init(context, dbName);
93 - String CURRENT_DATE = getTodayDate();  
94 - List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid), UserStepEntityDao.Properties.Date.eq(CURRENT_DATE)).list(); 93 + List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid)).list();
95 if (list != null && list.size() > 0) { 94 if (list != null && list.size() > 0) {
96 Log.e(TAG, "clearRunData: " + list.size()); 95 Log.e(TAG, "clearRunData: " + list.size());
97 -// for (int i = 0; i < list.size(); i++) {  
98 - DbCore.getDaoSession().getUserStepEntityDao().deleteByKey(list.get(0).getUuid()); 96 + DbCore.getDaoSession().getUserStepEntityDao().delete(list.get(0));
99 DbCore.getDaoSession().getUserStepEntityDao().detachAll(); 97 DbCore.getDaoSession().getUserStepEntityDao().detachAll();
100 -// }  
101 } 98 }
102 } 99 }
103 100
@@ -111,10 +108,7 @@ public class StepUtil { @@ -111,10 +108,7 @@ public class StepUtil {
111 public static UserStepEntity getUserStepData(Context context, String uid) { 108 public static UserStepEntity getUserStepData(Context context, String uid) {
112 if (!TextUtils.isEmpty(uid)) { 109 if (!TextUtils.isEmpty(uid)) {
113 DbCore.init(context, dbName); 110 DbCore.init(context, dbName);
114 - DbCore.getDaoSession().getUserStepEntityDao().detachAll();  
115 - DbCore.getDaoSession().clear();  
116 - String CURRENT_DATE = getTodayDate();  
117 - List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid), UserStepEntityDao.Properties.Date.eq(CURRENT_DATE)).list(); 111 + List<UserStepEntity> list = DbCore.getDaoSession().getUserStepEntityDao().queryBuilder().where(UserStepEntityDao.Properties.UserId.eq(uid)).list();
118 if (list != null && list.size() > 0) { 112 if (list != null && list.size() > 0) {
119 return list.get(0); 113 return list.get(0);
120 } else { 114 } else {
@@ -126,18 +120,70 @@ public class StepUtil { @@ -126,18 +120,70 @@ public class StepUtil {
126 } 120 }
127 121
128 /** 122 /**
129 - * 获取用户数据 123 + * 设置用户数据
130 * 124 *
131 * @param context 125 * @param context
132 * @param uid 126 * @param uid
133 * @return 127 * @return
134 */ 128 */
135 - public static void setServerTraceData(Context context, String uid, UserStepEntity userStepEntity) { 129 + public static void setUserStepData(Context context, String uid, UserStepEntity userStepEntity) {
  130 + if (getUserStepData(context, uid) != null) {
  131 + UserStepEntity entity = getUserStepData(context, uid);
  132 + } else {
  133 +
  134 + }
  135 + }
  136 +
  137 + public static void setStepStartData(Context context, String uid, long startStamp, String streetId) {
136 if (getUserStepData(context, uid) != null) { 138 if (getUserStepData(context, uid) != null) {
137 UserStepEntity entity = getUserStepData(context, uid); 139 UserStepEntity entity = getUserStepData(context, uid);
138 -// entity.setServerTraceData(); 140 + entity.setStartTimeStamp(startStamp);
  141 + entity.setStreetId(streetId);
  142 + //更新数据
  143 + updateStepData(context, entity);
139 } else { 144 } else {
  145 + //创建数据
  146 + UserStepEntity userStepEntity = new UserStepEntity();
  147 + userStepEntity.setUserId(uid);
  148 + userStepEntity.setStartTimeStamp(startStamp);
  149 + userStepEntity.setStreetId(streetId);
  150 + insertStepData(context, userStepEntity);
  151 + }
  152 + }
  153 +
  154 + public static void insertStepData(Context context, UserStepEntity userStepEntity) {
  155 + DbCore.init(context, dbName);
  156 + DbCore.getDaoSession().getUserStepEntityDao().insert(userStepEntity);
  157 + }
140 158
  159 +
  160 + /**
  161 + * 获取用户暂停次数
  162 + *
  163 + * @param context
  164 + * @param uid
  165 + * @return
  166 + */
  167 + public static int getUserPauseCount(Context context, String uid) {
  168 + UserStepEntity userStepEntity = getUserStepData(context, uid);
  169 + if (userStepEntity != null) {
  170 + return userStepEntity.getPauseCount();
  171 + } else {
  172 + return -1;
  173 + }
  174 + }
  175 +
  176 + /**
  177 + * 设置用户完成时间戳
  178 + *
  179 + * @param context
  180 + */
  181 + public static void setUserFinishTimeStamp(Context context, String uid) {
  182 + UserStepEntity userStepEntity = getUserStepData(context, uid);
  183 + if (userStepEntity != null) {
  184 + userStepEntity.setFinishTimeStamp(TimeUtil.getNowTimeStamp());
  185 + //更新
  186 + updateStepData(context, userStepEntity);
141 } 187 }
142 } 188 }
143 189
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/TimeUtil.java
@@ -10,14 +10,6 @@ import java.util.Date; @@ -10,14 +10,6 @@ import java.util.Date;
10 * @author ShinnyYang 10 * @author ShinnyYang
11 */ 11 */
12 public class TimeUtil { 12 public class TimeUtil {
13 - /**  
14 - * 获取当前时间戳(单位:秒)  
15 - *  
16 - * @return  
17 - */  
18 - public static long getCurrentTime() {  
19 - return System.currentTimeMillis();  
20 - }  
21 13
22 /** 14 /**
23 * 日期格式字符串转换成时间戳 15 * 日期格式字符串转换成时间戳
moudle_pedometer/src/main/res/layout/dialog_tip.xml
@@ -11,16 +11,17 @@ @@ -11,16 +11,17 @@
11 android:layout_height="wrap_content" 11 android:layout_height="wrap_content"
12 android:background="@drawable/free_dialog_bg" 12 android:background="@drawable/free_dialog_bg"
13 android:orientation="vertical" 13 android:orientation="vertical"
14 - android:paddingTop="10dp"  
15 - > 14 + android:paddingTop="10dp">
16 15
17 <TextView 16 <TextView
18 android:id="@+id/tv_dialog_tip" 17 android:id="@+id/tv_dialog_tip"
19 android:layout_width="wrap_content" 18 android:layout_width="wrap_content"
20 android:layout_height="wrap_content" 19 android:layout_height="wrap_content"
21 - android:minHeight="75dp"  
22 - android:gravity="center"  
23 android:layout_gravity="center" 20 android:layout_gravity="center"
  21 + android:layout_marginLeft="10dp"
  22 + android:layout_marginRight="10dp"
  23 + android:gravity="center"
  24 + android:minHeight="75dp"
24 android:text="标题" 25 android:text="标题"
25 android:textColor="@color/black" 26 android:textColor="@color/black"
26 android:textSize="17sp" 27 android:textSize="17sp"
@@ -59,7 +60,6 @@ @@ -59,7 +60,6 @@
59 </LinearLayout> 60 </LinearLayout>
60 61
61 62
62 -  
63 </LinearLayout> 63 </LinearLayout>
64 </LinearLayout> 64 </LinearLayout>
65 </LinearLayout> 65 </LinearLayout>
moudle_pedometer/src/main/res/layout/fragment_finish_run_map.xml
@@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
15 sothree:umanoFadeColor="@color/black_20" 15 sothree:umanoFadeColor="@color/black_20"
16 sothree:umanoOverlay="true" 16 sothree:umanoOverlay="true"
17 sothree:umanoPanelHeight="310dp" 17 sothree:umanoPanelHeight="310dp"
18 - sothree:umanoParallaxOffset="100dp" 18 + sothree:umanoParallaxOffset="0dp"
19 sothree:umanoScrollableView="@+id/scrollView" 19 sothree:umanoScrollableView="@+id/scrollView"
20 sothree:umanoShadowHeight="0dp"> 20 sothree:umanoShadowHeight="0dp">
21 21
moudle_pedometer/src/main/res/layout/fragment_run_main.xml
@@ -31,32 +31,42 @@ @@ -31,32 +31,42 @@
31 android:src="@drawable/icon_right_close" /> 31 android:src="@drawable/icon_right_close" />
32 </RelativeLayout> 32 </RelativeLayout>
33 <!--公里数显示--> 33 <!--公里数显示-->
34 - <LinearLayout 34 + <FrameLayout
35 android:layout_width="match_parent" 35 android:layout_width="match_parent"
36 android:layout_height="0dp" 36 android:layout_height="0dp"
37 - android:layout_weight="1.2"  
38 - android:gravity="center"  
39 - android:paddingLeft="50dp"> 37 + android:layout_weight="1.2">
40 38
  39 + <LinearLayout
  40 + android:layout_width="match_parent"
  41 + android:layout_height="match_parent"
  42 + android:gravity="center"
  43 + android:paddingLeft="50dp">
41 44
42 - <TextView  
43 - android:id="@+id/tv_run_distance"  
44 - android:layout_width="wrap_content"  
45 - android:layout_height="wrap_content"  
46 - android:text="0.00"  
47 - android:textColor="@color/white"  
48 - android:textSize="70sp"  
49 - android:textStyle="bold" /> 45 + <TextView
  46 + android:id="@+id/tv_run_distance"
  47 + android:layout_width="wrap_content"
  48 + android:layout_height="wrap_content"
  49 + android:text="0.00"
  50 + android:textColor="@color/white"
  51 + android:textSize="70sp"
  52 + android:textStyle="bold" />
50 53
51 - <TextView  
52 - android:layout_width="wrap_content"  
53 - android:layout_height="wrap_content"  
54 - android:layout_marginLeft="10dp"  
55 - android:layout_marginTop="20dp"  
56 - android:text="公里"  
57 - android:textColor="@color/white"  
58 - android:textSize="15sp" />  
59 - </LinearLayout> 54 + <TextView
  55 + android:layout_width="wrap_content"
  56 + android:layout_height="wrap_content"
  57 + android:layout_marginLeft="10dp"
  58 + android:layout_marginTop="20dp"
  59 + android:text="公里"
  60 + android:textColor="@color/white"
  61 + android:textSize="15sp" />
  62 + </LinearLayout>
  63 +
  64 + <ImageView
  65 + android:id="@+id/iv_back"
  66 + android:layout_width="20dp"
  67 + android:layout_height="40dp"
  68 + android:background="@drawable/back" />
  69 + </FrameLayout>
60 <!--GPS信息--> 70 <!--GPS信息-->
61 <LinearLayout 71 <LinearLayout
62 android:layout_width="match_parent" 72 android:layout_width="match_parent"
moudle_pedometer/src/main/res/values/strings.xml
@@ -83,6 +83,7 @@ @@ -83,6 +83,7 @@
83 <string name="up_fail">上传失败</string> 83 <string name="up_fail">上传失败</string>
84 <string name="enter_range_tip">您已回归轨迹 继续参与运动吧</string> 84 <string name="enter_range_tip">您已回归轨迹 继续参与运动吧</string>
85 <string name="exit_range_tip">您已偏离路径轨迹 请您计时回归路径!</string> 85 <string name="exit_range_tip">您已偏离路径轨迹 请您计时回归路径!</string>
  86 + <string name="more_than_pause_count_tip">您已超过最大暂停次数,无法继续比赛!</string>
86 87
87 88
88 </resources> 89 </resources>