Commit 0fe734932b8589a487a7ee167c34ffaea4e20fe4
1 parent
5cf16478
1 路径工具,完成页面逻辑
Showing
17 changed files
with
801 additions
and
75 deletions
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/commonInfo/CollCommonInfo.java
| ... | ... | @@ -155,6 +155,48 @@ public class CollCommonInfo { |
| 155 | 155 | return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getBoolean("CollFirstStepSendTraceTip", true); |
| 156 | 156 | } |
| 157 | 157 | |
| 158 | + /** | |
| 159 | + * 设置用户昵称 | |
| 160 | + * | |
| 161 | + * @param context | |
| 162 | + * @param nickName | |
| 163 | + */ | |
| 164 | + public static void setUserNickName(Context context, String nickName) { | |
| 165 | + MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("CollRunUserNickName", nickName); | |
| 166 | + | |
| 167 | + } | |
| 168 | + | |
| 169 | + /** | |
| 170 | + * 获取用户昵称 | |
| 171 | + * | |
| 172 | + * @param context | |
| 173 | + */ | |
| 174 | + public static String getUserNickName(Context context) { | |
| 175 | + return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("CollRunUserNickName", ""); | |
| 176 | + | |
| 177 | + } | |
| 178 | + | |
| 179 | + /** | |
| 180 | + * 设置用户头像 | |
| 181 | + * | |
| 182 | + * @param context | |
| 183 | + * @param userIcon | |
| 184 | + */ | |
| 185 | + public static void setUserIcon(Context context, String userIcon) { | |
| 186 | + MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).putString("CollRunUserNickIcon", userIcon); | |
| 187 | + | |
| 188 | + } | |
| 189 | + | |
| 190 | + /** | |
| 191 | + * 获取用户头像 | |
| 192 | + * | |
| 193 | + * @param context | |
| 194 | + */ | |
| 195 | + public static String getUserIcon(Context context) { | |
| 196 | + return MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).getString("CollRunUserNickIcon", ""); | |
| 197 | + | |
| 198 | + } | |
| 199 | + | |
| 158 | 200 | /*重置 |
| 159 | 201 | * @param context |
| 160 | 202 | */ |
| ... | ... | @@ -165,7 +207,6 @@ public class CollCommonInfo { |
| 165 | 207 | MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("CollstepStartTime"); |
| 166 | 208 | MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("CollKeepAliveService"); |
| 167 | 209 | MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("CollRunBaiduTraceService"); |
| 168 | - MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("CollstreetId"); | |
| 169 | 210 | MySpHelper.getInstance(context, Context.MODE_MULTI_PROCESS).removeKey("CollFirstStepSendTraceTip"); |
| 170 | 211 | } |
| 171 | 212 | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/CollRunningFinishFragmentView.java
| 1 | 1 | package com.cnlive.moudle.collectionTrace.frame.view; |
| 2 | 2 | |
| 3 | 3 | import android.content.Context; |
| 4 | +import android.support.v7.widget.LinearLayoutManager; | |
| 5 | +import android.text.TextUtils; | |
| 4 | 6 | import android.view.View; |
| 5 | 7 | |
| 8 | +import com.cnlive.moudle.collectionTrace.model.CollectPoint; | |
| 9 | +import com.cnlive.moudle.collectionTrace.ui.adapter.CollFinishDetaiAdapter; | |
| 6 | 10 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunningFinishFragment; |
| 11 | +import com.cnlive.moudle.collectionTrace.utils.CollStepUtil; | |
| 12 | +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; | |
| 7 | 13 | import com.cnlive.moudle.pedometer.model.RunningFinishBean; |
| 14 | +import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; | |
| 8 | 15 | import com.cnlive.moudle.pedometer.ui.fragment.RunningFinishFragment; |
| 16 | +import com.cnlive.moudle.pedometer.utils.GsonUtil; | |
| 17 | +import com.cnlive.moudle.pedometer.utils.TimeUtil; | |
| 18 | +import com.cnlive.strike.application.GlideApp; | |
| 9 | 19 | import com.hannesdorfmann.mosby3.mvp.MvpView; |
| 10 | 20 | |
| 21 | +import java.util.ArrayList; | |
| 22 | +import java.util.List; | |
| 23 | + | |
| 11 | 24 | public class CollRunningFinishFragmentView implements MvpView { |
| 12 | 25 | private CollRunningFinishFragment fragment; |
| 26 | + private CollFinishDetaiAdapter adapter; | |
| 13 | 27 | |
| 14 | 28 | public CollRunningFinishFragmentView(CollRunningFinishFragment fragment) { |
| 15 | 29 | this.fragment = fragment; |
| ... | ... | @@ -19,23 +33,56 @@ public class CollRunningFinishFragmentView implements MvpView { |
| 19 | 33 | return fragment == null ? null : fragment.getActivity(); |
| 20 | 34 | } |
| 21 | 35 | |
| 22 | - public void initView(RunningFinishBean runningFinishBean) { | |
| 36 | + public void initView(CollUserStepEntity collUserStepEntity) { | |
| 37 | + //设置用户昵称 | |
| 38 | + String nickName = CommonInfo.getUserNickName(getContext()); | |
| 39 | + fragment.binding.includeFinishUserInfo.tvUserNickName.setText(nickName); | |
| 40 | + //设置用户头像 | |
| 41 | + String faceUrl = CommonInfo.getUserIcon(getContext()); | |
| 42 | + if (!TextUtils.isEmpty(faceUrl)) { | |
| 43 | + GlideApp.with(getContext()).load(faceUrl).into(fragment.binding.includeFinishUserInfo.qmIvIcon); | |
| 44 | + } | |
| 45 | + //设置标题 | |
| 46 | + if (!TextUtils.isEmpty(collUserStepEntity.getStreetTitle())) { | |
| 47 | + fragment.binding.includeFinishUserInfo.tvStreetName.setText(collUserStepEntity.getStreetTitle()); | |
| 48 | + } | |
| 23 | 49 | //设置距离 |
| 24 | - fragment.binding.includeFinishUserInfo.tvDistance.setText(runningFinishBean.getRunDistance()); | |
| 25 | - //设置配速 | |
| 26 | - fragment.binding.includeFinishUserInfo.tvSpeed.setText(runningFinishBean.getSpeed()); | |
| 27 | - //设置用时 | |
| 28 | - fragment.binding.includeFinishUserInfo.tvTimer.setText(runningFinishBean.getTime()); | |
| 29 | - //设置日期 | |
| 30 | - fragment.binding.includeFinishUserInfo.tvDate.setText(runningFinishBean.getDate()); | |
| 31 | - //设置步数 | |
| 32 | - fragment.binding.includeFinishStep.tvStep.setText(runningFinishBean.getStep()); | |
| 33 | - //设置起点位置 | |
| 34 | - fragment.binding.includeFinishRunRoute.tvStartPoint.setText(runningFinishBean.getStartPoint()); | |
| 35 | - //设置终点位置 | |
| 36 | - fragment.binding.includeFinishRunRoute.tvEndPoint.setText(runningFinishBean.getEndPoint()); | |
| 37 | - //设置时间 | |
| 38 | - fragment.binding.includeFinishRunRoute.tvTimer.setText(runningFinishBean.getTime()); | |
| 50 | + if (!TextUtils.isEmpty(collUserStepEntity.getStepCount())) { | |
| 51 | + fragment.binding.includeFinishUserInfo.tvDistance.setText(CollStepUtil.getWalkDistanceKM(Long.parseLong(collUserStepEntity.getStepCount())) + ""); | |
| 52 | + } else { | |
| 53 | + fragment.binding.includeFinishUserInfo.tvDistance.setText("0"); | |
| 54 | + } | |
| 55 | + if (0 != collUserStepEntity.getFinishTimeStamp()) { | |
| 56 | + //设置日期 | |
| 57 | + fragment.binding.includeFinishUserInfo.tvDate.setText(TimeUtil.getStampToTime(collUserStepEntity.getFinishTimeStamp() * 1000, "yyyy-MM-dd HH:mm")); | |
| 58 | + } | |
| 59 | + //设置适配器 | |
| 60 | + if (!TextUtils.isEmpty(collUserStepEntity.getImportPoint())) { | |
| 61 | + List<CollectPoint> collectPoints = GsonUtil.jsonToList(collUserStepEntity.getImportPoint(), CollectPoint.class); | |
| 62 | + //添加起点 | |
| 63 | + CollectPoint startPoint = null; | |
| 64 | + if (!TextUtils.isEmpty(collUserStepEntity.getCollStartPointData())) { | |
| 65 | + startPoint = GsonUtil.GsonToBean(collUserStepEntity.getCollStartPointData(), CollectPoint.class); | |
| 66 | + } | |
| 67 | + CollectPoint endPoint = null; | |
| 68 | + if (!TextUtils.isEmpty(collUserStepEntity.getCollEndPointData())) { | |
| 69 | + endPoint = GsonUtil.GsonToBean(collUserStepEntity.getCollEndPointData(), CollectPoint.class); | |
| 70 | + } | |
| 71 | + if (null == collectPoints) { | |
| 72 | + collectPoints = new ArrayList<>(); | |
| 73 | + } | |
| 74 | + if (null != startPoint) { | |
| 75 | + collectPoints.add(0, startPoint); | |
| 76 | + } | |
| 77 | + if (null != endPoint) { | |
| 78 | + collectPoints.add(endPoint); | |
| 79 | + } | |
| 80 | + | |
| 81 | + adapter = new CollFinishDetaiAdapter(fragment.getActivity(), collectPoints); | |
| 82 | + //设置 | |
| 83 | + fragment.binding.includeFinishUserInfo.rvList.setLayoutManager(new LinearLayoutManager(fragment.getActivity())); | |
| 84 | + fragment.binding.includeFinishUserInfo.rvList.setAdapter(adapter); | |
| 85 | + } | |
| 39 | 86 | //返回按钮点击 |
| 40 | 87 | fragment.binding.flBack.setOnClickListener(new View.OnClickListener() { |
| 41 | 88 | @Override | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/CollRunningMapFragmentView.java
| ... | ... | @@ -35,6 +35,7 @@ import com.baidu.mapapi.utils.DistanceUtil; |
| 35 | 35 | import com.baidu.trace.model.SortType; |
| 36 | 36 | import com.cnlive.moudle.collectionTrace.model.CollectPoint; |
| 37 | 37 | import com.cnlive.moudle.collectionTrace.service.CollStepService; |
| 38 | +import com.cnlive.moudle.collectionTrace.ui.activity.CollRunningFinishActivity; | |
| 38 | 39 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunningMapFragment; |
| 39 | 40 | import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo; |
| 40 | 41 | import com.cnlive.moudle.pedometer.model.Constant; |
| ... | ... | @@ -46,6 +47,7 @@ import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil; |
| 46 | 47 | import com.cnlive.moudle.collectionTrace.utils.CollStepUtil; |
| 47 | 48 | import com.cnlive.moudle.pedometer.utils.GsonUtil; |
| 48 | 49 | import com.cnlive.moudle.pedometer.utils.MyMapUtil; |
| 50 | +import com.cnlive.moudle.pedometer.utils.StepUtil; | |
| 49 | 51 | import com.cnlive.moudle.pedometer.utils.TimeUtil; |
| 50 | 52 | import com.example.moudle_pedometer.R; |
| 51 | 53 | import com.hannesdorfmann.mosby3.mvp.MvpView; |
| ... | ... | @@ -81,9 +83,13 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 81 | 83 | private RunRaceDetailInfo runRaceDetailInfo; |
| 82 | 84 | private List<Overlay> allMapOverlays; |
| 83 | 85 | private SelectDialog selectDialog; |
| 86 | + private SelectDialog endSelectDialog; | |
| 84 | 87 | private boolean isShowFollowAddress = false;//是否显示跟随地址 |
| 88 | + private boolean isShowEndFollowAddress = false;//是否显示结束跟随地址 | |
| 89 | + | |
| 85 | 90 | private String currentAddress; |
| 86 | 91 | private LatLng currentImportLatLng; |
| 92 | + private String employTime = "";//用时 | |
| 87 | 93 | |
| 88 | 94 | public CollRunningMapFragmentView(CollRunningMapFragment fragment) { |
| 89 | 95 | this.fragment = fragment; |
| ... | ... | @@ -95,6 +101,7 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 95 | 101 | |
| 96 | 102 | public void initView(RunRaceDetailInfo runRaceDetailInfo) { |
| 97 | 103 | initSelectDialog(); |
| 104 | + initFinishSelectDialog(); | |
| 98 | 105 | this.runRaceDetailInfo = runRaceDetailInfo; |
| 99 | 106 | uid = CollCommonInfo.getUserId(getContext()); |
| 100 | 107 | userStepEntity = CollStepUtil.getCollUserStepData(getContext(), uid); |
| ... | ... | @@ -106,7 +113,7 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 106 | 113 | CollStepUtil.setCollStreetTitle(getContext(), CollCommonInfo.getUserId(getContext()), runRaceDetailInfo.getTitle()); |
| 107 | 114 | } |
| 108 | 115 | //设置开始时间和赛事id |
| 109 | - if (0 == userStepEntity.getStartTimeStamp()) { | |
| 116 | + if (TextUtils.isEmpty(userStepEntity.getStreetId())) { | |
| 110 | 117 | CollStepUtil.setCollStepStartData(getContext(), uid, TimeUtil.getNowTimeStamp(), CollCommonInfo.getStreetId(getContext())); |
| 111 | 118 | } |
| 112 | 119 | //设置步数 |
| ... | ... | @@ -125,6 +132,7 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 125 | 132 | collectPoint.setLongitude(latLng.longitude); |
| 126 | 133 | collectPoint.setPointName(runRaceDetailInfo.getCollStartLntLngName()); |
| 127 | 134 | CollStepUtil.setCollStartPointData(getContext(), uid, collectPoint); |
| 135 | + | |
| 128 | 136 | } |
| 129 | 137 | } |
| 130 | 138 | } |
| ... | ... | @@ -244,11 +252,11 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 244 | 252 | //更新可打点数量 |
| 245 | 253 | int remainNum = updataCanTakePointCount(); |
| 246 | 254 | if (remainNum != 0) { |
| 255 | + if (null != followMyLocation) { | |
| 256 | + currentImportLatLng = new LatLng(followMyLocation.latitude, followMyLocation.longitude); | |
| 257 | + } | |
| 247 | 258 | //获取当前地点 |
| 248 | 259 | if (!TextUtils.isEmpty(currentAddress)) { |
| 249 | - if (null != followMyLocation) { | |
| 250 | - currentImportLatLng = new LatLng(followMyLocation.latitude, followMyLocation.longitude); | |
| 251 | - } | |
| 252 | 260 | selectDialog.setTipMessage("确定在" + "\"" + currentAddress + "\"" + "打点?"); |
| 253 | 261 | selectDialog.show(); |
| 254 | 262 | } else { |
| ... | ... | @@ -261,6 +269,24 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 261 | 269 | } |
| 262 | 270 | }); |
| 263 | 271 | |
| 272 | + //结束按钮点击事件 | |
| 273 | + fragment.binding.flEndPoint.setOnClickListener(new View.OnClickListener() { | |
| 274 | + @Override | |
| 275 | + public void onClick(View view) { | |
| 276 | + if (null != followMyLocation) { | |
| 277 | + currentImportLatLng = new LatLng(followMyLocation.latitude, followMyLocation.longitude); | |
| 278 | + //获取当前地点 | |
| 279 | + if (!TextUtils.isEmpty(currentAddress)) { | |
| 280 | + endSelectDialog.setTipMessage("确定将" + "\"" + currentAddress + "\"" + "设为结束地点?"); | |
| 281 | + endSelectDialog.show(); | |
| 282 | + } else { | |
| 283 | + isShowEndFollowAddress = true; | |
| 284 | + Toast.makeText(getContext(), "正在获取当前地点信息,请稍后", Toast.LENGTH_SHORT).show(); | |
| 285 | + } | |
| 286 | + } | |
| 287 | + } | |
| 288 | + }); | |
| 289 | + | |
| 264 | 290 | } |
| 265 | 291 | |
| 266 | 292 | /** |
| ... | ... | @@ -316,6 +342,47 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 316 | 342 | } |
| 317 | 343 | } |
| 318 | 344 | |
| 345 | + /** | |
| 346 | + * 结束按钮 | |
| 347 | + */ | |
| 348 | + private void initFinishSelectDialog() { | |
| 349 | + if (endSelectDialog == null) { | |
| 350 | + endSelectDialog = new SelectDialog(getContext(), "标题", "否", new SelectDialog.DialogInterface() { | |
| 351 | + @Override | |
| 352 | + public void onClick(SelectDialog dialog) { | |
| 353 | + dialog.dismiss(); | |
| 354 | + isShowEndFollowAddress = false; | |
| 355 | + } | |
| 356 | + }, "是", new SelectDialog.DialogInterface() { | |
| 357 | + @Override | |
| 358 | + public void onClick(SelectDialog dialog) { | |
| 359 | + dialog.dismiss(); | |
| 360 | + isShowEndFollowAddress = false; | |
| 361 | + if (null == currentImportLatLng || TextUtils.isEmpty(currentAddress)) { | |
| 362 | + return; | |
| 363 | + } | |
| 364 | + //保存用户完成时间 | |
| 365 | + CollStepUtil.setCollUserFinishTimeStamp(getContext(), CollCommonInfo.getUserId(getContext()), TimeUtil.getNowTimeStamp()); | |
| 366 | + //设置终点信息 | |
| 367 | + CollectPoint collectPoint = new CollectPoint(); | |
| 368 | + collectPoint.setLatitude(currentImportLatLng.latitude); | |
| 369 | + collectPoint.setLongitude(currentImportLatLng.longitude); | |
| 370 | + collectPoint.setPointName(currentAddress); | |
| 371 | + //设置用户用时 | |
| 372 | + if (!TextUtils.isEmpty(employTime)) { | |
| 373 | + CollStepUtil.setEmployTimeStamp(getContext(), CollCommonInfo.getUserId(getContext()), employTime); | |
| 374 | + } | |
| 375 | + //将终点数据保存在数据库中 | |
| 376 | + CollStepUtil.setCollEndPointData(getContext(), CollCommonInfo.getUserId(getContext()), collectPoint); | |
| 377 | + //跳转界面 | |
| 378 | + CollRunningFinishActivity.startActivity(fragment.getActivity()); | |
| 379 | + } | |
| 380 | + }); | |
| 381 | + endSelectDialog.setCancelable(false); | |
| 382 | + endSelectDialog.setCanceledOnTouchOutside(false); | |
| 383 | + } | |
| 384 | + } | |
| 385 | + | |
| 319 | 386 | private void initChrom() { |
| 320 | 387 | //设置计时监听 |
| 321 | 388 | fragment.binding.chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { |
| ... | ... | @@ -324,6 +391,8 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 324 | 391 | int hour = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000 / 60 / 60); |
| 325 | 392 | int minute = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000 / 60) % 60; |
| 326 | 393 | int second = (int) ((SystemClock.elapsedRealtime() - chronometer.getBase()) / 1000) % 60; |
| 394 | + employTime = (hour * 3600 + minute * 60 + second) + ""; | |
| 395 | + | |
| 327 | 396 | if (hour < 1) { |
| 328 | 397 | if (minute == 59 && second == 59) { |
| 329 | 398 | chronometer.setFormat("0" + "%s"); |
| ... | ... | @@ -523,8 +592,6 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 523 | 592 | } |
| 524 | 593 | |
| 525 | 594 | if (isShowFollowAddress && !TextUtils.isEmpty(currentAddress)) { |
| 526 | - //设置当前打点经纬度 | |
| 527 | - currentImportLatLng = new LatLng(location.getLatitude(), location.getLongitude()); | |
| 528 | 595 | if (isShowFollowAddress && selectDialog != null && !selectDialog.isShowing()) { |
| 529 | 596 | if (!TextUtils.isEmpty(currentAddress)) { |
| 530 | 597 | selectDialog.setTipMessage("确定将" + "\"" + currentAddress + "\"" + "设置开始地点?"); |
| ... | ... | @@ -535,6 +602,18 @@ public class CollRunningMapFragmentView implements MvpView, SensorEventListener |
| 535 | 602 | } |
| 536 | 603 | } |
| 537 | 604 | } |
| 605 | + //结束按钮 | |
| 606 | + if (isShowEndFollowAddress && !TextUtils.isEmpty(currentAddress)) { | |
| 607 | + if (isShowEndFollowAddress && endSelectDialog != null && !endSelectDialog.isShowing()) { | |
| 608 | + if (!TextUtils.isEmpty(currentAddress)) { | |
| 609 | + endSelectDialog.setTipMessage("确定将" + "\"" + currentAddress + "\"" + "设为结束地点?"); | |
| 610 | + if (!endSelectDialog.isShowing()) { | |
| 611 | + endSelectDialog.show(); | |
| 612 | + } | |
| 613 | + isShowEndFollowAddress = false; | |
| 614 | + } | |
| 615 | + } | |
| 616 | + } | |
| 538 | 617 | |
| 539 | 618 | //正在搜索GPS信号 |
| 540 | 619 | if (location.getGpsAccuracyStatus() == BDLocation.GPS_ACCURACY_UNKNOWN) { | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/view/StartTraceFragmentView.java
| ... | ... | @@ -29,11 +29,15 @@ import com.baidu.mapapi.map.UiSettings; |
| 29 | 29 | import com.baidu.mapapi.model.LatLng; |
| 30 | 30 | import com.cnlive.moudle.collectionTrace.service.CollKeepLiveService; |
| 31 | 31 | import com.cnlive.moudle.collectionTrace.service.CollStepService; |
| 32 | +import com.cnlive.moudle.collectionTrace.ui.activity.CollRunRaceDetailActivity; | |
| 32 | 33 | import com.cnlive.moudle.collectionTrace.ui.activity.CollRunningMapActivity; |
| 33 | 34 | import com.cnlive.moudle.collectionTrace.ui.fragment.StartTraceFragment; |
| 34 | 35 | import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo; |
| 36 | +import com.cnlive.moudle.collectionTrace.utils.CollStepUtil; | |
| 37 | +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; | |
| 35 | 38 | import com.cnlive.moudle.pedometer.model.Constant; |
| 36 | 39 | import com.cnlive.moudle.pedometer.net.bean.RunRaceDetailInfo; |
| 40 | +import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; | |
| 37 | 41 | import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; |
| 38 | 42 | import com.cnlive.moudle.pedometer.utils.BitmapUtil; |
| 39 | 43 | import com.cnlive.moudle.pedometer.utils.GsonUtil; |
| ... | ... | @@ -122,6 +126,71 @@ public class StartTraceFragmentView implements MvpView, SensorEventListener { |
| 122 | 126 | } |
| 123 | 127 | |
| 124 | 128 | /** |
| 129 | + * 检查是否又在正在运行的活动 | |
| 130 | + */ | |
| 131 | + public void checkIsHasRunningRace() { | |
| 132 | + //先判断有没有数据 | |
| 133 | + CollUserStepEntity userStepEntity = CollStepUtil.getCollUserStepData(getContext(), CommonInfo.getUserId(getContext())); | |
| 134 | + if (null != userStepEntity) { | |
| 135 | + String eventId = CollCommonInfo.getStreetId(getContext()); | |
| 136 | + //判断赛事id是否相同 | |
| 137 | + String runStreetId = userStepEntity.getStreetId(); | |
| 138 | + //是相同赛事id | |
| 139 | + if (eventId.equals(runStreetId)) { | |
| 140 | + //赛事相同(询问用户是否继续 | |
| 141 | + SelectDialog selectDialog = new SelectDialog(getContext(), "是否继续运动", "否", new SelectDialog.DialogInterface() { | |
| 142 | + @Override | |
| 143 | + public void onClick(SelectDialog dialog) { | |
| 144 | + //删除数据 | |
| 145 | + CollStepUtil.clearRunData(getContext(), CollCommonInfo.getUserId(getContext())); | |
| 146 | + stopStepService(); | |
| 147 | + //清除数据 | |
| 148 | + CollCommonInfo.reset(getContext()); | |
| 149 | + dialog.dismiss(); | |
| 150 | + } | |
| 151 | + }, "是", new SelectDialog.DialogInterface() { | |
| 152 | + @Override | |
| 153 | + public void onClick(SelectDialog dialog) { | |
| 154 | + //继续运动 | |
| 155 | + dialog.dismiss(); | |
| 156 | + //检查百度是否正在运行 | |
| 157 | + checkBaiduServiceState(); | |
| 158 | + } | |
| 159 | + }); | |
| 160 | + selectDialog.setCancelable(false); | |
| 161 | + selectDialog.setCanceledOnTouchOutside(false); | |
| 162 | + selectDialog.show(); | |
| 163 | + } | |
| 164 | + //赛事id不同,但是有正在进行的赛事 | |
| 165 | + else { | |
| 166 | + //询问用户 | |
| 167 | + SelectDialog selectDialog = new SelectDialog(getContext(), "你正在进行另一赛事,是否回到该赛事?", "否", new SelectDialog.DialogInterface() { | |
| 168 | + @Override | |
| 169 | + public void onClick(SelectDialog dialog) { | |
| 170 | + //删除数据 | |
| 171 | + CollStepUtil.clearRunData(getContext(), CollCommonInfo.getUserId(getContext())); | |
| 172 | + stopStepService(); | |
| 173 | + //清除数据 | |
| 174 | + CollCommonInfo.reset(getContext()); | |
| 175 | + dialog.dismiss(); | |
| 176 | + } | |
| 177 | + }, "是", new SelectDialog.DialogInterface() { | |
| 178 | + @Override | |
| 179 | + public void onClick(SelectDialog dialog) { | |
| 180 | + //继续运动 | |
| 181 | + dialog.dismiss(); | |
| 182 | + //检查百度是否正在运行 | |
| 183 | + checkBaiduServiceState(); | |
| 184 | + } | |
| 185 | + }); | |
| 186 | + selectDialog.setCancelable(false); | |
| 187 | + selectDialog.setCanceledOnTouchOutside(false); | |
| 188 | + selectDialog.show(); | |
| 189 | + } | |
| 190 | + } | |
| 191 | + } | |
| 192 | + | |
| 193 | + /** | |
| 125 | 194 | * 启动计步服务 |
| 126 | 195 | */ |
| 127 | 196 | public void startStepService(Context context) { | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/activity/CollRunRaceDetailActivity.java
| ... | ... | @@ -11,8 +11,13 @@ import com.cnlive.libs.base.ui.QMUIFragment; |
| 11 | 11 | import com.cnlive.libs.base.ui.QMUIFragmentActivity; |
| 12 | 12 | import com.cnlive.libs.base.util.StatusBarUtil; |
| 13 | 13 | import com.cnlive.libs.base.util.StatusBarUtil2; |
| 14 | +import com.cnlive.moudle.collectionTrace.commonInfo.CollCommonInfo; | |
| 14 | 15 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunMainFragment; |
| 15 | 16 | import com.cnlive.moudle.collectionTrace.ui.fragment.CollRunRaceDetailFragment; |
| 17 | +import com.cnlive.moudle.collectionTrace.utils.CollStepUtil; | |
| 18 | +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; | |
| 19 | +import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; | |
| 20 | +import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; | |
| 16 | 21 | import com.cnlive.moudle.pedometer.utils.CheckUtil; |
| 17 | 22 | import com.example.moudle_pedometer.R; |
| 18 | 23 | |
| ... | ... | @@ -26,9 +31,11 @@ public class CollRunRaceDetailActivity extends QMUIFragmentActivity { |
| 26 | 31 | private final String TAG = "CollRunRaceDetail"; |
| 27 | 32 | private QMUIFragment fragment; |
| 28 | 33 | |
| 29 | - public static void newInstance(Context context,String eventId){ | |
| 30 | - Intent intent = new Intent(context,CollRunRaceDetailActivity.class); | |
| 31 | - intent.putExtra("eventId",eventId); | |
| 34 | + public static void newInstance(Context context, String eventId) { | |
| 35 | + CollCommonInfo.setStreetId(context, eventId); | |
| 36 | + //先判断有没有数据 | |
| 37 | + Intent intent = new Intent(context, CollRunRaceDetailActivity.class); | |
| 38 | + intent.putExtra("eventId", eventId); | |
| 32 | 39 | context.startActivity(intent); |
| 33 | 40 | } |
| 34 | 41 | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/activity/CollRunningFinishActivity.java
| ... | ... | @@ -31,15 +31,13 @@ public class CollRunningFinishActivity extends QMUIFragmentActivity { |
| 31 | 31 | protected void onCreate(Bundle savedInstanceState) { |
| 32 | 32 | super.onCreate(savedInstanceState); |
| 33 | 33 | StatusBarUtil2.setColor(this, getResources().getColor(R.color.run_main_bg), 0); |
| 34 | - if (getIntent().getSerializableExtra("runningFinishBean") != null) { | |
| 35 | - addFragment((RunningFinishBean) getIntent().getSerializableExtra("runningFinishBean")); | |
| 36 | - } | |
| 34 | + addFragment(); | |
| 37 | 35 | |
| 38 | 36 | |
| 39 | 37 | } |
| 40 | 38 | |
| 41 | - private void addFragment(RunningFinishBean runningFinishBean) { | |
| 42 | - QMUIFragment fragment =RunningFinishFragment.instance(runningFinishBean); | |
| 39 | + private void addFragment() { | |
| 40 | + QMUIFragment fragment =new CollRunningFinishFragment(); | |
| 43 | 41 | getSupportFragmentManager().beginTransaction() |
| 44 | 42 | .add(getContextViewId(), fragment, fragment.getClass().getSimpleName()) |
| 45 | 43 | .addToBackStack(fragment.getClass().getSimpleName()) |
| ... | ... | @@ -54,9 +52,8 @@ public class CollRunningFinishActivity extends QMUIFragmentActivity { |
| 54 | 52 | } |
| 55 | 53 | } |
| 56 | 54 | |
| 57 | - public static void startActivity(Activity activity, RunningFinishBean runningFinishBean) { | |
| 55 | + public static void startActivity(Activity activity) { | |
| 58 | 56 | Intent intent = new Intent(activity, CollRunningFinishActivity.class); |
| 59 | - intent.putExtra("runningFinishBean", runningFinishBean); | |
| 60 | 57 | activity.startActivity(intent); |
| 61 | 58 | } |
| 62 | 59 | } | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/adapter/CollFinishDetaiAdapter.java
0 → 100644
| 1 | +package com.cnlive.moudle.collectionTrace.ui.adapter; | |
| 2 | + | |
| 3 | +import android.app.Activity; | |
| 4 | +import android.support.annotation.NonNull; | |
| 5 | +import android.support.v7.widget.RecyclerView; | |
| 6 | +import android.view.LayoutInflater; | |
| 7 | +import android.view.View; | |
| 8 | +import android.view.ViewGroup; | |
| 9 | +import android.widget.TextView; | |
| 10 | + | |
| 11 | +import com.cnlive.moudle.collectionTrace.model.CollectPoint; | |
| 12 | +import com.example.moudle_pedometer.R; | |
| 13 | + | |
| 14 | +import java.util.ArrayList; | |
| 15 | +import java.util.List; | |
| 16 | + | |
| 17 | +/** | |
| 18 | + * @author ShinnyYang | |
| 19 | + */ | |
| 20 | +public class CollFinishDetaiAdapter extends RecyclerView.Adapter<CollFinishDetaiAdapter.MyViewHolder> { | |
| 21 | + | |
| 22 | + private List<CollectPoint> list = new ArrayList<>(); | |
| 23 | + private Activity context; | |
| 24 | + | |
| 25 | + public CollFinishDetaiAdapter(Activity context, List<CollectPoint> list) { | |
| 26 | + this.list = list; | |
| 27 | + this.context = context; | |
| 28 | + } | |
| 29 | + | |
| 30 | + @NonNull | |
| 31 | + @Override | |
| 32 | + public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { | |
| 33 | + View view = LayoutInflater.from(context).inflate(R.layout.item_coll_take_point, viewGroup, false); | |
| 34 | + return new MyViewHolder(view); | |
| 35 | + } | |
| 36 | + | |
| 37 | + @Override | |
| 38 | + public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) { | |
| 39 | + //设置打点名称 | |
| 40 | + if (null == myViewHolder) { | |
| 41 | + return; | |
| 42 | + } | |
| 43 | + if (0 == i) { | |
| 44 | + //起点 | |
| 45 | + myViewHolder.view_circle.setBackground(context.getResources().getDrawable(R.drawable.shape_circle_green)); | |
| 46 | + myViewHolder.tv_point_type_tip.setText(context.getResources().getString(R.string.layout_street_start_point)); | |
| 47 | + } else if (list.size() - 1 == i) { | |
| 48 | + //终点 | |
| 49 | + myViewHolder.view_circle.setBackground(context.getResources().getDrawable(R.drawable.shape_circle_red)); | |
| 50 | + myViewHolder.tv_point_type_tip.setText(context.getResources().getString(R.string.layout_street_end_point)); | |
| 51 | + myViewHolder.view_line.setVisibility(View.GONE); | |
| 52 | + } else { | |
| 53 | + //打点 | |
| 54 | + myViewHolder.view_circle.setBackground(context.getResources().getDrawable(R.drawable.shape_circle_gray)); | |
| 55 | +// myViewHolder.tv_point_type_tip.setText(context.getResources().getString(R.string.layout_coll_take_point_text)); | |
| 56 | + if (i > 0) { | |
| 57 | + myViewHolder.tv_point_type_tip.setText("(打点" + i + ")"); | |
| 58 | + } | |
| 59 | + | |
| 60 | + } | |
| 61 | + myViewHolder.tv_take_point.setText(list.get(i).getPointName()); | |
| 62 | + } | |
| 63 | + | |
| 64 | + @Override | |
| 65 | + public int getItemCount() { | |
| 66 | + return list.size(); | |
| 67 | + } | |
| 68 | + | |
| 69 | + class MyViewHolder extends RecyclerView.ViewHolder { | |
| 70 | + | |
| 71 | + public View view_circle; | |
| 72 | + public TextView tv_point_type_tip; | |
| 73 | + public TextView tv_take_point; | |
| 74 | + public View view_line; | |
| 75 | + | |
| 76 | + | |
| 77 | + public MyViewHolder(@NonNull View itemView) { | |
| 78 | + super(itemView); | |
| 79 | + this.view_circle = (View) itemView.findViewById(R.id.view_circle); | |
| 80 | + this.tv_point_type_tip = (TextView) itemView.findViewById(R.id.tv_point_type_tip); | |
| 81 | + this.tv_take_point = (TextView) itemView.findViewById(R.id.tv_take_point); | |
| 82 | + this.view_line = (View) itemView.findViewById(R.id.view_line); | |
| 83 | + } | |
| 84 | + } | |
| 85 | + | |
| 86 | +} | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/CollRunningFinishFragment.java
| ... | ... | @@ -7,24 +7,28 @@ import android.view.View; |
| 7 | 7 | import com.cnlive.libs.base.ui.QMUIFragment; |
| 8 | 8 | import com.cnlive.moudle.collectionTrace.frame.presenter.CollRunningFinishFragmetPresenter; |
| 9 | 9 | import com.cnlive.moudle.collectionTrace.frame.view.CollRunningFinishFragmentView; |
| 10 | +import com.cnlive.moudle.collectionTrace.utils.CollStepUtil; | |
| 11 | +import com.cnlive.moudle.pedometer.commonInfo.CommonInfo; | |
| 10 | 12 | import com.cnlive.moudle.pedometer.frame.presenter.RunningFinishFragmetPresenter; |
| 11 | 13 | import com.cnlive.moudle.pedometer.model.RunningFinishBean; |
| 14 | +import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; | |
| 12 | 15 | import com.example.moudle_pedometer.R; |
| 16 | +import com.example.moudle_pedometer.databinding.FragmentCollFinishRunMapBinding; | |
| 13 | 17 | import com.example.moudle_pedometer.databinding.FragmentFinishRunMapBinding; |
| 14 | 18 | |
| 15 | -public class CollRunningFinishFragment extends QMUIFragment<CollRunningFinishFragmentView, CollRunningFinishFragmetPresenter, FragmentFinishRunMapBinding> { | |
| 16 | - private RunningFinishBean runningFinishBean; | |
| 19 | +public class CollRunningFinishFragment extends QMUIFragment<CollRunningFinishFragmentView, CollRunningFinishFragmetPresenter, FragmentCollFinishRunMapBinding> { | |
| 20 | +// private RunningFinishBean runningFinishBean; | |
| 17 | 21 | |
| 18 | - public static CollRunningFinishFragment instance(RunningFinishBean runningFinishBean) { | |
| 19 | - CollRunningFinishFragment fragment = new CollRunningFinishFragment(); | |
| 20 | - Bundle bundle = null; | |
| 21 | - if (runningFinishBean != null) { | |
| 22 | - bundle = new Bundle(); | |
| 23 | - bundle.putSerializable("runningFinishBean", runningFinishBean); | |
| 24 | - } | |
| 25 | - fragment.setArguments(bundle); | |
| 26 | - return fragment; | |
| 27 | - } | |
| 22 | +// public static CollRunningFinishFragment instance(RunningFinishBean runningFinishBean) { | |
| 23 | +// CollRunningFinishFragment fragment = new CollRunningFinishFragment(); | |
| 24 | +// Bundle bundle = null; | |
| 25 | +// if (runningFinishBean != null) { | |
| 26 | +// bundle = new Bundle(); | |
| 27 | +// bundle.putSerializable("runningFinishBean", runningFinishBean); | |
| 28 | +// } | |
| 29 | +// fragment.setArguments(bundle); | |
| 30 | +// return fragment; | |
| 31 | +// } | |
| 28 | 32 | |
| 29 | 33 | @Override |
| 30 | 34 | protected int getToolbarId() { |
| ... | ... | @@ -38,21 +42,20 @@ public class CollRunningFinishFragment extends QMUIFragment<CollRunningFinishFra |
| 38 | 42 | |
| 39 | 43 | @Override |
| 40 | 44 | protected int getLayoutId() { |
| 41 | - return R.layout.fragment_finish_run_map; | |
| 45 | + return R.layout.fragment_coll_finish_run_map; | |
| 42 | 46 | } |
| 43 | 47 | |
| 44 | 48 | @Override |
| 45 | 49 | public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { |
| 46 | 50 | super.onViewCreated(view, savedInstanceState); |
| 47 | - if (getArguments() != null) { | |
| 48 | - runningFinishBean = (RunningFinishBean) getArguments().getSerializable("runningFinishBean"); | |
| 49 | - if (runningFinishBean != null) { | |
| 50 | - if (getMvpView() != null) { | |
| 51 | - getMvpView().initView(runningFinishBean); | |
| 52 | - } | |
| 51 | + CollUserStepEntity collUserStepEntity = CollStepUtil.getCollUserStepData(getContext(), CommonInfo.getUserId(getContext())); | |
| 52 | + if (collUserStepEntity != null) { | |
| 53 | + if (getMvpView() != null) { | |
| 54 | + getMvpView().initView(collUserStepEntity); | |
| 53 | 55 | } |
| 54 | 56 | } |
| 55 | 57 | } |
| 58 | + | |
| 56 | 59 | /** |
| 57 | 60 | * 屏蔽边缘返回 |
| 58 | 61 | * 杨帅 | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/StartTraceFragment.java
| ... | ... | @@ -77,6 +77,7 @@ public class StartTraceFragment extends QMUIFragment<StartTraceFragmentView, Sta |
| 77 | 77 | //为系统的方向传感器注册监听器 |
| 78 | 78 | mSensorManager.registerListener(getMvpView(), mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), |
| 79 | 79 | SensorManager.SENSOR_DELAY_UI); |
| 80 | + getMvpView().checkIsHasRunningRace(); | |
| 80 | 81 | } |
| 81 | 82 | } |
| 82 | 83 | |
| ... | ... | @@ -118,7 +119,8 @@ public class StartTraceFragment extends QMUIFragment<StartTraceFragmentView, Sta |
| 118 | 119 | if (getMvpView() != null) { |
| 119 | 120 | QMUITipDialogUtil.dismessDialog(); |
| 120 | 121 | if (null != getMvpView()) { |
| 121 | - CollRunningMapActivity.startActivity(getActivity(),getMvpView().runRaceDetailInfo); | |
| 122 | + CollRunningMapActivity.startActivity(getActivity(), getMvpView().runRaceDetailInfo); | |
| 123 | + getActivity().finish(); | |
| 122 | 124 | } |
| 123 | 125 | } |
| 124 | 126 | } | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/utils/CollStepUtil.java
| ... | ... | @@ -12,6 +12,7 @@ import com.cnlive.moudle.pedometer.sql.db.DbCore; |
| 12 | 12 | import com.cnlive.moudle.pedometer.sql.entity.CollUserStepEntity; |
| 13 | 13 | import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; |
| 14 | 14 | import com.cnlive.moudle.pedometer.utils.GsonUtil; |
| 15 | +import com.cnlive.moudle.pedometer.utils.TimeUtil; | |
| 15 | 16 | |
| 16 | 17 | import java.text.SimpleDateFormat; |
| 17 | 18 | import java.util.ArrayList; |
| ... | ... | @@ -33,6 +34,66 @@ public class CollStepUtil { |
| 33 | 34 | } |
| 34 | 35 | |
| 35 | 36 | /** |
| 37 | + * 设置用户整个赛事用时 | |
| 38 | + * | |
| 39 | + * @param context | |
| 40 | + * @param uid | |
| 41 | + */ | |
| 42 | + public static void setEmployTimeStamp(Context context, String uid, String employTime) { | |
| 43 | + //先获取有没有 | |
| 44 | + if (getCollUserStepData(context, uid) != null) { | |
| 45 | + CollUserStepEntity entity = getCollUserStepData(context, uid); | |
| 46 | + if (null != entity) { | |
| 47 | + //设置用户完成时间 | |
| 48 | + entity.setEmployTime(employTime); | |
| 49 | + //更新数据 | |
| 50 | + updateCollStepData(context, entity); | |
| 51 | + } | |
| 52 | + } | |
| 53 | + } | |
| 54 | + | |
| 55 | + /** | |
| 56 | + * 设置用户结束地点数据 | |
| 57 | + * | |
| 58 | + * @param context | |
| 59 | + * @param uid | |
| 60 | + * @param collectPoint | |
| 61 | + */ | |
| 62 | + public static void setCollEndPointData(Context context, String uid, CollectPoint collectPoint) { | |
| 63 | + //先获取有没有 | |
| 64 | + if (getCollUserStepData(context, uid) != null) { | |
| 65 | + CollUserStepEntity entity = getCollUserStepData(context, uid); | |
| 66 | + if (null != entity) { | |
| 67 | + //设置用户结束数据 | |
| 68 | + entity.setCollEndPointData(GsonUtil.GsonString(collectPoint)); | |
| 69 | + //更新数据 | |
| 70 | + updateCollStepData(context, entity); | |
| 71 | + } | |
| 72 | + } | |
| 73 | + } | |
| 74 | + | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * 设置用户结束时间 | |
| 78 | + * | |
| 79 | + * @param context | |
| 80 | + * @param uid | |
| 81 | + * @param userFinishTime | |
| 82 | + */ | |
| 83 | + public static void setCollUserFinishTimeStamp(Context context, String uid, long userFinishTime) { | |
| 84 | + //先获取有没有 | |
| 85 | + if (getCollUserStepData(context, uid) != null) { | |
| 86 | + CollUserStepEntity entity = getCollUserStepData(context, uid); | |
| 87 | + if (null != entity) { | |
| 88 | + //设置用户完成时间 | |
| 89 | + entity.setFinishTimeStamp(userFinishTime); | |
| 90 | + //更新数据 | |
| 91 | + updateCollStepData(context, entity); | |
| 92 | + } | |
| 93 | + } | |
| 94 | + } | |
| 95 | + | |
| 96 | + /** | |
| 36 | 97 | * 获取打点详细 |
| 37 | 98 | * |
| 38 | 99 | * @param context |
| ... | ... | @@ -304,7 +365,7 @@ public class CollStepUtil { |
| 304 | 365 | public static void clearRunData(Context context, String uid) { |
| 305 | 366 | DbCore.init(context, dbName); |
| 306 | 367 | String CURRENT_DATE = getTodayDate(); |
| 307 | - List<CollUserStepEntity> list = DbCore.getDaoSession().getCollUserStepEntityDao().queryBuilder().where(CollUserStepEntityDao.Properties.UserId.eq(uid), CollUserStepEntityDao.Properties.Date.eq(CURRENT_DATE)).list(); | |
| 368 | + List<CollUserStepEntity> list = DbCore.getDaoSession().getCollUserStepEntityDao().queryBuilder().where(CollUserStepEntityDao.Properties.UserId.eq(uid)).list(); | |
| 308 | 369 | if (list != null && list.size() > 0) { |
| 309 | 370 | Log.e(TAG, "clearRunData: " + list.size()); |
| 310 | 371 | DbCore.getDaoSession().getCollUserStepEntityDao().deleteByKey(list.get(0).getUserId()); | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/dao/CollUserStepEntityDao.java
| ... | ... | @@ -46,6 +46,8 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 46 | 46 | public final static Property EndLatLng = new Property(19, String.class, "endLatLng", false, "END_LAT_LNG"); |
| 47 | 47 | public final static Property IsArriveEndPoint = new Property(20, boolean.class, "isArriveEndPoint", false, "IS_ARRIVE_END_POINT"); |
| 48 | 48 | public final static Property CollStartPointData = new Property(21, String.class, "collStartPointData", false, "COLL_START_POINT_DATA"); |
| 49 | + public final static Property CollEndPointData = new Property(22, String.class, "collEndPointData", false, "COLL_END_POINT_DATA"); | |
| 50 | + public final static Property EmployTime = new Property(23, String.class, "employTime", false, "EMPLOY_TIME"); | |
| 49 | 51 | } |
| 50 | 52 | |
| 51 | 53 | |
| ... | ... | @@ -82,7 +84,9 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 82 | 84 | "\"STREET_TITLE\" TEXT," + // 18: streetTitle |
| 83 | 85 | "\"END_LAT_LNG\" TEXT," + // 19: endLatLng |
| 84 | 86 | "\"IS_ARRIVE_END_POINT\" INTEGER NOT NULL ," + // 20: isArriveEndPoint |
| 85 | - "\"COLL_START_POINT_DATA\" TEXT);"); // 21: collStartPointData | |
| 87 | + "\"COLL_START_POINT_DATA\" TEXT," + // 21: collStartPointData | |
| 88 | + "\"COLL_END_POINT_DATA\" TEXT," + // 22: collEndPointData | |
| 89 | + "\"EMPLOY_TIME\" TEXT);"); // 23: employTime | |
| 86 | 90 | } |
| 87 | 91 | |
| 88 | 92 | /** Drops the underlying database table. */ |
| ... | ... | @@ -156,6 +160,16 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 156 | 160 | if (collStartPointData != null) { |
| 157 | 161 | stmt.bindString(22, collStartPointData); |
| 158 | 162 | } |
| 163 | + | |
| 164 | + String collEndPointData = entity.getCollEndPointData(); | |
| 165 | + if (collEndPointData != null) { | |
| 166 | + stmt.bindString(23, collEndPointData); | |
| 167 | + } | |
| 168 | + | |
| 169 | + String employTime = entity.getEmployTime(); | |
| 170 | + if (employTime != null) { | |
| 171 | + stmt.bindString(24, employTime); | |
| 172 | + } | |
| 159 | 173 | } |
| 160 | 174 | |
| 161 | 175 | @Override |
| ... | ... | @@ -223,6 +237,16 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 223 | 237 | if (collStartPointData != null) { |
| 224 | 238 | stmt.bindString(22, collStartPointData); |
| 225 | 239 | } |
| 240 | + | |
| 241 | + String collEndPointData = entity.getCollEndPointData(); | |
| 242 | + if (collEndPointData != null) { | |
| 243 | + stmt.bindString(23, collEndPointData); | |
| 244 | + } | |
| 245 | + | |
| 246 | + String employTime = entity.getEmployTime(); | |
| 247 | + if (employTime != null) { | |
| 248 | + stmt.bindString(24, employTime); | |
| 249 | + } | |
| 226 | 250 | } |
| 227 | 251 | |
| 228 | 252 | @Override |
| ... | ... | @@ -254,7 +278,9 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 254 | 278 | cursor.isNull(offset + 18) ? null : cursor.getString(offset + 18), // streetTitle |
| 255 | 279 | cursor.isNull(offset + 19) ? null : cursor.getString(offset + 19), // endLatLng |
| 256 | 280 | cursor.getShort(offset + 20) != 0, // isArriveEndPoint |
| 257 | - cursor.isNull(offset + 21) ? null : cursor.getString(offset + 21) // collStartPointData | |
| 281 | + cursor.isNull(offset + 21) ? null : cursor.getString(offset + 21), // collStartPointData | |
| 282 | + cursor.isNull(offset + 22) ? null : cursor.getString(offset + 22), // collEndPointData | |
| 283 | + cursor.isNull(offset + 23) ? null : cursor.getString(offset + 23) // employTime | |
| 258 | 284 | ); |
| 259 | 285 | return entity; |
| 260 | 286 | } |
| ... | ... | @@ -283,6 +309,8 @@ public class CollUserStepEntityDao extends AbstractDao<CollUserStepEntity, Strin |
| 283 | 309 | entity.setEndLatLng(cursor.isNull(offset + 19) ? null : cursor.getString(offset + 19)); |
| 284 | 310 | entity.setIsArriveEndPoint(cursor.getShort(offset + 20) != 0); |
| 285 | 311 | entity.setCollStartPointData(cursor.isNull(offset + 21) ? null : cursor.getString(offset + 21)); |
| 312 | + entity.setCollEndPointData(cursor.isNull(offset + 22) ? null : cursor.getString(offset + 22)); | |
| 313 | + entity.setEmployTime(cursor.isNull(offset + 23) ? null : cursor.getString(offset + 23)); | |
| 286 | 314 | } |
| 287 | 315 | |
| 288 | 316 | @Override | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/sql/entity/CollUserStepEntity.java
| ... | ... | @@ -29,13 +29,14 @@ public class CollUserStepEntity { |
| 29 | 29 | private String endLatLng;//终点坐标 |
| 30 | 30 | private boolean isArriveEndPoint;//是否到达终点 |
| 31 | 31 | private String collStartPointData;//运营打点名称和经纬度 |
| 32 | - | |
| 33 | - @Generated(hash = 1720877205) | |
| 34 | - public CollUserStepEntity(String userId, String date, String stepCount, long recordTime, double caloriesCount, | |
| 35 | - String serverTraceData, long startTimeStamp, long finishTimeStamp, String streetId, int pauseCount, | |
| 36 | - long userPauseTimeStamp, long chronometerBase, long queryTraceStartTime, long queryTraceEndTime, | |
| 37 | - String queryEntityName, long continueTime, long fenceId, String importPoint, String streetTitle, | |
| 38 | - String endLatLng, boolean isArriveEndPoint, String collStartPointData) { | |
| 32 | + private String collEndPointData;//运营结束打点名称和经纬度 | |
| 33 | + private String employTime;//用时时间戳 | |
| 34 | + | |
| 35 | + @Generated(hash = 148375276) | |
| 36 | + public CollUserStepEntity(String userId, String date, String stepCount, long recordTime, double caloriesCount, String serverTraceData, | |
| 37 | + long startTimeStamp, long finishTimeStamp, String streetId, int pauseCount, long userPauseTimeStamp, long chronometerBase, | |
| 38 | + long queryTraceStartTime, long queryTraceEndTime, String queryEntityName, long continueTime, long fenceId, String importPoint, | |
| 39 | + String streetTitle, String endLatLng, boolean isArriveEndPoint, String collStartPointData, String collEndPointData, String employTime) { | |
| 39 | 40 | this.userId = userId; |
| 40 | 41 | this.date = date; |
| 41 | 42 | this.stepCount = stepCount; |
| ... | ... | @@ -58,6 +59,8 @@ public class CollUserStepEntity { |
| 58 | 59 | this.endLatLng = endLatLng; |
| 59 | 60 | this.isArriveEndPoint = isArriveEndPoint; |
| 60 | 61 | this.collStartPointData = collStartPointData; |
| 62 | + this.collEndPointData = collEndPointData; | |
| 63 | + this.employTime = employTime; | |
| 61 | 64 | } |
| 62 | 65 | |
| 63 | 66 | @Generated(hash = 681143087) |
| ... | ... | @@ -242,8 +245,21 @@ public class CollUserStepEntity { |
| 242 | 245 | this.collStartPointData = collStartPointData; |
| 243 | 246 | } |
| 244 | 247 | |
| 248 | + public String getCollEndPointData() { | |
| 249 | + return this.collEndPointData; | |
| 250 | + } | |
| 251 | + | |
| 252 | + public void setCollEndPointData(String collEndPointData) { | |
| 253 | + this.collEndPointData = collEndPointData; | |
| 254 | + } | |
| 245 | 255 | |
| 256 | + public String getEmployTime() { | |
| 257 | + return this.employTime; | |
| 258 | + } | |
| 246 | 259 | |
| 260 | + public void setEmployTime(String employTime) { | |
| 261 | + this.employTime = employTime; | |
| 262 | + } | |
| 247 | 263 | |
| 248 | 264 | |
| 249 | 265 | } | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
| ... | ... | @@ -258,19 +258,19 @@ public class MyMapUtil { |
| 258 | 258 | int total = response.getTotal(); |
| 259 | 259 | Log.e(TAG, "onHistoryTrackCallback: " + response.getMessage()); |
| 260 | 260 | if (StatusCodes.SUCCESS != response.getStatus()) { |
| 261 | -// if (response.getStatus() == 14004) { | |
| 262 | - //给3次重新查询的机会 | |
| 263 | - if (queryNum < 4) { | |
| 264 | - //重新查询 | |
| 265 | -// new Handler().postDelayed(new Runnable() { | |
| 266 | -// @Override | |
| 267 | -// public void run() { | |
| 261 | + if (response.getStatus() == 14004) { | |
| 262 | + //给3次重新查询的机会 | |
| 263 | + if (queryNum < 4) { | |
| 264 | + //重新查询 | |
| 265 | + new Handler().postDelayed(new Runnable() { | |
| 266 | + @Override | |
| 267 | + public void run() { | |
| 268 | 268 | // //间隔3秒查一次 |
| 269 | - queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack); | |
| 270 | - queryNum++; | |
| 271 | -// } | |
| 272 | -// }, 1000); | |
| 273 | - | |
| 269 | + queryHistoryTrace(context, mClient, entityName, startTime, endTime, callBack); | |
| 270 | + queryNum++; | |
| 271 | + } | |
| 272 | + }, 1000); | |
| 273 | + } | |
| 274 | 274 | } else { |
| 275 | 275 | if (callBack != null) { |
| 276 | 276 | callBack.success(null); | ... | ... |
moudle_pedometer/src/main/res/layout/fragment_coll_finish_run_map.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | |
| 2 | +<layout xmlns:android="http://schemas.android.com/apk/res/android" | |
| 3 | + xmlns:app="http://schemas.android.com/apk/res-auto"> | |
| 4 | + | |
| 5 | + <FrameLayout | |
| 6 | + android:layout_width="match_parent" | |
| 7 | + android:layout_height="match_parent"> | |
| 8 | + | |
| 9 | + <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" | |
| 10 | + android:id="@+id/sliding_layout" | |
| 11 | + android:layout_width="match_parent" | |
| 12 | + android:layout_height="match_parent" | |
| 13 | + android:gravity="bottom" | |
| 14 | + sothree:umanoDragView="@+id/dragView" | |
| 15 | + sothree:umanoFadeColor="@color/black_20" | |
| 16 | + sothree:umanoOverlay="true" | |
| 17 | + sothree:umanoPanelHeight="310dp" | |
| 18 | + sothree:umanoParallaxOffset="0dp" | |
| 19 | + sothree:umanoScrollableView="@+id/rv_list" | |
| 20 | + sothree:umanoShadowHeight="0dp"> | |
| 21 | + | |
| 22 | + <!-- MAIN CONTENT --> | |
| 23 | + <FrameLayout | |
| 24 | + android:layout_width="match_parent" | |
| 25 | + android:layout_height="match_parent"> | |
| 26 | + | |
| 27 | + <com.baidu.mapapi.map.MapView | |
| 28 | + android:id="@+id/mapView" | |
| 29 | + android:layout_width="match_parent" | |
| 30 | + android:layout_height="match_parent"></com.baidu.mapapi.map.MapView> | |
| 31 | + <!--地图上面加一层类似于全透明黑色蒙版--> | |
| 32 | + <LinearLayout | |
| 33 | + android:layout_width="match_parent" | |
| 34 | + android:layout_height="match_parent" | |
| 35 | + android:background="#0D000000" | |
| 36 | + android:clickable="false" | |
| 37 | + android:focusable="false" | |
| 38 | + android:focusableInTouchMode="false"></LinearLayout> | |
| 39 | + | |
| 40 | + <FrameLayout | |
| 41 | + android:id="@+id/fl_back" | |
| 42 | + android:layout_width="55dp" | |
| 43 | + android:layout_height="55dp" | |
| 44 | + android:background="@drawable/button_fab_white" | |
| 45 | + android:focusable="true"> | |
| 46 | + | |
| 47 | + <ImageView | |
| 48 | + android:layout_width="12dp" | |
| 49 | + android:layout_height="20dp" | |
| 50 | + android:layout_gravity="center" | |
| 51 | + android:layout_marginLeft="-2dp" | |
| 52 | + android:background="@drawable/icon_back" | |
| 53 | + android:focusable="false" /> | |
| 54 | + </FrameLayout> | |
| 55 | + | |
| 56 | + <FrameLayout | |
| 57 | + android:layout_width="55dp" | |
| 58 | + android:layout_height="55dp" | |
| 59 | + android:layout_gravity="right" | |
| 60 | + android:background="@drawable/button_fab_white" | |
| 61 | + android:focusable="true" | |
| 62 | + android:visibility="gone"> | |
| 63 | + | |
| 64 | + <ImageView | |
| 65 | + android:layout_width="19dp" | |
| 66 | + android:layout_height="18dp" | |
| 67 | + android:layout_gravity="center" | |
| 68 | + android:background="@drawable/icon_share" /> | |
| 69 | + </FrameLayout> | |
| 70 | + <!----> | |
| 71 | + | |
| 72 | + | |
| 73 | + </FrameLayout> | |
| 74 | + | |
| 75 | + <!-- SLIDING LAYOUT --> | |
| 76 | + <FrameLayout | |
| 77 | + android:id="@+id/dragView" | |
| 78 | + android:layout_width="match_parent" | |
| 79 | + android:layout_height="wrap_content" | |
| 80 | + android:clickable="true" | |
| 81 | + android:focusable="false" | |
| 82 | + android:orientation="vertical"> | |
| 83 | + | |
| 84 | + | |
| 85 | + <LinearLayout | |
| 86 | + android:id="@+id/ll_root" | |
| 87 | + android:layout_width="match_parent" | |
| 88 | + android:layout_height="wrap_content" | |
| 89 | + android:layout_marginBottom="40dp" | |
| 90 | + android:orientation="vertical"> | |
| 91 | + | |
| 92 | + | |
| 93 | + <!--用户个人信息--> | |
| 94 | + <include | |
| 95 | + android:id="@+id/include_finish_user_info" | |
| 96 | + layout="@layout/layout_coll_finish_user_info" /> | |
| 97 | + </LinearLayout> | |
| 98 | + | |
| 99 | + | |
| 100 | + </FrameLayout> | |
| 101 | + </com.sothree.slidinguppanel.SlidingUpPanelLayout> | |
| 102 | + <!--按钮--> | |
| 103 | + <LinearLayout | |
| 104 | + android:id="@+id/rl_scrollView_startBtn" | |
| 105 | + android:layout_width="match_parent" | |
| 106 | + android:layout_height="40sp" | |
| 107 | + android:layout_gravity="bottom" | |
| 108 | + android:background="@color/green_round" | |
| 109 | + android:gravity="center" | |
| 110 | + android:tag="0"> | |
| 111 | + | |
| 112 | + | |
| 113 | + <TextView | |
| 114 | + android:id="@+id/tv_run_now" | |
| 115 | + android:layout_width="wrap_content" | |
| 116 | + android:layout_height="wrap_content" | |
| 117 | + android:layout_centerInParent="true" | |
| 118 | + android:layout_marginLeft="5dp" | |
| 119 | + android:clickable="false" | |
| 120 | + android:focusableInTouchMode="false" | |
| 121 | + android:tag="0" | |
| 122 | + android:text="确定轨迹" | |
| 123 | + android:textColor="@color/white" | |
| 124 | + android:textSize="18sp" /> | |
| 125 | + </LinearLayout> | |
| 126 | + </FrameLayout> | |
| 127 | +</layout> | |
| 0 | 128 | \ No newline at end of file | ... | ... |
moudle_pedometer/src/main/res/layout/item_coll_take_point.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | |
| 2 | +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
| 3 | + android:layout_width="match_parent" | |
| 4 | + android:layout_height="wrap_content" | |
| 5 | + android:orientation="vertical"> | |
| 6 | + | |
| 7 | + <LinearLayout | |
| 8 | + android:layout_width="match_parent" | |
| 9 | + android:layout_height="wrap_content" | |
| 10 | + android:gravity="center_vertical"> | |
| 11 | + | |
| 12 | + <View | |
| 13 | + android:id="@+id/view_circle" | |
| 14 | + android:layout_width="6dp" | |
| 15 | + android:layout_height="6dp" | |
| 16 | + android:layout_marginLeft="15dp" | |
| 17 | + android:background="@drawable/shape_circle_gray" /> | |
| 18 | + | |
| 19 | + <TextView | |
| 20 | + android:id="@+id/tv_point_type_tip" | |
| 21 | + android:layout_width="wrap_content" | |
| 22 | + android:layout_height="wrap_content" | |
| 23 | + android:layout_marginLeft="10dp" | |
| 24 | + android:text="@string/layout_coll_take_point_text" | |
| 25 | + android:textColor="@color/text_gray" | |
| 26 | + android:textSize="12sp" /> | |
| 27 | + | |
| 28 | + <TextView | |
| 29 | + android:id="@+id/tv_take_point" | |
| 30 | + android:layout_width="wrap_content" | |
| 31 | + android:layout_height="wrap_content" | |
| 32 | + android:layout_marginLeft="10dp" | |
| 33 | + android:text="--" | |
| 34 | + android:textColor="@color/black" | |
| 35 | + android:textSize="12sp" /> | |
| 36 | + </LinearLayout> | |
| 37 | + <!--竖线--> | |
| 38 | + <View | |
| 39 | + android:id="@+id/view_line" | |
| 40 | + android:layout_width="1dp" | |
| 41 | + android:layout_height="18dp" | |
| 42 | + android:layout_marginLeft="17dp" | |
| 43 | + android:layout_marginTop="-3dp" | |
| 44 | + android:background="@color/vertical_line" /> | |
| 45 | +</LinearLayout> | |
| 0 | 46 | \ No newline at end of file | ... | ... |
moudle_pedometer/src/main/res/layout/layout_coll_finish_user_info.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="utf-8"?> | |
| 2 | +<layout xmlns:android="http://schemas.android.com/apk/res/android"> | |
| 3 | + | |
| 4 | + <FrameLayout xmlns:app="http://schemas.android.com/apk/res-auto" | |
| 5 | + android:layout_width="match_parent" | |
| 6 | + android:layout_height="match_parent"> | |
| 7 | + | |
| 8 | + <LinearLayout | |
| 9 | + android:layout_width="match_parent" | |
| 10 | + android:layout_height="match_parent" | |
| 11 | + android:layout_marginTop="30dp" | |
| 12 | + android:background="@color/white" | |
| 13 | + android:orientation="vertical"> | |
| 14 | + | |
| 15 | + <TextView | |
| 16 | + android:id="@+id/tv_user_nickName" | |
| 17 | + android:layout_width="wrap_content" | |
| 18 | + android:layout_height="wrap_content" | |
| 19 | + android:layout_marginLeft="80dp" | |
| 20 | + android:layout_marginTop="10dp" | |
| 21 | + android:text="--" | |
| 22 | + android:textColor="@color/text_black" | |
| 23 | + android:textSize="13sp" /> | |
| 24 | + <!----> | |
| 25 | + <LinearLayout | |
| 26 | + android:layout_width="match_parent" | |
| 27 | + android:layout_height="wrap_content" | |
| 28 | + android:gravity="center_vertical"> | |
| 29 | + | |
| 30 | + <LinearLayout | |
| 31 | + android:layout_width="0dp" | |
| 32 | + android:layout_height="wrap_content" | |
| 33 | + android:layout_weight="1" | |
| 34 | + android:orientation="vertical"> | |
| 35 | + | |
| 36 | + <TextView | |
| 37 | + android:id="@+id/tv_street_name" | |
| 38 | + android:layout_width="wrap_content" | |
| 39 | + android:layout_height="wrap_content" | |
| 40 | + android:layout_marginLeft="15dp" | |
| 41 | + android:layout_marginTop="15dp" | |
| 42 | + android:text="--" | |
| 43 | + android:textColor="@color/text_black" | |
| 44 | + android:textSize="15sp" /> | |
| 45 | + | |
| 46 | + <TextView | |
| 47 | + android:id="@+id/tv_date" | |
| 48 | + android:layout_width="wrap_content" | |
| 49 | + android:layout_height="wrap_content" | |
| 50 | + android:layout_marginLeft="15dp" | |
| 51 | + android:layout_marginTop="5dp" | |
| 52 | + android:text="--" | |
| 53 | + android:textColor="@color/text_gray" | |
| 54 | + android:textSize="10sp" /> | |
| 55 | + </LinearLayout> | |
| 56 | + <!----> | |
| 57 | + <LinearLayout | |
| 58 | + android:layout_width="0dp" | |
| 59 | + android:layout_height="wrap_content" | |
| 60 | + android:layout_weight="1" | |
| 61 | + android:gravity="right|bottom"> | |
| 62 | + | |
| 63 | + <TextView | |
| 64 | + android:id="@+id/tv_distance" | |
| 65 | + android:layout_width="wrap_content" | |
| 66 | + android:layout_height="wrap_content" | |
| 67 | + android:layout_marginRight="10dp" | |
| 68 | + android:text="--" | |
| 69 | + android:textColor="@color/text_black" | |
| 70 | + android:textSize="45sp" | |
| 71 | + android:textStyle="bold" /> | |
| 72 | + | |
| 73 | + <TextView | |
| 74 | + android:layout_width="wrap_content" | |
| 75 | + android:layout_height="wrap_content" | |
| 76 | + android:layout_marginRight="15dp" | |
| 77 | + android:text="公里" | |
| 78 | + android:textColor="@color/text_black" | |
| 79 | + android:textSize="15sp" /> | |
| 80 | + </LinearLayout> | |
| 81 | + <!----> | |
| 82 | + </LinearLayout> | |
| 83 | + <!--横线--> | |
| 84 | + <View | |
| 85 | + android:layout_width="match_parent" | |
| 86 | + android:layout_height="1dp" | |
| 87 | + android:layout_marginLeft="10dp" | |
| 88 | + android:layout_marginTop="10dp" | |
| 89 | + android:layout_marginRight="10dp" | |
| 90 | + android:background="@color/line" /> | |
| 91 | + <!--起点--> | |
| 92 | + <!--打点--> | |
| 93 | + <LinearLayout | |
| 94 | + android:layout_width="match_parent" | |
| 95 | + android:layout_height="wrap_content" | |
| 96 | + android:layout_marginTop="-3dp" | |
| 97 | + android:gravity="center_vertical"> | |
| 98 | + | |
| 99 | + <android.support.v7.widget.RecyclerView | |
| 100 | + android:id="@+id/rv_list" | |
| 101 | + android:layout_width="match_parent" | |
| 102 | + android:layout_height="wrap_content" | |
| 103 | + android:paddingTop="10dp" | |
| 104 | + android:paddingBottom="10dp"></android.support.v7.widget.RecyclerView> | |
| 105 | + </LinearLayout> | |
| 106 | + <!----> | |
| 107 | + </LinearLayout> | |
| 108 | + | |
| 109 | + <com.qmuiteam.qmui.widget.QMUIRadiusImageView | |
| 110 | + android:id="@+id/qm_iv_icon" | |
| 111 | + android:layout_width="60dp" | |
| 112 | + android:layout_height="60dp" | |
| 113 | + android:layout_marginLeft="10dp" | |
| 114 | + android:background="@drawable/tc_ic_workout_level_adjust_coach" | |
| 115 | + app:qmui_corner_radius="100dp" /> | |
| 116 | + </FrameLayout> | |
| 117 | +</layout> | |
| 0 | 118 | \ No newline at end of file | ... | ... |
moudle_pedometer/src/main/res/values/strings.xml
| ... | ... | @@ -90,6 +90,7 @@ |
| 90 | 90 | <string name="no_fail_line_text_tip">没有上传失败的路线哦</string> |
| 91 | 91 | <string name="run_race_far_tip">您距离起点较远\n请到达起点附近再开始</string> |
| 92 | 92 | <string name="run_race_arrive_end_tip">您已到达终点附近\n可以结束运动了</string> |
| 93 | + <string name="layout_coll_take_point_text">(打点)</string> | |
| 93 | 94 | |
| 94 | 95 | |
| 95 | 96 | </resources> | ... | ... |