Commit de788c92fd645a02654e2b0bac8d7b5cf206bab3
1 parent
045ca6f4
1 增加用户到达终点语音震动提示
2 修改打点逻辑
Showing
10 changed files
with
84 additions
and
16 deletions
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<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<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<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<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<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<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<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继续参与运动吧"); | ... | ... |