Commit de788c92fd645a02654e2b0bac8d7b5cf206bab3

Authored by 杨帅
1 parent 045ca6f4

1 增加用户到达终点语音震动提示

2 修改打点逻辑
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/frame/presenter/CollRunningFinishFragmetPresenter.java
... ... @@ -66,12 +66,12 @@ public class CollRunningFinishFragmetPresenter extends MvpBasePresenter<CollRunn
66 66 endPoint = GsonUtil.GsonToBean(userStepEntity.getCollEndPointData(), CollectPoint.class);
67 67 }
68 68 if (null != startPoint) {
69   - collectPoints.add(0, startPoint);
  69 +// collectPoints.add(0, startPoint);
70 70 //起点
71 71 paramsMap.put("startLocation", startPoint.getPointName());
72 72 }
73 73 if (null != endPoint) {
74   - collectPoints.add(endPoint);
  74 +// collectPoints.add(endPoint);
75 75 // 终点
76 76 paramsMap.put("endLocation", endPoint.getPointName());
77 77  
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/collectionTrace/ui/fragment/CollRunningMapFragment.java
... ... @@ -186,7 +186,7 @@ public class CollRunningMapFragment extends QMUIFragment<CollRunningMapFragmentV
186 186 if (mVibrator != null) {
187 187 //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
188 188 //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
189   - mVibrator.vibrate(new long[]{100, 1000, 100, 1000}, -1);
  189 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
190 190 }
191 191 if (tipDialog != null) {
192 192 tipDialog.show();
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/ALLScoreDetailFragmentView.java
... ... @@ -89,7 +89,7 @@ public class ALLScoreDetailFragmentView implements MvpView {
89 89 });
90 90 }
91 91  
92   - public void initMap() {
  92 + public void initMap(MapCallBack mapCallBack) {
93 93 this.mMapView = fragment.binding.mapView;
94 94 if (baiduMap == null) {
95 95 baiduMap = mMapView.getMap();
... ... @@ -104,5 +104,17 @@ public class ALLScoreDetailFragmentView implements MvpView {
104 104 mUiSettings.setEnlargeCenterWithDoubleClickEnable(true);
105 105 //隐藏自带的指南针,改用自定义指南针 杨帅
106 106 mUiSettings.setCompassEnabled(false);
  107 + baiduMap.setOnMapLoadedCallback(new BaiduMap.OnMapLoadedCallback() {
  108 + @Override
  109 + public void onMapLoaded() {
  110 + if (null != mapCallBack) {
  111 + mapCallBack.onMapLoadFinish();
  112 + }
  113 + }
  114 + });
  115 + }
  116 +
  117 + public interface MapCallBack {
  118 + void onMapLoadFinish();
107 119 }
108 120 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunMainFragmentView.java
1 1 package com.cnlive.moudle.pedometer.frame.view;
2 2  
3 3 import android.app.Activity;
  4 +import android.app.Service;
4 5 import android.content.Context;
5 6 import android.content.Intent;
6 7 import android.os.Handler;
7 8 import android.os.SystemClock;
  9 +import android.os.Vibrator;
8 10 import android.support.v4.content.ContextCompat;
9 11 import android.text.TextUtils;
10 12 import android.util.Log;
... ... @@ -39,6 +41,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment;
39 41 import com.cnlive.moudle.pedometer.ui.widget.SelectDialog;
40 42 import com.cnlive.moudle.pedometer.ui.widget.TipDialog;
41 43 import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil;
  44 +import com.cnlive.moudle.pedometer.utils.ChineseToSpeechUtil;
42 45 import com.cnlive.moudle.pedometer.utils.GsonUtil;
43 46 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
44 47 import com.cnlive.moudle.pedometer.utils.MySpHelper;
... ... @@ -72,7 +75,8 @@ public class RunMainFragmentView implements MvpView {
72 75 private String employTime = "";
73 76 private LatLng endLatLng;//终点坐标
74 77 private TipDialog tipDialog;
75   -
  78 + //创建震动服务对象
  79 + private Vibrator mVibrator;
76 80 public RunMainFragmentView(RunMainFragment fragment) {
77 81 this.fragment = fragment;
78 82 }
... ... @@ -125,6 +129,8 @@ public class RunMainFragmentView implements MvpView {
125 129 * 初始化相关视图
126 130 */
127 131 public void initView(RunRaceDetailInfo runRaceDetailInfo) {
  132 + //获取手机震动服务
  133 + mVibrator = (Vibrator) getContext().getSystemService(Service.VIBRATOR_SERVICE);
128 134 uid = CommonInfo.getUserId(getContext());
129 135 userStepEntity = StepUtil.getUserStepData(getContext(), uid);
130 136 //设置数据
... ... @@ -770,8 +776,15 @@ public class RunMainFragmentView implements MvpView {
770 776 //更新数据
771 777 StepUtil.updateStepData(getContext(), userStepEntity);
772 778 }
  779 +
773 780 //进行提示
774 781 if (null == tipDialog) {
  782 + ChineseToSpeechUtil.speech(getContext(), "您已到达终点附近,可以结束运动了!");
  783 + if (mVibrator != null) {
  784 + //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
  785 + //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
  786 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
  787 + }
775 788 tipDialog = new TipDialog(getContext(), getContext().getResources().getString(R.string.run_race_arrive_end_tip), "好的", R.color.green_round, new TipDialog.DialogInterface() {
776 789 @Override
777 790 public void onClick(TipDialog dialog) {
... ... @@ -885,6 +898,9 @@ public class RunMainFragmentView implements MvpView {
885 898 StepUtil.setFailData(context, failedEntity);
886 899  
887 900 }
  901 + public void onStop() {
  902 + ChineseToSpeechUtil.destroy();
  903 + }
888 904 }
889 905  
890 906  
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunRaceDetailFragmentView.java
... ... @@ -640,6 +640,10 @@ public class RunRaceDetailFragmentView implements MvpView, SensorEventListener {
640 640 }
641 641  
642 642 private void checkBaiduServiceState() {
  643 + CommonInfo.setIsRunKeepAliveService(getContext(), true);
  644 + CommonInfo.setIsRunStepService(getContext(), true);
  645 + CommonInfo.setTsRunBaiduTraceService(getContext(), true);
  646 + CommonInfo.setIsWriteUserStep(getContext(), true);
643 647 boolean isRunBaidu = CommonInfo.getIsRunBaiduTraceService(getContext());
644 648 if (isRunBaidu) {
645 649 //判断百度服务是否运行
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunningMapFragmentView.java
1 1 package com.cnlive.moudle.pedometer.frame.view;
2 2  
  3 +import android.app.Service;
3 4 import android.content.Context;
4 5 import android.graphics.Bitmap;
5 6 import android.graphics.BitmapFactory;
... ... @@ -9,6 +10,7 @@ import android.hardware.SensorEventListener;
9 10 import android.hardware.SensorManager;
10 11 import android.os.Handler;
11 12 import android.os.SystemClock;
  13 +import android.os.Vibrator;
12 14 import android.text.TextUtils;
13 15 import android.util.Log;
14 16 import android.view.MotionEvent;
... ... @@ -44,6 +46,7 @@ import com.cnlive.moudle.pedometer.ui.fragment.RunningMapFragment;
44 46 import com.cnlive.moudle.pedometer.ui.widget.TipDialog;
45 47 import com.cnlive.moudle.pedometer.utils.BitmapUtil;
46 48 import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil;
  49 +import com.cnlive.moudle.pedometer.utils.ChineseToSpeechUtil;
47 50 import com.cnlive.moudle.pedometer.utils.GsonUtil;
48 51 import com.cnlive.moudle.pedometer.utils.MyMapUtil;
49 52 import com.cnlive.moudle.pedometer.utils.StepUtil;
... ... @@ -83,6 +86,8 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
83 86 private LatLng endLatLng;//终点坐标
84 87 private UserStepEntity userStepEntity;
85 88 private TipDialog tipDialog;
  89 + //创建震动服务对象
  90 + private Vibrator mVibrator;
86 91  
87 92 public RunningMapFragmentView(RunningMapFragment fragment) {
88 93 this.fragment = fragment;
... ... @@ -96,6 +101,8 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
96 101 if (getContext() == null) {
97 102 return;
98 103 }
  104 + //获取手机震动服务
  105 + mVibrator = (Vibrator) getContext().getSystemService(Service.VIBRATOR_SERVICE);
99 106 userStepEntity = StepUtil.getUserStepData(getContext(), CommonInfo.getUserId(getContext()));
100 107 currentPoints = new ArrayList<>();
101 108 initMap();
... ... @@ -341,8 +348,17 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
341 348 //更新数据
342 349 StepUtil.updateStepData(getContext(), userStepEntity);
343 350 }
  351 +
  352 +
344 353 //进行提示
345 354 if (null == tipDialog) {
  355 + ChineseToSpeechUtil.speech(getContext(), "您已到达终点附近,可以结束运动了!");
  356 + if (mVibrator != null) {
  357 + //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
  358 + //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
  359 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
  360 + }
  361 +
346 362 tipDialog = new TipDialog(getContext(), getContext().getResources().getString(R.string.run_race_arrive_end_tip), "好的", R.color.green_round, new TipDialog.DialogInterface() {
347 363 @Override
348 364 public void onClick(TipDialog dialog) {
... ... @@ -492,6 +508,10 @@ public class RunningMapFragmentView implements MvpView, SensorEventListener {
492 508  
493 509 }
494 510  
  511 + public void onStop() {
  512 + ChineseToSpeechUtil.destroy();
  513 + }
  514 +
495 515 /**
496 516 * 设置从历史轨迹中查询到的最新点
497 517 *
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/model/Constant.java
1 1 package com.cnlive.moudle.pedometer.model;
2 2  
3 3 public class Constant {
4   - public static final long SERVICE_ID = 213511;//公司账号
  4 + public static final long SERVICE_ID = 213511;//公司账号
5 5 // public static final long SERVICE_ID = 213553;
6 6  
7 7 public static final int TAG = 1;
... ... @@ -15,7 +15,9 @@ public class Constant {
15 15 public static final int FRAGMENT_RUN_CHRONOMETER = 4;//同步计时器
16 16 public static final int EXIT_RANGE = 5;//超出范围
17 17 public static final int ENTER_RANGE = 6;//进入范围
18   -
  18 + public static final int VIBRATOR_DELAY_TIME = 100;//震动等待时间(ms)
  19 + public static final int VIBRATOR_RUN_TIME = 1000;//震动执行时间(ms)
  20 + public static final int VIBRATOR_REPEAT_TIME = -1;//震动重复次数(-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始)
19 21  
20 22 /*****************************************运营工具****************************************************/
21 23 public static final int COLL_SERVICE_STEP_COUNT_RESET_SPEED = 3;//重置速度
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/ALLScoreDetailFragment.java
... ... @@ -52,11 +52,16 @@ public class ALLScoreDetailFragment extends QMUIFragment&lt;ALLScoreDetailFragmentV
52 52 runningFinishBean = (RunningFinishBean) getArguments().getSerializable("runningFinishBean");
53 53 if (runningFinishBean != null) {
54 54 if (getMvpView() != null) {
55   - getMvpView().initMap();
56   - getMvpView().initView(runningFinishBean);
57   - if (getPresenter() != null) {
58   - getPresenter().queryHistoryTrace(getActivity(), runningFinishBean);
59   - }
  55 + getMvpView().initMap(new ALLScoreDetailFragmentView.MapCallBack() {
  56 + @Override
  57 + public void onMapLoadFinish() {
  58 + getMvpView().initView(runningFinishBean);
  59 + if (getPresenter() != null) {
  60 + getPresenter().queryHistoryTrace(getActivity(), runningFinishBean);
  61 + }
  62 + }
  63 + });
  64 +
60 65 }
61 66 }
62 67 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunMainFragment.java
... ... @@ -186,7 +186,7 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr
186 186 if (mVibrator != null) {
187 187 //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
188 188 //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
189   - mVibrator.vibrate(new long[]{100, 1000, 100, 1000}, -1);
  189 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
190 190 }
191 191 if (tipDialog != null) {
192 192 tipDialog.setTipMsg("您已偏离路径轨迹\n请您计时回归路径!");
... ... @@ -199,7 +199,7 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr
199 199 if (mVibrator != null) {
200 200 //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
201 201 //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
202   - mVibrator.vibrate(new long[]{100, 1000, 100, 1000}, -1);
  202 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
203 203 }
204 204 if (tipDialog != null) {
205 205 tipDialog.setTipMsg("您已回归轨迹\n继续参与运动吧");
... ... @@ -208,6 +208,14 @@ public class RunMainFragment extends QMUIFragment&lt;RunMainFragmentView, RunMainFr
208 208 }
209 209 }
210 210  
  211 + @Override
  212 + public void onStop() {
  213 + super.onStop();
  214 + if (null != getMvpView()) {
  215 + getMvpView().onStop();
  216 + }
  217 + }
  218 +
211 219 /**
212 220 * 屏蔽边缘返回
213 221 * 杨帅
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunningMapFragment.java
... ... @@ -150,6 +150,7 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run
150 150 if (getMvpView() != null) {
151 151 //取消注册传感器监听
152 152 mSensorManager.unregisterListener(getMvpView());
  153 + getMvpView().onStop();
153 154 }
154 155 ChineseToSpeechUtil.destroy();
155 156  
... ... @@ -196,7 +197,7 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run
196 197 if (mVibrator != null) {
197 198 //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
198 199 //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
199   - mVibrator.vibrate(new long[]{100, 1000, 100, 1000}, -1);
  200 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
200 201 }
201 202 if (tipDialog != null) {
202 203 tipDialog.setTipMsg("您已偏离路径轨迹\n请您计时回归路径!");
... ... @@ -209,7 +210,7 @@ public class RunningMapFragment extends QMUIFragment&lt;RunningMapFragmentView, Run
209 210 if (mVibrator != null) {
210 211 //设置震动周期,数组表示时间:等待+执行,单位是毫秒,下面操作代表:等待100,执行100,等待100,执行1000,
211 212 //后面的数字如果为-1代表不重复,之执行一次,其他代表会重复,0代表从数组的第0个位置开始
212   - mVibrator.vibrate(new long[]{100, 1000, 100, 1000}, -1);
  213 + mVibrator.vibrate(new long[]{Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME, Constant.VIBRATOR_DELAY_TIME, Constant.VIBRATOR_RUN_TIME}, Constant.VIBRATOR_REPEAT_TIME);
213 214 }
214 215 if (tipDialog != null) {
215 216 tipDialog.setTipMsg("您已回归轨迹\n继续参与运动吧");
... ...