[290 bus] 1、司机端增加到站围栏 2、滑动出发控件调整
This commit is contained in:
@@ -28,6 +28,8 @@ public class BusStationBean {
|
|||||||
private double lon; //高精坐标
|
private double lon; //高精坐标
|
||||||
private double lat; //高精坐标
|
private double lat; //高精坐标
|
||||||
private int businessType; //站点类型,9:taxi,10:bus
|
private int businessType; //站点类型,9:taxi,10:bus
|
||||||
|
private double gcjLon; //高德
|
||||||
|
private double gcjLat; //高德
|
||||||
private int status;
|
private int status;
|
||||||
private int siteId;
|
private int siteId;
|
||||||
private int seq;
|
private int seq;
|
||||||
@@ -35,6 +37,14 @@ public class BusStationBean {
|
|||||||
private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠
|
private int ifStop = 1; // 是否需要停靠、1需要、0不需要 // TODO: 2021/10/19 原来站点里有设计是否需要停靠字段,现设计暂无,默认都需要停靠
|
||||||
private boolean leaving;
|
private boolean leaving;
|
||||||
|
|
||||||
|
public double getGcjLon() {
|
||||||
|
return gcjLon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getGcjLat() {
|
||||||
|
return gcjLat;
|
||||||
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
public void setName(String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,5 +72,8 @@ class BusConst {
|
|||||||
const val TYPE_MARKER_BUS_ORDER = "TYPE_MARKER_BUS_ORDER"
|
const val TYPE_MARKER_BUS_ORDER = "TYPE_MARKER_BUS_ORDER"
|
||||||
|
|
||||||
const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
|
const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
|
||||||
|
|
||||||
|
//围栏到站 暂定10米
|
||||||
|
const val ARRIVE_AT_END_STATION_DISTANCE = 10
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,6 +17,7 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
import com.amap.api.maps.model.LatLng;
|
import com.amap.api.maps.model.LatLng;
|
||||||
import com.elegant.network.utils.GsonUtil;
|
import com.elegant.network.utils.GsonUtil;
|
||||||
|
import com.mogo.cloud.commons.utils.CoordinateUtils;
|
||||||
import com.mogo.commons.AbsMogoApplication;
|
import com.mogo.commons.AbsMogoApplication;
|
||||||
import com.mogo.commons.debug.DebugConfig;
|
import com.mogo.commons.debug.DebugConfig;
|
||||||
import com.mogo.commons.voice.AIAssist;
|
import com.mogo.commons.voice.AIAssist;
|
||||||
@@ -25,8 +26,10 @@ import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
|
|||||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
|
||||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
|
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
|
||||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
|
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
|
||||||
|
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
|
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
|
||||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||||
|
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
|
||||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
import com.mogo.eagle.core.utilcode.util.ToastUtils;
|
||||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||||
@@ -111,6 +114,8 @@ public class BusOrderModel {
|
|||||||
|
|
||||||
private boolean hadQueryLeaveAwayPassager = false;
|
private boolean hadQueryLeaveAwayPassager = false;
|
||||||
|
|
||||||
|
private volatile boolean isArrivedStation = false;
|
||||||
|
|
||||||
private final Handler handler = new Handler(new Handler.Callback() {
|
private final Handler handler = new Handler(new Handler.Callback() {
|
||||||
@Override
|
@Override
|
||||||
public boolean handleMessage(Message msg) {
|
public boolean handleMessage(Message msg) {
|
||||||
@@ -376,9 +381,42 @@ public class BusOrderModel {
|
|||||||
if (mControllerStatusCallback != null) {
|
if (mControllerStatusCallback != null) {
|
||||||
mControllerStatusCallback.onCarLocationChanged(location);
|
mControllerStatusCallback.onCarLocationChanged(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//是否到站的围栏判断 离站状态并且自动驾驶还未触发到站
|
||||||
|
if (isGoingToNextStation && !isArrivedStation){
|
||||||
|
judgeStartStation(location);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//根据围栏判断,是否到达起点
|
||||||
|
private void judgeStartStation(Location location) {
|
||||||
|
|
||||||
|
if (backgroundCurrentStationIndex -1 < 0 || backgroundCurrentStationIndex > stationList.size()-1){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
BusStationBean upcomingStation = stationList.get( backgroundCurrentStationIndex);
|
||||||
|
|
||||||
|
double startLon = upcomingStation.getGcjLon();
|
||||||
|
double startLat = upcomingStation.getGcjLat();
|
||||||
|
double distance = CoordinateUtils.calculateLineDistance(
|
||||||
|
startLon, startLat,
|
||||||
|
location.getLongitude(), location.getLatitude() );
|
||||||
|
|
||||||
|
Logger.i(TAG, "judgeStartStation() distance = " + distance);
|
||||||
|
|
||||||
|
if ( distance > BusConst.ARRIVE_AT_END_STATION_DISTANCE ) {
|
||||||
|
distance = CoordinateUtils.calculateLineDistance(startLon, startLat,
|
||||||
|
CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lon(),
|
||||||
|
CallerAutoPilotStatusListenerManager.INSTANCE.getCurWgs84Lat());
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( distance <= BusConst.ARRIVE_AT_END_STATION_DISTANCE ) {
|
||||||
|
onArriveAt(null); //无自动驾驶到站信息传null
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询小巴路线
|
* 查询小巴路线
|
||||||
*/
|
*/
|
||||||
@@ -443,6 +481,7 @@ public class BusOrderModel {
|
|||||||
if ( o.getResult() == null || o.getResult().getSites() == null || o.getResult().getSites().isEmpty() ) {
|
if ( o.getResult() == null || o.getResult().getSites() == null || o.getResult().getSites().isEmpty() ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
isArrivedStation = false;
|
||||||
if (!isOneWayOver){
|
if (!isOneWayOver){
|
||||||
CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" );
|
CallerLogger.INSTANCE.d( M_BUS + TAG, "自动驾驶开启开往下一站====" );
|
||||||
//需要更改当前站和下一站的状态 然后渲染
|
//需要更改当前站和下一站的状态 然后渲染
|
||||||
@@ -499,6 +538,9 @@ public class BusOrderModel {
|
|||||||
* @param isRestart
|
* @param isRestart
|
||||||
*/
|
*/
|
||||||
private void startAutopilot(boolean isRestart) {
|
private void startAutopilot(boolean isRestart) {
|
||||||
|
|
||||||
|
isArrivedStation = false;
|
||||||
|
|
||||||
BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex);
|
BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex);
|
||||||
BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1);
|
BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex + 1);
|
||||||
|
|
||||||
@@ -542,6 +584,10 @@ public class BusOrderModel {
|
|||||||
* 到站后重置站点状态
|
* 到站后重置站点状态
|
||||||
*/
|
*/
|
||||||
private void arriveSiteStation(boolean isRestart) {
|
private void arriveSiteStation(boolean isRestart) {
|
||||||
|
if ( backgroundCurrentStationIndex +1 > stationList.size() - 1 ) { //到站短时间内调用多次
|
||||||
|
CallerLogger.INSTANCE.e( M_BUS + TAG, "数组越界" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
int arrivedStationIndex = 0;
|
int arrivedStationIndex = 0;
|
||||||
if (!isRestart){
|
if (!isRestart){
|
||||||
arrivedStationIndex = backgroundCurrentStationIndex + 1;
|
arrivedStationIndex = backgroundCurrentStationIndex + 1;
|
||||||
@@ -890,6 +936,10 @@ public class BusOrderModel {
|
|||||||
CallerLogger.INSTANCE.e( M_BUS + TAG, "到站异常,取消后续操作结束" );
|
CallerLogger.INSTANCE.e( M_BUS + TAG, "到站异常,取消后续操作结束" );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isArrivedStation) return;
|
||||||
|
isArrivedStation = true;
|
||||||
|
|
||||||
if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化
|
if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化
|
||||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
|
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false;
|
||||||
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
|
CallerAutoPilotManager.INSTANCE.setDemoMode(false);
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ public class SlidePanelView extends View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
|
bgRectF = new RectF(0, 0, 0, 0);
|
||||||
bgPaint.setColor(Color.parseColor("#CC0F1325"));
|
bgPaint.setColor(Color.parseColor("#CC0F1325"));
|
||||||
bgPaint.setStyle(Paint.Style.FILL);
|
bgPaint.setStyle(Paint.Style.FILL);
|
||||||
|
|
||||||
@@ -160,7 +161,12 @@ public class SlidePanelView extends View {
|
|||||||
@Override
|
@Override
|
||||||
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
|
||||||
super.onSizeChanged(w, h, oldw, oldh);
|
super.onSizeChanged(w, h, oldw, oldh);
|
||||||
bgRectF = new RectF(0, 0, w, h);
|
if (bgRectF != null){
|
||||||
|
bgRectF.left = 0;
|
||||||
|
bgRectF.top = 0;
|
||||||
|
bgRectF.right = w;
|
||||||
|
bgRectF.bottom = h;
|
||||||
|
}
|
||||||
|
|
||||||
if (matrixAnim != null) {
|
if (matrixAnim != null) {
|
||||||
matrixAnim.cancel();
|
matrixAnim.cancel();
|
||||||
|
|||||||
@@ -169,7 +169,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/module_mogo_och_margin_bottom"
|
android:layout_marginBottom="@dimen/module_mogo_och_margin_bottom"
|
||||||
android:visibility="gone"
|
android:visibility="invisible"
|
||||||
app:BLOCK_START_X="@dimen/module_mogo_och_slide_panel_block_start_x"
|
app:BLOCK_START_X="@dimen/module_mogo_och_slide_panel_block_start_x"
|
||||||
app:BLOCK_START_Y="@dimen/module_mogo_och_slide_panel_block_start_y"
|
app:BLOCK_START_Y="@dimen/module_mogo_och_slide_panel_block_start_y"
|
||||||
app:NORMAL_TEXT_MARGIN_LEFT="@dimen/module_mogo_och_slide_panel_normal_text_margin_left"
|
app:NORMAL_TEXT_MARGIN_LEFT="@dimen/module_mogo_och_slide_panel_normal_text_margin_left"
|
||||||
|
|||||||
Reference in New Issue
Block a user