Commit f478a58365651581138411e54e011c31f58b3688
1 parent
115b7a32
1.赛事详情
Showing
5 changed files
with
59 additions
and
20 deletions
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RunningMapFragmentPresenter.java
| ... | ... | @@ -19,6 +19,7 @@ import com.baidu.trace.api.track.LatestPointResponse; |
| 19 | 19 | import com.baidu.trace.api.track.OnTrackListener; |
| 20 | 20 | import com.baidu.trace.api.track.SupplementMode; |
| 21 | 21 | import com.baidu.trace.api.track.TrackPoint; |
| 22 | +import com.baidu.trace.model.CoordType; | |
| 22 | 23 | import com.baidu.trace.model.ProcessOption; |
| 23 | 24 | import com.baidu.trace.model.SortType; |
| 24 | 25 | import com.baidu.trace.model.StatusCodes; |
| ... | ... | @@ -61,7 +62,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 61 | 62 | */ |
| 62 | 63 | public void queryHistoryTrace(Context context, String entityName, long startTime, long endTime) { |
| 63 | 64 | if (historyTrackRequest == null) { |
| 64 | - historyTrackRequest = new HistoryTrackRequest(); | |
| 65 | + Log.e(TAG, "queryHistoryTrace: StepService.serviceId" + StepService.serviceId + ",entityName:" + entityName); | |
| 66 | + Log.e(TAG, "queryHistoryTrace: startTime:" + startTime + ",endTime:" + endTime); | |
| 67 | + historyTrackRequest = new HistoryTrackRequest(1, StepService.serviceId, entityName); | |
| 65 | 68 | //设置查询设备名称 |
| 66 | 69 | historyTrackRequest.setEntityName(entityName); |
| 67 | 70 | //历史轨迹开始时间 |
| ... | ... | @@ -74,6 +77,8 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 74 | 77 | historyTrackRequest.setPageSize(pageSize); |
| 75 | 78 | //设置是否进行纠偏 |
| 76 | 79 | historyTrackRequest.setProcessed(true); |
| 80 | + //设置返回坐标系 | |
| 81 | + historyTrackRequest.setCoordTypeOutput(CoordType.gcj02); | |
| 77 | 82 | //其他设置 |
| 78 | 83 | ProcessOption processOption = new ProcessOption(); |
| 79 | 84 | //去噪:可设置是否需要去除角度、速度和方向异常的轨迹点 |
| ... | ... | @@ -83,9 +88,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 83 | 88 | //抽稀:设置是否进行抽稀处理,对冗余的轨迹点进行抽稀去除处理,如一条直线上除起终点外的多个轨迹点 |
| 84 | 89 | processOption.setNeedVacuate(true); |
| 85 | 90 | //自动判断交通方式 |
| 86 | - processOption.setTransportMode(TransportMode.auto); | |
| 91 | + processOption.setTransportMode(TransportMode.walking); | |
| 87 | 92 | // 设置精度过滤值(定位精度大于100米的过滤掉) |
| 88 | - processOption.setRadiusThreshold(100); | |
| 93 | + processOption.setRadiusThreshold(20); | |
| 89 | 94 | // 设置纠偏选项 |
| 90 | 95 | historyTrackRequest.setProcessOption(processOption); |
| 91 | 96 | // 设置里程填充方式为驾车 |
| ... | ... | @@ -99,11 +104,12 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 99 | 104 | OnTrackListener historyTrackListener = new OnTrackListener() { |
| 100 | 105 | @Override |
| 101 | 106 | public void onHistoryTrackCallback(HistoryTrackResponse response) { |
| 102 | - Log.e(TAG, "onHistoryTrackCallback: "); | |
| 103 | 107 | super.onHistoryTrackCallback(response); |
| 104 | 108 | int total = response.getTotal(); |
| 109 | + Log.e(TAG, "onHistoryTrackCallback: total" + total + "数量"); | |
| 110 | + | |
| 105 | 111 | if (StatusCodes.SUCCESS != response.getStatus()) { |
| 106 | - Toast.makeText(context, "获取轨迹失败!"+response.getStatus(), Toast.LENGTH_SHORT).show(); | |
| 112 | + Toast.makeText(context, "获取轨迹失败!" + response.getStatus(), Toast.LENGTH_SHORT).show(); | |
| 107 | 113 | } else if (0 == total) { |
| 108 | 114 | Toast.makeText(context, "暂未查到您的轨迹,请稍后重试!", Toast.LENGTH_SHORT).show(); |
| 109 | 115 | } else { |
| ... | ... | @@ -124,7 +130,7 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 124 | 130 | queryHistoryTrace(context, entityName, startTime, endTime); |
| 125 | 131 | } else { |
| 126 | 132 | if (getView() != null) { |
| 127 | - MyMapUtil.drawHistoryTrack(context, getView().baiduMap, trackPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.run_map_icon_end); | |
| 133 | + MyMapUtil.drawHistoryTrack(context, getView().baiduMap, trackPoints, SortType.asc, R.color.red, R.drawable.icon_start, R.drawable.icon_end); | |
| 128 | 134 | } |
| 129 | 135 | } |
| 130 | 136 | } |
| ... | ... | @@ -134,15 +140,15 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag |
| 134 | 140 | super.onLatestPointCallback(latestPointResponse); |
| 135 | 141 | Log.e(TAG, "onLatestPointCallback: "); |
| 136 | 142 | |
| 137 | - if (StatusCodes.SUCCESS != latestPointResponse.getStatus()) { | |
| 138 | - } else { | |
| 139 | - Bitmap startPointBitmap = BitmapUtil.getBitmapFromDp(context, BitmapFactory.decodeResource(context.getResources(), R.drawable.run_map_icon_start), 40, 40); | |
| 140 | - OverlayOptions startOptions = new MarkerOptions() | |
| 141 | - .position(MyMapUtil.convertTrace2Map(latestPointResponse.getLatestPoint().getLocation())).icon(BitmapDescriptorFactory.fromBitmap(startPointBitmap)); | |
| 142 | - if (getView() != null) { | |
| 143 | - getView().baiduMap.addOverlay(startOptions); | |
| 144 | - } | |
| 145 | - } | |
| 143 | +// if (StatusCodes.SUCCESS != latestPointResponse.getStatus()) { | |
| 144 | +// } else { | |
| 145 | +// Bitmap startPointBitmap = BitmapUtil.getBitmapFromDp(context, BitmapFactory.decodeResource(context.getResources(), R.drawable.run_map_icon_start), 40, 40); | |
| 146 | +// OverlayOptions startOptions = new MarkerOptions() | |
| 147 | +// .position(MyMapUtil.convertTrace2Map(latestPointResponse.getLatestPoint().getLocation())).icon(BitmapDescriptorFactory.fromBitmap(startPointBitmap)); | |
| 148 | +// if (getView() != null) { | |
| 149 | +// getView().baiduMap.addOverlay(startOptions); | |
| 150 | +// } | |
| 151 | +// } | |
| 146 | 152 | } |
| 147 | 153 | }; |
| 148 | 154 | //开始查询历史轨迹 | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunMainFragmentView.java
| ... | ... | @@ -19,6 +19,7 @@ import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity; |
| 19 | 19 | import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment; |
| 20 | 20 | import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; |
| 21 | 21 | import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil; |
| 22 | +import com.cnlive.moudle.pedometer.utils.MySpHelper; | |
| 22 | 23 | import com.cnlive.moudle.pedometer.utils.StepUtil; |
| 23 | 24 | import com.example.moudle_pedometer.R; |
| 24 | 25 | import com.hannesdorfmann.mosby3.mvp.MvpView; |
| ... | ... | @@ -172,6 +173,10 @@ public class RunMainFragmentView implements MvpView { |
| 172 | 173 | fragment.binding.flContinue.setOnClickListener(new View.OnClickListener() { |
| 173 | 174 | @Override |
| 174 | 175 | public void onClick(View view) { |
| 176 | + //继续记录轨迹 | |
| 177 | + if (StepService.mClient != null && StepService.traceListener != null) { | |
| 178 | + StepService.mClient.startGather(StepService.traceListener); | |
| 179 | + } | |
| 175 | 180 | needWriteDataFlag = true; |
| 176 | 181 | //将当前计时器时间戳写入数据库 |
| 177 | 182 | setSQLPauseTime(); |
| ... | ... | @@ -237,14 +242,16 @@ public class RunMainFragmentView implements MvpView { |
| 237 | 242 | public void onClick(SelectDialog dialog) { |
| 238 | 243 | fragment.binding.cpCurrent.setVisibility(View.GONE); |
| 239 | 244 | ButtonAnimUtil.setViewDefault(fragment.binding.flStop); |
| 240 | - fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class)); | |
| 241 | 245 | //清空数据 |
| 242 | 246 | StepUtil.clearRunData(getContext(), uid); |
| 243 | 247 | dialog.dismiss(); |
| 244 | 248 | if (StepService.mClient != null) { |
| 245 | 249 | StepService.mClient.stopGather(StepService.traceListener); |
| 246 | 250 | } |
| 247 | -// fragment.getActivity().finish(); | |
| 251 | + MySpHelper.getInstance(getContext(), Context.MODE_MULTI_PROCESS).putLong("stepStartTime", 0); | |
| 252 | + fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class)); | |
| 253 | + | |
| 254 | + // fragment.getActivity().finish(); | |
| 248 | 255 | } |
| 249 | 256 | }, "取消", new SelectDialog.DialogInterface() { |
| 250 | 257 | @Override |
| ... | ... | @@ -296,6 +303,10 @@ public class RunMainFragmentView implements MvpView { |
| 296 | 303 | fragment.binding.flPause.setOnClickListener(new View.OnClickListener() { |
| 297 | 304 | @Override |
| 298 | 305 | public void onClick(View view) { |
| 306 | + //暂停轨迹记录 | |
| 307 | + if (StepService.mClient != null && StepService.traceListener != null) { | |
| 308 | + StepService.mClient.stopGather(StepService.traceListener); | |
| 309 | + } | |
| 299 | 310 | //将当前计时器时间戳写入数据库 |
| 300 | 311 | setSQLPauseTime(); |
| 301 | 312 | needWriteDataFlag = false; | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/service/StepService.java
| ... | ... | @@ -47,6 +47,8 @@ import com.cnlive.moudle.pedometer.sql.dao.UserStepEntityDao; |
| 47 | 47 | import com.cnlive.moudle.pedometer.sql.db.DbCore; |
| 48 | 48 | import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; |
| 49 | 49 | import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity; |
| 50 | +import com.cnlive.moudle.pedometer.utils.MySpHelper; | |
| 51 | +import com.cnlive.moudle.pedometer.utils.TimeUtil; | |
| 50 | 52 | import com.example.moudle_pedometer.R; |
| 51 | 53 | import com.orhanobut.logger.Logger; |
| 52 | 54 | |
| ... | ... | @@ -330,6 +332,10 @@ public class StepService extends Service implements SensorEventListener { |
| 330 | 332 | //开启轨迹服务 |
| 331 | 333 | if (mClient != null) { |
| 332 | 334 | mClient.startTrace(mTrace, traceListener); |
| 335 | + long stepStartTime = MySpHelper.getInstance(getApplicationContext(), Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0); | |
| 336 | + if (stepStartTime == 0) { | |
| 337 | + MySpHelper.getInstance(getApplicationContext(), Context.MODE_MULTI_PROCESS).putLong("stepStartTime", TimeUtil.getCurrentTime()); | |
| 338 | + } | |
| 333 | 339 | } |
| 334 | 340 | |
| 335 | 341 | } | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunningMapFragment.java
| 1 | 1 | package com.cnlive.moudle.pedometer.ui.fragment; |
| 2 | 2 | |
| 3 | +import android.content.Context; | |
| 3 | 4 | import android.hardware.Sensor; |
| 4 | 5 | import android.hardware.SensorManager; |
| 5 | 6 | import android.os.Bundle; |
| 7 | +import android.os.SystemClock; | |
| 6 | 8 | import android.support.annotation.Nullable; |
| 7 | 9 | import android.text.TextUtils; |
| 8 | 10 | import android.util.Log; |
| ... | ... | @@ -16,6 +18,7 @@ import com.cnlive.moudle.pedometer.model.RunningMapBean; |
| 16 | 18 | import com.cnlive.moudle.pedometer.model.Constant; |
| 17 | 19 | import com.cnlive.moudle.pedometer.model.MessageEvent; |
| 18 | 20 | import com.cnlive.moudle.pedometer.service.StepService; |
| 21 | +import com.cnlive.moudle.pedometer.utils.MySpHelper; | |
| 19 | 22 | import com.cnlive.moudle.pedometer.utils.TimeUtil; |
| 20 | 23 | import com.example.moudle_pedometer.R; |
| 21 | 24 | import com.example.moudle_pedometer.databinding.FragmentRunningMapBinding; |
| ... | ... | @@ -83,8 +86,21 @@ public class RunningMapFragment extends QMUIFragment<RunningMapFragmentView, Run |
| 83 | 86 | } |
| 84 | 87 | //开始进行历史轨迹查询 |
| 85 | 88 | if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) { |
| 86 | - long startTime = runningMapBean.getTimeBase(); | |
| 87 | - long endTime = TimeUtil.getCurrentTime(); | |
| 89 | + long stepStartTime = MySpHelper.getInstance(getActivity(), Context.MODE_MULTI_PROCESS).getLong("stepStartTime", 0); | |
| 90 | + long startTime = 0; | |
| 91 | + if (stepStartTime != 0) { | |
| 92 | + startTime = stepStartTime; | |
| 93 | + } else { | |
| 94 | + startTime = (int) (System.currentTimeMillis() / 1000 - 12 * 60 * 60); | |
| 95 | + } | |
| 96 | +// long base = runningMapBean.getTimeBase() + (SystemClock.elapsedRealtime() - runningMapBean.getRecordTime()); | |
| 97 | +// int hour = (int) ((SystemClock.elapsedRealtime() - base) / 1000 / 60 / 60); | |
| 98 | +// int minute = (int) ((SystemClock.elapsedRealtime() - base) / 1000 / 60) % 60; | |
| 99 | +// int second = (int) ((SystemClock.elapsedRealtime() - base) / 1000) % 60; | |
| 100 | + long current = TimeUtil.getCurrentTime(); | |
| 101 | +// long startTime = current - hour * 3600 * 1000 - minute * 60 * 1000 - second * 1000; | |
| 102 | + long endTime = current; | |
| 103 | +// Log.e(TAG, "onViewCreated: " + "hour:" + hour + ",minute" + minute + ",second:" + second); | |
| 88 | 104 | getPresenter().queryHistoryTrace(getActivity(), StepService.entityName, startTime, endTime); |
| 89 | 105 | } |
| 90 | 106 | } | ... | ... |
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
| ... | ... | @@ -75,7 +75,7 @@ public class MyMapUtil { |
| 75 | 75 | .color(context.getResources().getColor(lineColor)).points(points); |
| 76 | 76 | |
| 77 | 77 | baiduMap.addOverlay(startOptions); |
| 78 | -// baiduMap.addOverlay(endOptions); | |
| 78 | + baiduMap.addOverlay(endOptions); | |
| 79 | 79 | return baiduMap.addOverlay(polylineOptions); |
| 80 | 80 | } |
| 81 | 81 | } | ... | ... |