Skip to content

Commit b2efdf2

Browse files
committed
fix(Android):fix gps mock status callback
1 parent b9c35fc commit b2efdf2

File tree

3 files changed

+26
-9
lines changed

3 files changed

+26
-9
lines changed

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/gpsmock/GpsMockFragment.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282

8383
public class GpsMockFragment extends BaseFragment implements View.OnClickListener, PositionSelectRecyclerAdapter.IPositionItemSelectedCallback
8484
, CompoundButton.OnCheckedChangeListener, MotionLayout.TransitionListener, BaiduMap.OnMapStatusChangeListener, OnGetGeoCoderResultListener
85-
, OnGetRoutePlanResultListener {
85+
, OnGetRoutePlanResultListener, RouteMockThread.RouteMockStatusCallback {
8686
private static final String TAG = "GpsMockFragment";
8787

8888
private HomeTitleBar mTitleBar;
@@ -470,9 +470,9 @@ private void drawAndMockRoute() {
470470
}
471471
if (GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
472472
if (mCurDriftTypeIndex == DriftType.DRIFT_TYPE_ROUTE.ordinal()) {
473-
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftPoints(), getInputSpeed());
473+
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRouteDriftPoints(), getInputSpeed(), this);
474474
} else {
475-
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftPoints(), getInputSpeed());
475+
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getRandomDriftPoints(), getInputSpeed(), this);
476476
}
477477

478478
mBtnMockRoute1.setText(R.string.btn_text_stop_mock);
@@ -482,14 +482,20 @@ private void drawAndMockRoute() {
482482
// 真实路径模拟
483483
if (GpsMockManager.getInstance().getBdMockDrivingRouteLine() != null) {
484484
// 开始模拟
485-
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getAllPoints(), getInputSpeed());
485+
GpsMockManager.getInstance().startMockRouteLine(GpsMockManager.getInstance().getBdMockDrivingRouteLine().getAllPoints(), getInputSpeed(), this);
486486
mBtnMockRoute1.setText(R.string.btn_text_stop_mock);
487487
mBtnMockRoute2.setText(R.string.btn_text_stop_mock);
488488
}
489489
}
490490
drawRoute();
491491
}
492492

493+
@Override
494+
public void onRouteMockFinish() {
495+
mBtnMockRoute1.setText(R.string.btn_text_start_mock);
496+
mBtnMockRoute2.setText(R.string.btn_text_start_mock);
497+
}
498+
493499
@Override
494500
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
495501
if (buttonView.getId() == R.id.cb_toggle_pos_mock) {

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/gpsmock/GpsMockManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ public void performMock(LatLng latLng) {
169169
GpsMockConfig.saveMockLocation(new LatLng(latLng.latitude, latLng.longitude));
170170
}
171171

172-
public void startMockRouteLine(List<com.baidu.mapapi.model.LatLng> points, double speed) {
172+
public void startMockRouteLine(List<com.baidu.mapapi.model.LatLng> points, double speed, RouteMockThread.RouteMockStatusCallback statusCallback) {
173173
if (isMockingRoute()) return;
174174

175175
if (isMockingRoute() && mRouteMockThread.isSuspend()){
@@ -184,6 +184,7 @@ public void startMockRouteLine(List<com.baidu.mapapi.model.LatLng> points, doubl
184184
mRouteMockThread = new RouteMockThread();
185185
mRouteMockThread.setIntervalTime(mIntervalTime);
186186
mRouteMockThread.setPoints(points);
187+
mRouteMockThread.setRouteMockStatusCallback(statusCallback);
187188
mRouteMockThread.start();
188189
}
189190
}

Android/dokit-gps-mock/src/main/java/com/didichuxing/doraemonkit/gps_mock/gpsmock/RouteMockThread.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.didichuxing.doraemonkit.gps_mock.gpsmock;
22

3-
import android.util.Log;
4-
53
import com.baidu.mapapi.model.LatLng;
64
import com.didichuxing.doraemonkit.util.LogHelper;
75
import com.didichuxing.doraemonkit.util.ThreadUtils;
@@ -21,6 +19,7 @@ public class RouteMockThread extends Thread {
2119
List<com.baidu.mapapi.model.LatLng> mPoints = new ArrayList<>();
2220
// 坐标点移动间隔时间
2321
private long mIntervalTime;
22+
private RouteMockStatusCallback mRouteMockStatusCallback;
2423

2524
@Override
2625
public void run() {
@@ -58,6 +57,9 @@ private void reset() {
5857
mIndex = 0;
5958
mIsMocking = false;
6059
ToastUtils.showShort("轨迹模拟已结束");
60+
if (mRouteMockStatusCallback != null) {
61+
ThreadUtils.runOnUiThread(() -> mRouteMockStatusCallback.onRouteMockFinish());
62+
}
6163
}
6264

6365
/**
@@ -94,11 +96,19 @@ public void setPoints(List<LatLng> points) {
9496
mPoints.addAll(points);
9597
}
9698

99+
public void setIntervalTime(long intervalTime) {
100+
mIntervalTime = intervalTime;
101+
}
102+
97103
public long getIntervalTime() {
98104
return mIntervalTime;
99105
}
100106

101-
public void setIntervalTime(long intervalTime) {
102-
mIntervalTime = intervalTime;
107+
public void setRouteMockStatusCallback(RouteMockStatusCallback routeMockStatusCallback) {
108+
mRouteMockStatusCallback = routeMockStatusCallback;
109+
}
110+
111+
public interface RouteMockStatusCallback{
112+
void onRouteMockFinish();
103113
}
104114
}

0 commit comments

Comments
 (0)