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,6 +19,7 @@ import com.baidu.trace.api.track.LatestPointResponse; | ||
| 19 | import com.baidu.trace.api.track.OnTrackListener; | 19 | import com.baidu.trace.api.track.OnTrackListener; |
| 20 | import com.baidu.trace.api.track.SupplementMode; | 20 | import com.baidu.trace.api.track.SupplementMode; |
| 21 | import com.baidu.trace.api.track.TrackPoint; | 21 | import com.baidu.trace.api.track.TrackPoint; |
| 22 | +import com.baidu.trace.model.CoordType; | ||
| 22 | import com.baidu.trace.model.ProcessOption; | 23 | import com.baidu.trace.model.ProcessOption; |
| 23 | import com.baidu.trace.model.SortType; | 24 | import com.baidu.trace.model.SortType; |
| 24 | import com.baidu.trace.model.StatusCodes; | 25 | import com.baidu.trace.model.StatusCodes; |
| @@ -61,7 +62,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | @@ -61,7 +62,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 61 | */ | 62 | */ |
| 62 | public void queryHistoryTrace(Context context, String entityName, long startTime, long endTime) { | 63 | public void queryHistoryTrace(Context context, String entityName, long startTime, long endTime) { |
| 63 | if (historyTrackRequest == null) { | 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 | historyTrackRequest.setEntityName(entityName); | 69 | historyTrackRequest.setEntityName(entityName); |
| 67 | //历史轨迹开始时间 | 70 | //历史轨迹开始时间 |
| @@ -74,6 +77,8 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | @@ -74,6 +77,8 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 74 | historyTrackRequest.setPageSize(pageSize); | 77 | historyTrackRequest.setPageSize(pageSize); |
| 75 | //设置是否进行纠偏 | 78 | //设置是否进行纠偏 |
| 76 | historyTrackRequest.setProcessed(true); | 79 | historyTrackRequest.setProcessed(true); |
| 80 | + //设置返回坐标系 | ||
| 81 | + historyTrackRequest.setCoordTypeOutput(CoordType.gcj02); | ||
| 77 | //其他设置 | 82 | //其他设置 |
| 78 | ProcessOption processOption = new ProcessOption(); | 83 | ProcessOption processOption = new ProcessOption(); |
| 79 | //去噪:可设置是否需要去除角度、速度和方向异常的轨迹点 | 84 | //去噪:可设置是否需要去除角度、速度和方向异常的轨迹点 |
| @@ -83,9 +88,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | @@ -83,9 +88,9 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 83 | //抽稀:设置是否进行抽稀处理,对冗余的轨迹点进行抽稀去除处理,如一条直线上除起终点外的多个轨迹点 | 88 | //抽稀:设置是否进行抽稀处理,对冗余的轨迹点进行抽稀去除处理,如一条直线上除起终点外的多个轨迹点 |
| 84 | processOption.setNeedVacuate(true); | 89 | processOption.setNeedVacuate(true); |
| 85 | //自动判断交通方式 | 90 | //自动判断交通方式 |
| 86 | - processOption.setTransportMode(TransportMode.auto); | 91 | + processOption.setTransportMode(TransportMode.walking); |
| 87 | // 设置精度过滤值(定位精度大于100米的过滤掉) | 92 | // 设置精度过滤值(定位精度大于100米的过滤掉) |
| 88 | - processOption.setRadiusThreshold(100); | 93 | + processOption.setRadiusThreshold(20); |
| 89 | // 设置纠偏选项 | 94 | // 设置纠偏选项 |
| 90 | historyTrackRequest.setProcessOption(processOption); | 95 | historyTrackRequest.setProcessOption(processOption); |
| 91 | // 设置里程填充方式为驾车 | 96 | // 设置里程填充方式为驾车 |
| @@ -99,11 +104,12 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | @@ -99,11 +104,12 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 99 | OnTrackListener historyTrackListener = new OnTrackListener() { | 104 | OnTrackListener historyTrackListener = new OnTrackListener() { |
| 100 | @Override | 105 | @Override |
| 101 | public void onHistoryTrackCallback(HistoryTrackResponse response) { | 106 | public void onHistoryTrackCallback(HistoryTrackResponse response) { |
| 102 | - Log.e(TAG, "onHistoryTrackCallback: "); | ||
| 103 | super.onHistoryTrackCallback(response); | 107 | super.onHistoryTrackCallback(response); |
| 104 | int total = response.getTotal(); | 108 | int total = response.getTotal(); |
| 109 | + Log.e(TAG, "onHistoryTrackCallback: total" + total + "数量"); | ||
| 110 | + | ||
| 105 | if (StatusCodes.SUCCESS != response.getStatus()) { | 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 | } else if (0 == total) { | 113 | } else if (0 == total) { |
| 108 | Toast.makeText(context, "暂未查到您的轨迹,请稍后重试!", Toast.LENGTH_SHORT).show(); | 114 | Toast.makeText(context, "暂未查到您的轨迹,请稍后重试!", Toast.LENGTH_SHORT).show(); |
| 109 | } else { | 115 | } else { |
| @@ -124,7 +130,7 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | @@ -124,7 +130,7 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 124 | queryHistoryTrace(context, entityName, startTime, endTime); | 130 | queryHistoryTrace(context, entityName, startTime, endTime); |
| 125 | } else { | 131 | } else { |
| 126 | if (getView() != null) { | 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,15 +140,15 @@ public class RunningMapFragmentPresenter extends MvpBasePresenter<RunningMapFrag | ||
| 134 | super.onLatestPointCallback(latestPointResponse); | 140 | super.onLatestPointCallback(latestPointResponse); |
| 135 | Log.e(TAG, "onLatestPointCallback: "); | 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,6 +19,7 @@ import com.cnlive.moudle.pedometer.ui.activity.RunningMapActivity; | ||
| 19 | import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment; | 19 | import com.cnlive.moudle.pedometer.ui.fragment.RunMainFragment; |
| 20 | import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; | 20 | import com.cnlive.moudle.pedometer.ui.widget.SelectDialog; |
| 21 | import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil; | 21 | import com.cnlive.moudle.pedometer.utils.ButtonAnimUtil; |
| 22 | +import com.cnlive.moudle.pedometer.utils.MySpHelper; | ||
| 22 | import com.cnlive.moudle.pedometer.utils.StepUtil; | 23 | import com.cnlive.moudle.pedometer.utils.StepUtil; |
| 23 | import com.example.moudle_pedometer.R; | 24 | import com.example.moudle_pedometer.R; |
| 24 | import com.hannesdorfmann.mosby3.mvp.MvpView; | 25 | import com.hannesdorfmann.mosby3.mvp.MvpView; |
| @@ -172,6 +173,10 @@ public class RunMainFragmentView implements MvpView { | @@ -172,6 +173,10 @@ public class RunMainFragmentView implements MvpView { | ||
| 172 | fragment.binding.flContinue.setOnClickListener(new View.OnClickListener() { | 173 | fragment.binding.flContinue.setOnClickListener(new View.OnClickListener() { |
| 173 | @Override | 174 | @Override |
| 174 | public void onClick(View view) { | 175 | public void onClick(View view) { |
| 176 | + //继续记录轨迹 | ||
| 177 | + if (StepService.mClient != null && StepService.traceListener != null) { | ||
| 178 | + StepService.mClient.startGather(StepService.traceListener); | ||
| 179 | + } | ||
| 175 | needWriteDataFlag = true; | 180 | needWriteDataFlag = true; |
| 176 | //将当前计时器时间戳写入数据库 | 181 | //将当前计时器时间戳写入数据库 |
| 177 | setSQLPauseTime(); | 182 | setSQLPauseTime(); |
| @@ -237,14 +242,16 @@ public class RunMainFragmentView implements MvpView { | @@ -237,14 +242,16 @@ public class RunMainFragmentView implements MvpView { | ||
| 237 | public void onClick(SelectDialog dialog) { | 242 | public void onClick(SelectDialog dialog) { |
| 238 | fragment.binding.cpCurrent.setVisibility(View.GONE); | 243 | fragment.binding.cpCurrent.setVisibility(View.GONE); |
| 239 | ButtonAnimUtil.setViewDefault(fragment.binding.flStop); | 244 | ButtonAnimUtil.setViewDefault(fragment.binding.flStop); |
| 240 | - fragment.getActivity().stopService(new Intent(fragment.getActivity(), StepService.class)); | ||
| 241 | //清空数据 | 245 | //清空数据 |
| 242 | StepUtil.clearRunData(getContext(), uid); | 246 | StepUtil.clearRunData(getContext(), uid); |
| 243 | dialog.dismiss(); | 247 | dialog.dismiss(); |
| 244 | if (StepService.mClient != null) { | 248 | if (StepService.mClient != null) { |
| 245 | StepService.mClient.stopGather(StepService.traceListener); | 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 | }, "取消", new SelectDialog.DialogInterface() { | 256 | }, "取消", new SelectDialog.DialogInterface() { |
| 250 | @Override | 257 | @Override |
| @@ -296,6 +303,10 @@ public class RunMainFragmentView implements MvpView { | @@ -296,6 +303,10 @@ public class RunMainFragmentView implements MvpView { | ||
| 296 | fragment.binding.flPause.setOnClickListener(new View.OnClickListener() { | 303 | fragment.binding.flPause.setOnClickListener(new View.OnClickListener() { |
| 297 | @Override | 304 | @Override |
| 298 | public void onClick(View view) { | 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 | setSQLPauseTime(); | 311 | setSQLPauseTime(); |
| 301 | needWriteDataFlag = false; | 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,6 +47,8 @@ import com.cnlive.moudle.pedometer.sql.dao.UserStepEntityDao; | ||
| 47 | import com.cnlive.moudle.pedometer.sql.db.DbCore; | 47 | import com.cnlive.moudle.pedometer.sql.db.DbCore; |
| 48 | import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; | 48 | import com.cnlive.moudle.pedometer.sql.entity.UserStepEntity; |
| 49 | import com.cnlive.moudle.pedometer.ui.activity.PedometerMainActivity; | 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 | import com.example.moudle_pedometer.R; | 52 | import com.example.moudle_pedometer.R; |
| 51 | import com.orhanobut.logger.Logger; | 53 | import com.orhanobut.logger.Logger; |
| 52 | 54 | ||
| @@ -330,6 +332,10 @@ public class StepService extends Service implements SensorEventListener { | @@ -330,6 +332,10 @@ public class StepService extends Service implements SensorEventListener { | ||
| 330 | //开启轨迹服务 | 332 | //开启轨迹服务 |
| 331 | if (mClient != null) { | 333 | if (mClient != null) { |
| 332 | mClient.startTrace(mTrace, traceListener); | 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 | package com.cnlive.moudle.pedometer.ui.fragment; | 1 | package com.cnlive.moudle.pedometer.ui.fragment; |
| 2 | 2 | ||
| 3 | +import android.content.Context; | ||
| 3 | import android.hardware.Sensor; | 4 | import android.hardware.Sensor; |
| 4 | import android.hardware.SensorManager; | 5 | import android.hardware.SensorManager; |
| 5 | import android.os.Bundle; | 6 | import android.os.Bundle; |
| 7 | +import android.os.SystemClock; | ||
| 6 | import android.support.annotation.Nullable; | 8 | import android.support.annotation.Nullable; |
| 7 | import android.text.TextUtils; | 9 | import android.text.TextUtils; |
| 8 | import android.util.Log; | 10 | import android.util.Log; |
| @@ -16,6 +18,7 @@ import com.cnlive.moudle.pedometer.model.RunningMapBean; | @@ -16,6 +18,7 @@ import com.cnlive.moudle.pedometer.model.RunningMapBean; | ||
| 16 | import com.cnlive.moudle.pedometer.model.Constant; | 18 | import com.cnlive.moudle.pedometer.model.Constant; |
| 17 | import com.cnlive.moudle.pedometer.model.MessageEvent; | 19 | import com.cnlive.moudle.pedometer.model.MessageEvent; |
| 18 | import com.cnlive.moudle.pedometer.service.StepService; | 20 | import com.cnlive.moudle.pedometer.service.StepService; |
| 21 | +import com.cnlive.moudle.pedometer.utils.MySpHelper; | ||
| 19 | import com.cnlive.moudle.pedometer.utils.TimeUtil; | 22 | import com.cnlive.moudle.pedometer.utils.TimeUtil; |
| 20 | import com.example.moudle_pedometer.R; | 23 | import com.example.moudle_pedometer.R; |
| 21 | import com.example.moudle_pedometer.databinding.FragmentRunningMapBinding; | 24 | import com.example.moudle_pedometer.databinding.FragmentRunningMapBinding; |
| @@ -83,8 +86,21 @@ public class RunningMapFragment extends QMUIFragment<RunningMapFragmentView, Run | @@ -83,8 +86,21 @@ public class RunningMapFragment extends QMUIFragment<RunningMapFragmentView, Run | ||
| 83 | } | 86 | } |
| 84 | //开始进行历史轨迹查询 | 87 | //开始进行历史轨迹查询 |
| 85 | if (getPresenter() != null && !TextUtils.isEmpty(StepService.entityName)) { | 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 | getPresenter().queryHistoryTrace(getActivity(), StepService.entityName, startTime, endTime); | 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,7 +75,7 @@ public class MyMapUtil { | ||
| 75 | .color(context.getResources().getColor(lineColor)).points(points); | 75 | .color(context.getResources().getColor(lineColor)).points(points); |
| 76 | 76 | ||
| 77 | baiduMap.addOverlay(startOptions); | 77 | baiduMap.addOverlay(startOptions); |
| 78 | -// baiduMap.addOverlay(endOptions); | 78 | + baiduMap.addOverlay(endOptions); |
| 79 | return baiduMap.addOverlay(polylineOptions); | 79 | return baiduMap.addOverlay(polylineOptions); |
| 80 | } | 80 | } |
| 81 | } | 81 | } |