Merge branch 'test_robotaxi-d_240705_6.5.0.1' into 'release_robotaxi-d_240705_6.5.0.1'

Test robotaxi d 240705 6.5.0.1

See merge request SCA/L4HA/AndroidApp/MoGoEagleEye!870
This commit is contained in:
aibingbing
2024-07-26 10:09:28 +00:00
699 changed files with 20383 additions and 4322 deletions

View File

@@ -119,11 +119,11 @@ public class BusLineModel {
}
public void commitSwitchLineId(int taskId,int lineId){
OchChainLogManager.writeChainLog("选择线路","taskId:"+taskId+"--lineId:"+lineId,true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("选择线路","taskId:"+taskId+"--lineId:"+lineId);
OrderServiceManager.switchLine(mContext,taskId, new OchCommonServiceCallback<BusRoutesResponse>() {
@Override
public void onSuccess(BusRoutesResponse o) {
OchChainLogManager.writeChainLog("选择线路成功","taskId:"+taskId+"--lineId:"+lineId,true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("选择线路成功","taskId:"+taskId+"--lineId:"+lineId);
SharedPrefsMgr.getInstance().putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId);
if (mBusLinesCallback != null){
mBusLinesCallback.onChangeLineIdSuccess();
@@ -133,7 +133,7 @@ public class BusLineModel {
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
OchChainLogManager.writeChainLog("选择线路失败","taskId:"+taskId+"--lineId:"+lineId,true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("选择线路失败","taskId:"+taskId+"--lineId:"+lineId);
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));

View File

@@ -22,10 +22,8 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.CoordinateUtils;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
@@ -48,6 +46,7 @@ import com.mogo.och.bus.util.BusSendTripInfoManager;
import com.mogo.och.bus.util.BusTrajectoryManager;
import com.mogo.och.bus.util.BusVoiceManager;
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager;
import com.mogo.och.common.module.manager.autopilot.line.LineManager;
import com.mogo.och.common.module.manager.socket.lan.ILanMessageListener;
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager;
import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg;
@@ -80,6 +79,7 @@ import com.mogo.och.data.bean.BusRoutesResult;
import com.mogo.och.data.bean.BusStationBean;
import com.mogo.och.data.bean.BusTransferData;
import com.mogo.och.data.manager.cache.CacheDataManager;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
import org.jetbrains.annotations.NotNull;
@@ -142,7 +142,7 @@ public class OrderModel {
public void init() {
mContext = AbsMogoApplication.getApp();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5, mMapLocationListener);
OchLocationManager.addGCJ02Listener(TAG,5, mMapLocationListener);
TrajectoryManager.INSTANCE.addTrajectoryListListenerr(TAG,iTrajectoryListener);
@@ -197,6 +197,8 @@ public class OrderModel {
});
}
// 初始化调用
// 登录状态发生变化调用
public void queryBusCacheRoutes(){
String loginStr = CacheDataManager.Companion.getInstance().getCacheData(
@@ -392,7 +394,7 @@ public class OrderModel {
startOrStopOrderLoop(false);
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
OchLocationManager.removeGCJ02Listener(TAG);
TrajectoryManager.INSTANCE.addTrajectoryListListenerr(TAG,null);
@@ -500,7 +502,7 @@ public class OrderModel {
closeBeautificationMode();
clearStartAutopilotTag();
removeTipRunnables();
updateBusStatus(null);
CacheDataManager.Companion.getInstance().clearCacheData(mContext, BusCacheKey.BUS_LINE_CACHE);
return;
}
@@ -720,7 +722,7 @@ public class OrderModel {
FunctionBuildConfig.isPassStartAutopilotCommand);
//3、距离轨迹15m计算
String resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId());
String resion = OchAutoPilotManager.canStartAutoPilot(busRoutesResult.getLineId());
if(TrajectoryAndDistanceManager.errorTypeNoneLineId.equals(resion)){
MogoLocation nextStationPoint = new MogoLocation();
if (backgroundCurrentStationIndex < stationList.size() - 1) {
@@ -733,7 +735,7 @@ public class OrderModel {
currentStationPoint.setLongitude(busStationBean.getGcjLon());
currentStationPoint.setLatitude(busStationBean.getGcjLat());
setTrajectoryStation(currentStationPoint,nextStationPoint, (long)busRoutesResult.getLineId());
resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId());
resion = OchAutoPilotManager.canStartAutoPilot(busRoutesResult.getLineId());
}
if(!StringUtils.isEmpty(resion)){
ToastUtils.showShort(resion);
@@ -742,9 +744,7 @@ public class OrderModel {
}
//4、ssm 给出数据
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) {
ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() +
", 请稍候重试");
if (!OchAutoPilotManager.canStartAutoPilotSSM()) {
triggerUnableStartAPReasonEvent();
return;
}
@@ -779,8 +779,7 @@ public class OrderModel {
* 到站后重置站点状态
*/
private void arriveSiteStation(String changeInfo) {
OchChainLogManager.writeChainLog("触发进站", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("触发进站", changeInfo);
if ( backgroundCurrentStationIndex +1 > stationList.size() - 1 ) { //到站短时间内调用多次
CallerLogger.e( M_BUS + TAG, "数组越界" );
return;
@@ -890,8 +889,7 @@ public class OrderModel {
String changeInfo = "taskId:" + currentTaskId + "--lineId:" + currentLineId +
"--currentStationName:"+currentStationName+"--finalNextStationName:"+finalNextStationName;
OchChainLogManager.writeChainLog("滑动出发", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("滑动出发", changeInfo);
OrderServiceManager.leaveStation(mContext,
busStationBean.getSeq(),
busStationBean.getSiteId(),
@@ -899,8 +897,7 @@ public class OrderModel {
new OchCommonServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData o) {
OchChainLogManager.writeChainLog("滑动出发成功", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("滑动出发成功", changeInfo);
}
@@ -962,11 +959,15 @@ public class OrderModel {
* @param result
*/
private void updateBusStatus(BusRoutesResult result) {
if (result == null) return;
if (result == null) {
LineManager.setLineId(-1);
return;
}
busRoutesResult = result;
List<BusStationBean> site = result.getSites();
currentTaskId = result.getTaskId();
currentLineId = result.getLineId();
LineManager.setLineId(currentLineId);
stationList.clear();
stationList.addAll(site);
@@ -1234,8 +1235,9 @@ public class OrderModel {
// 车机端上传心跳数据(只在出车状态时上传)
public void runCarHeartbeat() {
double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
MogoLocation gcj02Location = OchLocationManager.getGCJ02Location();
double mLatitude = gcj02Location.getLatitude();
double mLongitude = gcj02Location.getLongitude();
OrderServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude,
new OchCommonServiceCallback<BaseData>() {
@Override
@@ -1261,9 +1263,7 @@ public class OrderModel {
// 登出
public void logout() {
double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
LoginStatusManager.loginOut(mLatitude, mLongitude);
LoginStatusManager.loginOut();
}
public void triggerStartServiceEvent(boolean isRestart, boolean send) {

View File

@@ -324,7 +324,7 @@ object OrderServiceManager {
)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat"))
.subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat",false))
}
}

View File

@@ -21,9 +21,6 @@ object BusVoiceManager {
}
fun arrivedStationBus(siteNameCN: String?, siteNameKR: String?) {
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
return
}
val context = AbsMogoApplication.getApp()
val list: MutableList<LangTtsEntity> = ArrayList()
siteNameCN?.let {
@@ -33,7 +30,7 @@ object BusVoiceManager {
)
val engTTS = LangTtsEntity(
context.getString(R.string.bus_arrived_station_english_tip, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
val koreanTTS = LangTtsEntity(
context.getString(R.string.bus_arrived_station_korean_tip, siteNameKR?:it),
@@ -57,7 +54,7 @@ object BusVoiceManager {
)
val engTTS = LangTtsEntity(
context.getString(R.string.bus_leave_station_english_tip, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
list.add(chineseTTS)
list.add(engTTS)

View File

@@ -28,7 +28,7 @@
android:layout_height="@dimen/dp_269"
android:layout_marginStart="@dimen/dp_10"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
app:layout_constraintTop_toTopOf="parent" />
<!--V2X预警红色边框-->
<com.mogo.eagle.core.function.hmi.ui.widget.V2XWarningView
@@ -101,11 +101,31 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_71"
app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity"
app:layout_goneMarginEnd="40dp"
app:layout_goneMarginTop="@dimen/dp_236"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"
app:layout_goneMarginEnd="40dp"
app:layout_goneMarginTop="@dimen/dp_236" />
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
android:layout_marginTop="@dimen/dp_71"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"
app:layout_goneMarginEnd="40dp"
app:layout_goneMarginTop="@dimen/dp_236" />
<!-- 地图marker点击触发路侧直播 -->
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
android:layout_width="@dimen/dp_800"
android:layout_height="@dimen/dp_560"
android:layout_marginTop="@dimen/dp_333"
android:layout_marginEnd="@dimen/dp_50"
android:visibility="gone"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!--消息盒子选择入口-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
@@ -163,10 +183,10 @@
android:layout_height="@dimen/dp_185"
android:layout_marginStart="@dimen/dp_9"
android:layout_marginTop="-31dp"
android:paddingTop="@dimen/dp_27"
android:paddingBottom="@dimen/dp_32"
android:background="@drawable/bus_autopilot_0_1_status_bg"
android:gravity="center"
android:paddingTop="@dimen/dp_27"
android:paddingBottom="@dimen/dp_32"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fl_speed"
tools:visibility="visible">
@@ -200,8 +220,16 @@
android:layout_marginLeft="@dimen/dp_10"
android:layout_marginTop="-24dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/module_mogo_och_autopilot_status"
/>
app:layout_constraintTop_toBottomOf="@id/module_mogo_och_autopilot_status" />
<com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver
app:layout_constraintStart_toEndOf="@+id/module_mogo_och_station_panel_container"
app:layout_constraintBottom_toBottomOf="@+id/module_mogo_och_station_panel_container"
android:layout_marginBottom="@dimen/dp_28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!--订单调试页面-->
<include
android:id="@+id/module_mogo_och_bus_test_bar"
@@ -217,8 +245,8 @@
android:id="@+id/module_mogo_och_arrived_tv"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"
android:layout_marginBottom="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_19"
android:layout_marginBottom="@dimen/dp_16"
android:background="@drawable/common_arrive_station_selector"
android:elevation="@dimen/dp_10"
android:gravity="center"
@@ -230,43 +258,42 @@
<com.mogo.och.common.module.wigets.map.toolsview.ToolsView
android:id="@+id/toolsView"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/module_mogo_och_arrived_tv"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<!--切换地图远近事件 @dimen/module_switch_map -->
<com.mogo.och.common.module.wigets.map.switchvisual.VisualView
android:id="@+id/switch_visual_view"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/toolsView"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
app:layout_constraintLeft_toRightOf="@id/module_mogo_och_arrived_tv" />
<com.mogo.och.common.module.wigets.map.reportworkorder.ReportWorkOrderView
android:id="@+id/reportworkorderview"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/switch_visual_view"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.eagle.core.function.hmi.ui.widget.RomaTaxiView
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/toolsView" />
<com.mogo.eagle.core.function.hmi.ui.widget.RomaTaxiView
android:id="@+id/rtv_switch"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/reportworkorderview"
app:roma_close_bg="@drawable/common_driverroma_normal"
app:roma_open_bg="@drawable/common_driver_roma_press" />
<com.mogo.och.common.module.wigets.map.drawline.LineView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/rtv_switch"
android:layout_marginStart="-11dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -305,16 +332,15 @@
<com.mogo.och.common.module.wigets.LoadingMapStatusView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:layout_height="match_parent" />
<com.mogo.eagle.core.function.hmi.ui.widget.ConnectionProcessView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:layout_marginBottom="@dimen/dp_26"
app:layout_constraintBottom_toTopOf="@id/viewVersionName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -8,7 +8,6 @@ import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -29,8 +28,10 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.distance.IDistanceListener
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.manager.loop.LoopInfo
import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager
@@ -79,7 +80,7 @@ object OrderModel {
//自动驾驶状态监听
OchAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener)
// 定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, mMapLocationListener)
OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener)
// 距离终点站距离监听
TrajectoryAndDistanceManager.addDistanceListener(TAG, trajectoryListener)
AbnormalFactorsLoopManager.startLoopAbnormalFactors(mContext!!)
@@ -93,7 +94,7 @@ object OrderModel {
//自动驾驶状态监听
OchAutoPilotStatusListenerManager.removeListener(mGoAutopilotStatusListener)
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
OchLocationManager.removeGCJ02Listener(TAG)
// 距离终点站距离监听
TrajectoryAndDistanceManager.removeListener(TAG)
@@ -261,6 +262,7 @@ object OrderModel {
)
return
}
OchChainLogManager.writeChainLog("订单信息流转","$data");
if (routesResult != null &&
routesResult!!.writeVersion < data.result.writeVersion

View File

@@ -41,14 +41,14 @@ object BusPassengerServiceManager {
SharedPrefsMgr.getInstance().token,
LoginLanPassengerSocket.driverSn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate"))
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate",false))
}else{
mBusPassengerServiceApi.queryDriverSiteByCoordinate(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
BusPassengerQueryLineRequest(LoginLanPassengerSocket.driverSn)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate"))
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate",false))
}
}

View File

@@ -110,9 +110,9 @@ class PM2HPMapFragment :
it?.let{
builder.rotate(it.angle.toFloat())
}
val overlayManager = getOverlayManager()
overlayManager?.showOrUpdatePoint(builder.build())
}
val overlayManager = getOverlayManager()
overlayManager?.showOrUpdatePoint(builder.build())
}
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable)
}

View File

@@ -29,7 +29,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -46,8 +45,11 @@ import com.mogo.och.common.module.manager.CharterSendTripInfoManager.END_TRIP
import com.mogo.och.common.module.manager.CharterSendTripInfoManager.START_TRIP
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.autopilot.line.LineManager
import com.mogo.och.common.module.manager.device.LightAirconditionDoorManager
import com.mogo.och.common.module.manager.device.LightAirconditionDoorStatusManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager.startLoopAbnormalFactors
import com.mogo.och.common.module.manager.socket.cloud.AbnormalFactorsLoopManager.stopLoopAbnormalFactors
import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager
@@ -75,8 +77,6 @@ import com.mogo.och.data.bean.*
*/
class DriverM1Model {
var mLongitude = 0.0
var mLatitude = 0.0
private var mContext: Context? = null
private var isArrivedStation: Boolean = false
@@ -117,7 +117,7 @@ class DriverM1Model {
fun init(context: Context) {
mContext = context
// 定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 5, mMapLocationListener)
OchLocationManager.addGCJ02Listener(TAG, 5, mMapLocationListener)
//开启自驾后 异常信息返回
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener)
@@ -173,7 +173,7 @@ class DriverM1Model {
fun release() {
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
OchLocationManager.removeGCJ02Listener(TAG)
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null)
releaseSocketMessageListener(
@@ -362,8 +362,6 @@ class DriverM1Model {
object : IMoGoChassisLocationGCJ02Listener {
override fun onChassisLocationGCJ02(gnssInfo: MogoLocation?) {
if (null == gnssInfo) return
mLongitude = gnssInfo.longitude
mLatitude = gnssInfo.latitude
//是否到站的围栏判断 自动驾驶还未触发到站
if (!isArrivedStation) {
@@ -502,14 +500,10 @@ class DriverM1Model {
if (!CallerAutoPilotControlManager.isCanStartAutopilot(true)) {
return
}
// ssm 给出数据
if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) {
ToastUtils.showLong(
OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason +
", 请稍候重试"
)
triggerUnableStartAPReasonEvent()
return
//4、ssm 给出数据
if (!OchAutoPilotManager.canStartAutoPilotSSM()) {
triggerUnableStartAPReasonEvent();
return;
}
triggerStartServiceEvent(false, false)
@@ -546,7 +540,7 @@ class DriverM1Model {
// 登出
fun logout() {
LoginStatusManager.loginOut(mLatitude, mLongitude)
LoginStatusManager.loginOut()
}
fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) {
@@ -609,9 +603,10 @@ class DriverM1Model {
parameters.routeName = mCurrentOrder?.lineName!!
parameters.startName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.startSiteName)
parameters.endName = PinYinUtil.getPinYinHeadChar(mCurrentOrder?.siteName)
val gcJ02Location = OchLocationManager.getGCJ02Location()
parameters.startLatLon = AutopilotControlParameters.AutoPilotLonLat(
mLatitude,
mLongitude
gcJ02Location.latitude,
gcJ02Location.longitude
)
parameters.endLatLon =
AutopilotControlParameters.AutoPilotLonLat(mCurrentOrder?.wgs84Lat!!, mCurrentOrder?.wgs84Lon!!)
@@ -697,6 +692,7 @@ class DriverM1Model {
if (TextUtils.isEmpty(data.data.orderNo)){//还未换车,显示还车状态
mOrderCallback?.updateReturnCarStatus(false)
mCurrentOrder = null
LineManager.setLineId(-1)
currentChangeDestMsg = null
sendCharterEndTripInfo()
startOrStopCheckCountDown(false)
@@ -710,6 +706,7 @@ class DriverM1Model {
mOrderCallback?.updateReturnCarStatus(true)
clearAutopilotControlParameters()
mCurrentOrder = null
LineManager.setLineId(-1)
currentChangeDestMsg = null
isArrivedStation = false
startOrStopCheckCountDown(false)
@@ -736,6 +733,7 @@ class DriverM1Model {
d(SceneConstant.M_CHARTER_D + TAG, "data.data is null")
isArrivedStation = false
mCurrentOrder = null
LineManager.setLineId(-1)
queryCurrentServiceStatus()
return
}
@@ -746,9 +744,19 @@ class DriverM1Model {
d(SceneConstant.M_CHARTER_D + TAG, "queryCurrentOrder order =" +
GsonUtils.toJson(data.data))
OchChainLogManager.writeChainLog("订单信息流转","$data");
mCurrentOrder = data.data
mCurrentOrder?.lineId.let {
if (it == null || it < 0) {
LineManager.setLineId(-1)
} else {
LineManager.setLineId(it)
}
}
updateToClientData()
mOrderCallback?.updateOrderUI(data.data)

View File

@@ -59,7 +59,7 @@ object DriverM1ServiceManager {
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
)?.transformTry()
?.subscribe(OchCommonSubscribeImpl(context!!, callback, "queryCurrentOrder"))
?.subscribe(OchCommonSubscribeImpl(context!!, callback, "queryCurrentOrder",false))
}
fun checkOrderCountDown(context: Context?,

View File

@@ -5,8 +5,8 @@ import com.magic.mogo.och.charter.model.DriverM1Model
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import kotlin.math.abs
class CarStatusViewModel: ViewModel(), IMoGoAutopilotStatusListener,
@@ -24,12 +24,12 @@ class CarStatusViewModel: ViewModel(), IMoGoAutopilotStatusListener,
override fun onCleared() {
super.onCleared()
this.viewCallback = null
CallerChassisLocationGCJ02ListenerManager.removeListener(DriverM1Model.TAG)
OchLocationManager.removeGCJ02Listener(DriverM1Model.TAG)
}
fun setAutopilotStatusCallback(viewCallback:ICarStatusCallback){
this.viewCallback = viewCallback
CallerChassisLocationGCJ02ListenerManager.addListener(DriverM1Model.TAG, 3, this)
OchLocationManager.addGCJ02Listener(DriverM1Model.TAG, 3, this)
}
interface ICarStatusCallback{

View File

@@ -114,6 +114,16 @@
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_71"
app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity"
app:layout_goneMarginEnd="40dp"
app:layout_goneMarginTop="@dimen/dp_236"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
<!--消息盒子选择入口-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
android:id="@+id/viewDriverMsgBoxButton"
@@ -187,6 +197,13 @@
app:layout_constraintTop_toBottomOf="@id/autopilot_status"
app:layout_goneMarginTop="@dimen/dp_530" />
<com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver
app:layout_constraintStart_toEndOf="@+id/module_mogo_och_station_panel_container"
app:layout_constraintBottom_toBottomOf="@+id/module_mogo_och_station_panel_container"
android:layout_marginBottom="@dimen/dp_46"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!--订单信息-->
<include
android:id="@+id/module_mogo_och_bus_test_bar"
@@ -223,23 +240,21 @@
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<!--切换地图远近事件 @dimen/module_switch_map -->
<com.mogo.och.common.module.wigets.map.switchvisual.VisualView
android:id="@+id/switch_visual_view"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/toolsView"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.och.common.module.wigets.map.reportworkorder.ReportWorkOrderView
android:id="@+id/reportworkorderview"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/switch_visual_view"
app:layout_constraintLeft_toRightOf="@id/toolsView"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.och.common.module.wigets.map.drawline.LineView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/reportworkorderview"
android:layout_marginStart="-11dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
@@ -349,7 +364,7 @@
<com.mogo.eagle.core.function.hmi.ui.widget.ConnectionProcessView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:layout_marginBottom="@dimen/dp_26"
app:layout_constraintBottom_toTopOf="@id/viewVersionName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -49,6 +49,7 @@ import com.mogo.och.common.module.manager.autopilot.autopilot.ArrivedStation
import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.beautifymode.BeautifyManager
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
@@ -394,7 +395,7 @@ object CharterPassengerModel {
this.orderInfo = orderData
}
//计算终点距离
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo ->
OchLocationManager.getGCJ02Location().let { currentInfo ->
// 两点之间的距离
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
currentInfo.longitude,
@@ -644,7 +645,7 @@ object CharterPassengerModel {
*/
private fun calculateDistance() {
//mLocation gcj坐标
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
OchLocationManager.getGCJ02Location().let {
orderInfo?.let { order ->
d(M_BUS_P + "calculateDistance", "订单信息:$order")
if (order.siteId == null || order.siteId == 0L ||
@@ -734,7 +735,7 @@ object CharterPassengerModel {
private fun setOrderStatus(orderStatus: OrderStatusEnum) {
if (this.orderStatus != orderStatus) {
d(M_BUS_P + TAG, "${this.orderInfo?.orderNo}新的状态:$orderStatus")
OchChainLogManager.writeChainLog(this.orderInfo.toString(),"新的状态:$orderStatus")
OchChainLogManager.writeChainLog(this.orderStatus.name,"新的状态:${this.orderInfo}")
this.orderStatus = orderStatus
BeautifyManager.notifyViewChange(BeautifyManager.ChangeTypeEnum.ORDER_STATU_CHANGE)
for (callback in orderStatusChangeListeners.values) {
@@ -758,7 +759,7 @@ object CharterPassengerModel {
val distanceMap: MutableMap<Float, Int> = TreeMap()
// 计算所有点的距离
data.forEachIndexed { index, siteInfo ->
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let { currentInfo ->
OchLocationManager.getGCJ02Location().let { currentInfo ->
// 两点之间的距离
val calculateLineDistance = CoordinateUtils.calculateLineDistance(
currentInfo.longitude,
@@ -806,7 +807,7 @@ object CharterPassengerModel {
if (middle == 0) {
return Pair(1, false)
}
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
OchLocationManager.getGCJ02Location().let {
// 仅计算 距离最近的站点middle 附近5个坐标的夹角
// middle middle-1
@@ -1146,13 +1147,9 @@ object CharterPassengerModel {
if (!CallerAutoPilotControlManager.isCanStartAutopilot(true)) {
return
}
// 4、ssm 给出数据
if (!OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) {
ToastCharterUtils.showToastLong(
OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason +
", 请稍候重试"
)
return
//4、ssm 给出数据
if (!OchAutoPilotManager.canStartAutoPilotSSM()) {
return;
}
val parameters = initAutopilotControlParameters()
if (null == parameters) {
@@ -1184,7 +1181,7 @@ object CharterPassengerModel {
}
val parameters = AutopilotControlParameters()
orderInfo?.let { orderInfo ->
CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().let { startPoint ->
OchLocationManager.getWgs02Location().let { startPoint ->
val startWgsLon: Double = startPoint.longitude
val startWgsLat: Double = startPoint.latitude
val endWgsLon: Double = orderInfo.wgs84Lon!!

View File

@@ -64,7 +64,7 @@ object BusPassengerServiceManager {
return
}
mBusPassengerServiceApi.queryOrderInfo().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "order"))
.subscribe(OchCommonSubscribeImpl(context, callback, "order",false))
}
@JvmStatic
@@ -93,7 +93,7 @@ object BusPassengerServiceManager {
return
}
mBusPassengerServiceApi.queryBusinessStatus().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "businessStatus"))
.subscribe(OchCommonSubscribeImpl(context, callback, "businessStatus",false))
}
@@ -138,7 +138,7 @@ object BusPassengerServiceManager {
return
}
mBusPassengerServiceApi.queryBusinessTime().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime"))
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime",false))
}
@JvmStatic

View File

@@ -4,13 +4,13 @@ import androidx.lifecycle.ViewModel
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.charter.passenger.R
import com.mogo.och.charter.passenger.callback.IDistanceCallback
import com.mogo.och.charter.passenger.model.CharterPassengerModel
import com.mogo.och.charter.passenger.model.IOrderStatusChangeListener
import com.mogo.och.charter.passenger.model.OrderStatusEnum
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.NumberFormatUtil
import kotlin.math.abs
@@ -24,7 +24,7 @@ class ItineraryViewModel : ViewModel(), IMoGoChassisLocationGCJ02Listener, IDist
private var viewCallback: ItineraryViewCallback? = null
init {
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, this)
OchLocationManager.addGCJ02Listener(TAG, 3, this)
CharterPassengerModel.setStationDistanceListener(TAG, this)
CharterPassengerModel.setStatusChangeListener(TAG, this)
}
@@ -32,7 +32,7 @@ class ItineraryViewModel : ViewModel(), IMoGoChassisLocationGCJ02Listener, IDist
override fun onCleared() {
super.onCleared()
this.viewCallback = null
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
OchLocationManager.removeGCJ02Listener(TAG)
CharterPassengerModel.setStationDistanceListener(TAG, null)
CharterPassengerModel.setStatusChangeListener(TAG, null)
}

View File

@@ -6,7 +6,6 @@ import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -26,6 +25,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.ChangeDestMsg
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.LineSite
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.manager.stopside.StopSideManager
import com.mogo.och.common.module.manager.loop.BizLoopManager
@@ -366,8 +366,7 @@ class SelectLineViewModel : ViewModel(), IOrderStatusChangeListener {
}
fun canSwitchLine(): Boolean {
val gnssSpeed =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().gnssSpeed
val gnssSpeed = OchLocationManager.getGCJ02Location().gnssSpeed
if (gnssSpeed < 0.5) {
when (CallerAutoPilotStatusListenerManager.getState()) {
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {// 不可自动驾驶

View File

@@ -21,7 +21,7 @@ object CharterVoiceManager {
)
val engTTS = LangTtsEntity(
contenxt.getString(R.string.charter_arrived_station_en, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
val koreanTTS = LangTtsEntity(
contenxt.getString(R.string.charter_arrived_station_ko, siteNameKR?:it),
@@ -45,7 +45,7 @@ object CharterVoiceManager {
)
val engTTS = LangTtsEntity(
contenxt.getString(R.string.charter_leave_station_en, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
list.add(chineseTTS)
list.add(engTTS)

View File

@@ -20,6 +20,7 @@ import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.RoleEnum
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.OpenOrderStatusEnum
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.EnvType
import com.mogo.och.common.module.manager.socket.lan.bean.ProjectType
@@ -97,9 +98,9 @@ class LoginProvider : LoginService {
LoginModel.queryCarStatus()
}
override fun loginOut(mLatitude: Double, mLongitude: Double) {
CallerLogger.d(tag, "loginOut mLatitude:${mLatitude}--mLongitude:${mLongitude}")
LoginModel.logout(mLatitude, mLongitude)
override fun loginOut() {
CallerLogger.d(tag, "loginOut ")
LoginModel.logout()
}
override fun checkBusiness(businessType: Int): Boolean {
@@ -145,7 +146,9 @@ class LoginProvider : LoginService {
override fun setLoginInfo(loginInfo: LoginInfo) {
CallerLogger.d(tag, "setLoginInfo:${loginInfo}")
this.loginInfo = loginInfo
if(this.loginInfo!=loginInfo){
this.loginInfo = loginInfo
}
}
override fun getLoginInfo(): LoginInfo? {
@@ -172,6 +175,7 @@ class LoginProvider : LoginService {
override fun setLoginStatus(loginStatus: LoginStatusEnum) {
CallerLogger.d(tag, "setLoginStatus:${loginStatus}----old${this.loginStatus}")
if (loginStatus != this.loginStatus) {
OchChainLogManager.writeChainLog("登录状态变化","${this.loginStatus}-->${loginStatus}");
this.loginStatus = loginStatus
LoginStatusManager.invokeLoginStatusChange(loginStatus)
}
@@ -194,6 +198,7 @@ class LoginProvider : LoginService {
override fun setOpenOrderStatusType(type: Int) {
CallerLogger.d(tag, "setOpenOrderStatusType:${type}")
if (openOrderStatusEnum.code != type) {
OchChainLogManager.writeChainLog("接单状态变化","${this.openOrderStatusEnum}-->${OpenOrderStatusEnum.valueOf(type)}");
this.openOrderStatusEnum = OpenOrderStatusEnum.valueOf(type)
LoginStatusManager.invokeLOpenOrderStatusChange(this.openOrderStatusEnum)
}

View File

@@ -1,5 +1,8 @@
package com.mogo.och.biz.login.bean;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
/**
* Created by yyk on 2021/8/19
* 登出请求参数
@@ -17,9 +20,10 @@ public class TaxiLogoutReqBean {
public double lat;
public double lon;
public Location4Login(double lat, double lon) {
this.lat = lat;
this.lon = lon;
public Location4Login() {
MogoLocation gcj02Location = OchLocationManager.getGCJ02Location();
this.lat = gcj02Location.getLatitude();
this.lon = gcj02Location.getLongitude();
}
}
}

View File

@@ -8,8 +8,6 @@ import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
@@ -27,7 +25,7 @@ import com.mogo.och.common.module.biz.login.BusinessEnum
import com.mogo.och.common.module.biz.login.LoginStatusEnum
import com.mogo.och.common.module.biz.login.LoginStatusEnum.Companion.valueOf
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey
import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus
import com.mogo.och.common.module.network.OchCommonServiceCallback
@@ -125,7 +123,7 @@ object LoginModel {
fun gotoLogin(phone: String, code: String) {
mContext?.let {
val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val location = OchLocationManager.getGCJ02Location()
val location4Login = TaxiLoginReqBean.Location4Login(location.latitude, location.longitude)
OchCommonServiceManager.gotoLoginBycode(it, phone, code, location4Login,
object : OchCommonServiceCallback<TaxiLoginRespBean> {
@@ -179,9 +177,7 @@ object LoginModel {
if (valueOf(data.data.driverStatus) == LoginStatusEnum.Login) {
// 业务不支持 去退出登录
if (!LoginStatusManager.checkBusiness(data.data.businessType)) {
val mLatitude = getChassisLocationGCJ02().latitude
val mLongitude = getChassisLocationGCJ02().longitude
LoginStatusManager.loginOut(mLatitude, mLongitude)
LoginStatusManager.loginOut()
return
}
}
@@ -220,8 +216,8 @@ object LoginModel {
}
// 登出
fun logout(mLatitude: Double, mLongitude: Double) {
val location4Login = TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude)
fun logout() {
val location4Login = TaxiLogoutReqBean.Location4Login()
OchCommonServiceManager.logout(
mContext!!, location4Login,
object : OchCommonServiceCallback<BaseData> {

View File

@@ -152,14 +152,14 @@ object OchCommonServiceManager {
SharedPrefsMgr.getInstance().token,
sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus"))
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus",false))
}else{
ochLoginServiceSaasEh.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus"))
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus",false))
}
}

View File

@@ -69,6 +69,7 @@ dependencies {
implementation rootProject.ext.dependencies.litezxing
api rootProject.ext.dependencies.flexbox
api project(":OCH:common:data")
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {

View File

@@ -11,6 +11,9 @@ import com.google.gson.reflect.TypeToken
import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.angle.scenes.CrossRoad
import com.mogo.eagle.core.function.angle.scenes.Default
import com.mogo.eagle.core.function.angle.scenes.LongSight
import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.V2N
import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
@@ -23,6 +26,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListener
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapRomaListener
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
@@ -57,6 +61,7 @@ object DebugDataDispatch {
const val stopSite = "stopSite"
const val v2N = "xiaozhiV2N"
const val romal = "romal"
const val visualView = "visual"
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "location" --es path "1111/11111"
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "globalPath" --es path "sy73.json"
@@ -69,6 +74,7 @@ object DebugDataDispatch {
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "stopSite" --ei state 6 --ei action 1
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "xiaozhiV2N" --es poiType "10002" --ei state 0
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "romal" --ei show 0
// adb shell am broadcast -a com.mogo.launcher.debug -f 0x011000000 --es type "visual" --ei show 0
val ROOT_PATH =
@@ -170,6 +176,22 @@ object DebugDataDispatch {
pncAction.parkScenarioAction = planningaction.build()
CallerPlanningActionsListenerManager.invokePNCActions(pncAction.build())
}
visualView ->{
val state = intent.getIntExtra("show", 0)
when (state) {
0 -> {
CallerVisualAngleManager.changeScene(LongSight())
}
1 -> {
CallerVisualAngleManager.changeScene(Default())
}
2 -> {
CallerVisualAngleManager.changeScene(CrossRoad())
}
else -> {}
}
}
romal ->{
val state = intent.getIntExtra("show", 0)
CallerMapRomaListener.invokeMapRomaRange(state==0)

View File

@@ -1,5 +1,7 @@
package com.mogo.och.common.module.biz.login;
import java.util.Objects;
public class LoginInfo {
private int driverStatus; //1登录0登出
private int servingStatus;//1接单中0暂停接单
@@ -157,4 +159,54 @@ public class LoginInfo {
", photos='" + photos + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
LoginInfo loginInfo = (LoginInfo) o;
if (driverStatus != loginInfo.driverStatus) return false;
if (servingStatus != loginInfo.servingStatus) return false;
if (businessType != loginInfo.businessType) return false;
if (purpose != loginInfo.purpose) return false;
if (!Objects.equals(orderNo, loginInfo.orderNo))
return false;
if (!Objects.equals(sn, loginInfo.sn)) return false;
if (!Objects.equals(plateNumber, loginInfo.plateNumber))
return false;
if (!Objects.equals(phone, loginInfo.phone)) return false;
if (!Objects.equals(lineId, loginInfo.lineId))
return false;
if (!Objects.equals(taskId, loginInfo.taskId))
return false;
if (!Objects.equals(vin, loginInfo.vin)) return false;
if (!Objects.equals(cityCode, loginInfo.cityCode))
return false;
if (!Objects.equals(brand, loginInfo.brand)) return false;
if (!Objects.equals(carModel, loginInfo.carModel))
return false;
return Objects.equals(photos, loginInfo.photos);
}
@Override
public int hashCode() {
int result = driverStatus;
result = 31 * result + servingStatus;
result = 31 * result + businessType;
result = 31 * result + (orderNo != null ? orderNo.hashCode() : 0);
result = 31 * result + purpose;
result = 31 * result + (sn != null ? sn.hashCode() : 0);
result = 31 * result + (plateNumber != null ? plateNumber.hashCode() : 0);
result = 31 * result + (phone != null ? phone.hashCode() : 0);
result = 31 * result + (lineId != null ? lineId.hashCode() : 0);
result = 31 * result + (taskId != null ? taskId.hashCode() : 0);
result = 31 * result + (vin != null ? vin.hashCode() : 0);
result = 31 * result + (cityCode != null ? cityCode.hashCode() : 0);
result = 31 * result + (brand != null ? brand.hashCode() : 0);
result = 31 * result + (carModel != null ? carModel.hashCode() : 0);
result = 31 * result + (photos != null ? photos.hashCode() : 0);
return result;
}
}

View File

@@ -25,7 +25,7 @@ interface LoginService :CommonService {
/**
* 登出
*/
fun loginOut(mLatitude:Double,mLongitude:Double)
fun loginOut()
fun checkBusiness(businessType: Int): Boolean
fun checkAllEnv(
projectType: ProjectType,

View File

@@ -36,8 +36,8 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
}
@JvmStatic
fun loginOut(mLatitude: Double, mLongitude: Double) {
loginService?.loginOut(mLatitude, mLongitude)
fun loginOut() {
loginService?.loginOut()
}
@JvmStatic

View File

@@ -1,4 +1,6 @@
package com.mogo.och.taxi.passenger.ui.model.order
package com.mogo.och.common.module.biz.order
import com.mogo.och.data.taxi.BaseOrderBean
interface OrderListener {
// 当前进行单状态变更:新到进行中订单、进行中单状态变更

View File

@@ -0,0 +1,56 @@
package com.mogo.och.common.module.biz.order
import com.mogo.och.data.taxi.BaseOrderBean
import java.util.concurrent.ConcurrentHashMap
object OrderModel {
private val mOrderStatusCallbackMap: MutableMap<String, OrderListener> = ConcurrentHashMap()
var orderBean: BaseOrderBean?=null
var preOrderBean: BaseOrderBean?=null
init {
}
fun setOrderStatusCallback(tag: String?, callback: OrderListener?) {
if (tag == null || "" == tag) return
if (callback == null) {
mOrderStatusCallbackMap.remove(tag)
return
}
mOrderStatusCallbackMap[tag] = callback
}
fun <T: BaseOrderBean?>invokeListener(newOrderBean: T?){
preOrderBean?.let {
if(newOrderBean!=null){
if(it.orderNo==newOrderBean.orderNo){
return
}
}
}
if(this.orderBean==null){
this.orderBean = newOrderBean
}else {
if(newOrderBean==null){
this.preOrderBean = this.orderBean
this.orderBean = null
}else{
if(this.orderBean!!.orderNo == newOrderBean.orderNo){
if(this.orderBean!!.orderStatus >= newOrderBean.orderStatus){
return
}else{
this.orderBean = newOrderBean
}
}else{
this.orderBean = newOrderBean
}
}
}
for (callback in mOrderStatusCallbackMap.values) {
callback.onCurrentOrderStatusChanged(newOrderBean)
}
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.constant
package com.mogo.och.common.module.biz.order
/**
* Created on 2021/12/7

View File

@@ -59,9 +59,18 @@ public class OCHAdasAbilityManager implements IMoGoAutopilotActionsListener, IMo
return isAutopilotAbility;
}
public String getAbilityVersion() {
return launchConditionData == null ? "" : launchConditionData.abilityVersion;
}
public String getOriginalData() {
return launchConditionData == null ? "" : launchConditionData.getJson();
}
public ArrayList<UnableLaunchReason> getUnableAutopilotReasons() {
return unableAutopilotReasons;
}
public String getAutopilotUnAbilityReason(){
try {
if(unableAutopilotReasons==null||unableAutopilotReasons.isEmpty()){

View File

@@ -1,9 +1,18 @@
package com.mogo.och.common.module.manager.autopilot.autopilot
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.msgbox.AutopilotMsg
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.function.api.autopilot.IMoGoReceiveReceivedAckListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager
import com.mogo.och.common.module.manager.autopilot.line.LineManager
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager
import com.zhjt.mogo.adas.common.MessageType
import com.zhjt.mogo.adas.data.bean.ReceivedAck
import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status
@@ -15,6 +24,42 @@ object OchAutoPilotManager : IMoGoReceiveReceivedAckListener {
CallerReceiveReceivedAckListenerManager.addListener(TAG,this)
}
@JvmStatic
fun canStartAutoPilot(lineId: Number?): String {
return TrajectoryAndDistanceManager.canStartAutopilot(lineId).apply {
if (!isNullOrBlank()) {
// 去启动绘制高精地图上的轨迹
val drawGlobalTrajectory = LineManager.drawGlobalTrajectory()
if (!drawGlobalTrajectory.first) {
ToastUtils.showLong(drawGlobalTrajectory.second)
}
}
}
}
@JvmStatic
fun canStartAutoPilotSSM(): Boolean {
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().autopilotAbilityStatus) {
val reasons = OCHAdasAbilityManager.getInstance().unableAutopilotReasons
if ("AutopilotAbility440" == OCHAdasAbilityManager.getInstance().abilityVersion && !reasons.isNullOrEmpty()) {
val msg = reasons[0].unableLaunchReason + " 来源:" + reasons[0].source
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.AUTOPILOT,
AutopilotMsg(0, "自动驾驶启动失败", msg, System.currentTimeMillis())
)
)
} else {
ToastUtils.showLong(
OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason +
", 请稍候重试"
);
}
return false
}
return true
}
@JvmStatic
fun startAutoPilot(controlParameters: AutopilotControlParameters?) {
OchAutopilotAnalytics.triggerStartAutopilotParameters(controlParameters)

View File

@@ -0,0 +1,9 @@
package com.mogo.och.common.module.manager.autopilot.line;
public interface ILineCallback {
default void clearLineSuccess(){}
default void drawLineSuccess(){}
default void drawLineFail(){}
}

View File

@@ -0,0 +1,75 @@
package com.mogo.och.common.module.manager.autopilot.line
import com.mogo.eagle.core.function.call.map.CallerMapGlobalTrajectoryDrawManager
import com.mogo.och.common.module.utils.CallerBase
/**
* 订单中
*/
object LineManager : CallerBase<ILineCallback>() {
private var lineId: Int = -1
@JvmStatic
fun setLineId(value: Int) {
lineId = if (value < 0) {
clearGlobalTrajectory(true)
-1
} else {
value
}
}
@JvmStatic
fun setLineId(value: Long) {
lineId = if (value < 0) {
clearGlobalTrajectory(true)
-1
} else {
value.toInt()
}
}
@JvmStatic
fun getLineId():Int{
return lineId
}
override fun doSomeAfterAddListener(tag: String, listener: ILineCallback) {
super.doSomeAfterAddListener(tag, listener)
if (hasDrawnGlobalTrajectory()) {
listener.drawLineSuccess()
}else{
listener.drawLineFail()
}
}
fun hasDrawnGlobalTrajectory(): Boolean {
return CallerMapGlobalTrajectoryDrawManager.hasDrawnGlobalTrajectory()
}
fun clearGlobalTrajectory(isClearData: Boolean) {
CallerMapGlobalTrajectoryDrawManager.clearGlobalTrajectory(isClearData)
if (!hasDrawnGlobalTrajectory()){
M_LISTENERS.forEach {
it.value.clearLineSuccess()
}
}
}
fun drawGlobalTrajectory(): Pair<Boolean, String> {
if(lineId<0){
return Pair(false,"请设置正确线路或订单")
}
return CallerMapGlobalTrajectoryDrawManager.drawGlobalTrajectory().apply {
if(first){
M_LISTENERS.forEach {
it.value.drawLineSuccess()
}
}else{
M_LISTENERS.forEach {
it.value.drawLineFail()
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
package com.mogo.och.common.module.manager.autopilot.location
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
object OchLocationManager {
@JvmStatic
fun getGCJ02Location(): MogoLocation {
return CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
}
@JvmStatic
fun getWgs02Location():MogoLocation {
return CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
}
@JvmStatic
fun addGCJ02Listener(tag:String,callBackHz:Int,listener: IMoGoChassisLocationGCJ02Listener){
CallerChassisLocationGCJ02ListenerManager.addListener(tag, callBackHz, listener)
}
@JvmStatic
fun removeGCJ02Listener(tag:String){
CallerChassisLocationGCJ02ListenerManager.removeListener(tag)
}
@JvmStatic
fun removeGCJ02Listener(listener: IMoGoChassisLocationGCJ02Listener){
CallerChassisLocationGCJ02ListenerManager.removeListener(listener)
}
@JvmStatic
fun addWgs02Listener(tag:String,callBackHz:Int,listener: IMoGoChassisLocationWGS84Listener){
CallerChassisLocationWGS84ListenerManager.addListener(tag, callBackHz, listener)
}
@JvmStatic
fun removeWgs02Listener(tag:String){
CallerChassisLocationWGS84ListenerManager.removeListener(tag)
}
@JvmStatic
fun removeWgs02Listener(listener: IMoGoChassisLocationWGS84Listener){
CallerChassisLocationWGS84ListenerManager.removeListener(listener)
}
}

View File

@@ -8,7 +8,6 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager.writeChainLog
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import mogo.telematics.pad.MessagePad
import java.util.concurrent.ConcurrentHashMap
@@ -105,7 +104,7 @@ object TrajectoryManager : IMoGoPlanningRottingListener {
fun addDownLoadSuccessLine(lineId:Long){
if(lineId>0){
writeChainLog("轨迹监控", "onAutopilotGuardian() 轨迹下载成功${lineId}", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
OchChainLogManager.writeChainLog("轨迹监控", "onAutopilotGuardian() 轨迹下载成功${lineId}", true, OchChainLogManager.EVENT_KEY_INFE_WITH_TRAJECTORY)
downLoadSuccessLineIds.add(lineId)
}
}

View File

@@ -1,7 +1,7 @@
package com.mogo.och.common.module.manager.device
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
import io.reactivex.disposables.Disposable
@@ -35,7 +35,7 @@ object LightAirconditionDoorManager {
}
private fun canOpenOrCloseDoor(): String? {
val location = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val location = OchLocationManager.getGCJ02Location()
return if(location.gnssSpeed<0.3){
null
}else{

View File

@@ -4,7 +4,6 @@ import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
@@ -13,6 +12,7 @@ import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.LocationUtils
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.manager.autopilot.trajectory.TrajectoryCache
import com.mogo.och.common.module.manager.loop.BizLoopManager
import com.mogo.och.common.module.manager.loop.LoopInfo
@@ -270,7 +270,7 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener {
*/
private fun calculateDistance() {
//mLocation gcj坐标
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02().let {
OchLocationManager.getGCJ02Location().let {
if (mRoutePoints.isNullOrEmpty() || endStationInfo.stationPoint == null) {
d(M_OCHCOMMON + TAG, "没有轨迹或站点坐标停止计算")
//结束距离计算
@@ -660,13 +660,13 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener {
* 返回空为可启动自驾
* 返回其他不可启动自驾 返回为原因
*/
fun canStartAutopilot(lineId: Long?): String {
fun canStartAutopilot(lineId: Number?): String {
if (lineId == null) {
OchAutopilotAnalytics.triggerDistance2LineorStation("未传轨迹ID")
return "请确认线路ID"
}
OchAutopilotAnalytics.triggerDistance2LineorStation("条件记录:lineId:${lineId}----this.lineId:${this.lineId}")
OchAutopilotAnalytics.triggerDistance2LineorStation("条件记录:lineId:${lineId}----this.lineId:${this.lineId}、mRoutePoints情况:${mRoutePoints?.size}")
try {
if (mRoutePoints.isNullOrEmpty()) {
@@ -677,23 +677,20 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener {
return if (redCatche.isNullOrEmpty()) {
distanceWithStartStation()
} else {
val currentPoint =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val currentPoint = OchLocationManager.getGCJ02Location()
distanceWithTrajectory(redCatche,currentPoint)
}
} else {
return if (this.lineId == 0L || this.lineId == null) {
val currentPoint =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val currentPoint = OchLocationManager.getGCJ02Location()
distanceWithTrajectory(mRoutePoints!!,currentPoint)
} else {
if (lineId != this.lineId) {
if (lineId.toLong() != this.lineId) {
// 判断距离起始站的距离
distanceWithStartStation()
} else {
val currentPoint =
CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val currentPoint = OchLocationManager.getGCJ02Location()
distanceWithTrajectory(mRoutePoints!!,currentPoint)
}
}
@@ -712,7 +709,7 @@ object TrajectoryAndDistanceManager : IMoGoPlanningRottingListener {
if (startStationInfo.stationPoint == null) {
return errorTypeNoneLineId
}
val currentPoint = CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02()
val currentPoint = OchLocationManager.getGCJ02Location()
val distance = CoordinateUtils.calculateLineDistance(
currentPoint.longitude,
currentPoint.latitude,

View File

@@ -16,22 +16,32 @@ import com.zhjt.service.chain.ChainLog
object OchChainLogManager {
private val TAG = OchChainLogManager::class.java.simpleName
// 通用 title changeinfo 日志
const val EVENT_KEY_INFE_WITH_CHANGE = "event_key_och_common_info_and_changeinfo"
// 轨迹信息监控
const val EVENT_KEY_INFE_WITH_TRAJECTORY = "event_key_och_trajectory_info"
// 音乐播放日志
const val EVENT_KEY_INFE_WITH_MUSIC = "event_key_och_music_info"
const val EVENT_KEY_INFE_WITH_BUS = "event_key_och_bus_info"
// 需要举行观察的
const val EVENT_KEY_INFE_ERROR = "event_key_och_error"
// 网络接口
const val EVENT_KEY_INFO_Net = "event_key_och_net"
// 初始化信息
const val EVENT_KEY_INFO_INIT = "event_key_och_init"
// 局域网内socket 通讯
const val EVENT_KEY_INFO_SOCKET = "analytics_event_och_track_screen_msg"
// 局域网内socket 连接状态流转
const val EVENT_KEY_INFO_SOCKET_CONNECT = "analytics_event_och_track_screen_connect"
fun writeChainLogNet(title: String, info: String){
writeChainLog(title,info,true,EVENT_KEY_INFO_Net)
fun writeChainLogNet(mustUpdate: Boolean, title: String, info: String) {
if(mustUpdate){
writeChainLog(title, info, true, EVENT_KEY_INFO_Net)
}else {
writeChainLog(title, info, DebugConfig.isDebug(), EVENT_KEY_INFO_Net)
}
}
fun writeChainLogInit(title: String, info: String) {
writeChainLog(title,info,true,EVENT_KEY_INFO_INIT)
@@ -39,13 +49,17 @@ object OchChainLogManager {
fun writeChainLogNetLanSocketConnect(title: String, info: String){
writeChainLog(title,info,true,EVENT_KEY_INFO_SOCKET_CONNECT)
}
@JvmStatic
fun writeChainLogLanSocket(title: String, info: String, action:String){
val map = hashMapOf<String, Any>()
map["action"] = action
writeChainLog(title,info,true,EVENT_KEY_INFO_SOCKET, map)
}
@JvmStatic
fun writeChainLog(title: String, info: String){
writeChainLog(title,info,true,EVENT_KEY_INFE_WITH_CHANGE)
}
@JvmStatic
fun writeChainLog(title: String, info: String, upload:Boolean = true, eventID:String=EVENT_KEY_INFE_WITH_CHANGE) {
writeChainLog(title,info,upload,eventID,null)

View File

@@ -18,6 +18,7 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager
import com.mogo.och.common.module.manager.socket.lan.bean.AppConnectMsg
import com.mogo.och.common.module.manager.socket.lan.bean.BaseDPMsg
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.voice.VoiceNotice
object LanSocketManager : LanSocketManagerJava() {
@@ -89,7 +90,7 @@ object LanSocketManager : LanSocketManagerJava() {
.build()
mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点
AIAssist.getInstance(mContext)
VoiceNotice
.speakTTSVoiceWithLevel(msg, AIAssist.LEVEL0, object : IMogoVoiceCmdCallBack {
override fun onSpeakEnd(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)

View File

@@ -6,7 +6,9 @@ import com.mogo.eagle.core.function.api.hmi.xiaozhi.event.V2N
import com.mogo.eagle.core.function.api.hmi.xiaozhi.listener.OnXiaoZhiStateChangeListener
import com.mogo.eagle.core.function.api.hmi.xiaozhi.state.State
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager
object ZhiV2NManager : OnXiaoZhiStateChangeListener {
init {
@@ -14,6 +16,7 @@ object ZhiV2NManager : OnXiaoZhiStateChangeListener {
}
override fun onChanged(event: Event, state: State) {
OchChainLogManager.writeChainLog("小智脸部消息","event:${event}-----state${state}")
if (event is V2N) {
var drawable: Int? = null
when (event.type) {
@@ -322,12 +325,14 @@ object ZhiV2NManager : OnXiaoZhiStateChangeListener {
}
}
if (drawable != null) {
if(state==State.START){
ZhiViewmanager.warnAni.drawable = drawable
ZhiViewmanager.showListeningAni(ZhiViewmanager.warnAni,true)
}else if(state==State.STOP){
ZhiViewmanager.stopWarnAni()
}
UiThreadHandler.post({
if(state==State.START){
ZhiViewmanager.warnAni.drawable = drawable
ZhiViewmanager.showListeningAni(ZhiViewmanager.warnAni,true)
}else if(state==State.STOP){
ZhiViewmanager.stopWarnAni()
}
},UiThreadHandler.MODE.QUEUE)
}
}
}

View File

@@ -1,5 +1,6 @@
package com.mogo.och.common.module.network
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.RequestOptions
import com.mogo.eagle.core.network.SubscribeImpl
@@ -23,7 +24,7 @@ class OchCommonSubscribeImpl<T : BaseData>(
init {
CallerLogger.e("$flavorTag$TAG", "$apiName: 去请求()")
if(writeLog) {
OchChainLogManager.writeChainLogNet("接口:${apiName}_${tag}", "去请求")
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "去请求_${tag}")
}
}
@@ -31,7 +32,7 @@ class OchCommonSubscribeImpl<T : BaseData>(
super.onSuccess(o)
CallerLogger.d("$flavorTag$TAG", "$apiName: onSuccess() ${o.msg}")
if(writeLog) {
OchChainLogManager.writeChainLogNet("接口:${apiName}_${tag}", "请求成功:${o}")
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "请求成功:${o}_${tag}")
}
callback?.onSuccess(o)
}
@@ -40,7 +41,7 @@ class OchCommonSubscribeImpl<T : BaseData>(
super.onError(e)
CallerLogger.e("$flavorTag$TAG", "$apiName: onError() ${e.message}")
if(writeLog) {
OchChainLogManager.writeChainLogNet("接口:${apiName}_${tag}", "请求失败:${e.message}")
OchChainLogManager.writeChainLogNet(false,"接口:${apiName}", "请求失败:${e.message}_${tag}")
}
callback?.onError("$apiName: onError() ${e.message}")
callback?.onError()
@@ -51,8 +52,9 @@ class OchCommonSubscribeImpl<T : BaseData>(
CallerLogger.e("$flavorTag$TAG", "$apiName: onError() code = $code; message = $message")
if(writeLog) {
OchChainLogManager.writeChainLogNet(
"接口:${apiName}_${tag}",
"请求失败: onError() code = $code; message = $message\""
true,
"接口:${apiName}",
"请求失败: onError() code = $code; message = $message\" _${tag}"
)
}
callback?.onFail(code, message)

View File

@@ -578,6 +578,20 @@ object CoordinateCalculateRouteUtil {
return 360-bearing
}
fun getHeadingAngleTemp(locationLongitude: Double, locationLatitude: Double,
nextPointLongitude: Double, nextPointLatitude: Double): Double {
val lat1Rad = Math.toRadians(locationLatitude)
val lat2Rad = Math.toRadians(nextPointLatitude)
val lon1Rad = Math.toRadians(locationLongitude)
val lon2Rad = Math.toRadians(nextPointLongitude)
val y = sin(lon2Rad - lon1Rad) * cos(lat2Rad)
val x = cos(lat1Rad) * sin(lat2Rad) - sin(lat1Rad) * cos(lat2Rad) * cos(lon2Rad - lon1Rad)
val bearing = Math.toDegrees(atan2(y, x))
return (bearing + 360) % 360
}
/**

View File

@@ -2,13 +2,19 @@ package com.mogo.och.common.module.voice
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.voice.AIAssist
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.manager.audiofocus.AudioFocusManager
import com.mogo.tts.base.IMogoTTSCallback
import com.mogo.tts.base.LangTtsEntity
import com.mogo.tts.base.LanguageType
import com.mogo.tts.base.MultiLangTtsEntity
object VoiceNotice {
const val onlyChinese = 1 //中文
const val chineseEnglishKorean = 1 shl 1 // 左移一位 中英韩
@JvmStatic
fun showNotice(notice: String?) {
showNotice(notice, AIAssist.LEVEL0)
@@ -59,11 +65,27 @@ object VoiceNotice {
@JvmStatic
fun showNotice(listTTS: MutableList<LangTtsEntity>, level: Int,callBack: IMogoTTSCallback?=null) {
if(FunctionBuildConfig.ttsLanguage and onlyChinese>0){
val tempList = mutableListOf<LangTtsEntity>()
listTTS.forEach {
if(it.language != LanguageType.CHINESE){
tempList.add(it)
}
}
listTTS.removeAll(tempList)
}
AIAssist.getInstance(AbsMogoApplication.getApp())
.speakMultiLangTTSWithLevel(MultiLangTtsEntity(listTTS), level,callCallBack(callBack))
}
fun speakTTSVoiceWithLevel(text:String, level:Int, callBack:IMogoTTSCallback){
AIAssist.getInstance(AbsMogoApplication.getApp()).speakTTSVoiceWithLevel(text,level,callBack)
}
private fun callCallBack(callBack: IMogoTTSCallback?):IMogoTTSCallback{
return object :IMogoTTSCallback{
override fun onSpeakStart(speakText: String?) {

View File

@@ -1,19 +1,21 @@
package com.mogo.och.common.module.wigets.map.switchvisual
package com.mogo.och.common.module.wigets.map.drawline
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.appcompat.widget.AppCompatImageView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.manager.autopilot.line.LineManager
/**
*
*/
class VisualView : AppCompatImageView, VisualViewModel.IVisualCallback {
class LineView : AppCompatImageView, LineViewModel.ILineViewCallback {
private val TAG = "VisualView"
private val TAG = "LineView"
constructor(context: Context) : super(context)
@@ -26,21 +28,28 @@ class VisualView : AppCompatImageView, VisualViewModel.IVisualCallback {
)
private fun initView() {
setImageResource(R.drawable.common_visual_medium)
setImageResource(R.drawable.common_map_line_close)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
val viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(VisualViewModel::class.java)
onClick {
if (LineManager.hasDrawnGlobalTrajectory()) {
LineManager.clearGlobalTrajectory(false)
} else {
val drawGlobalTrajectory = LineManager.drawGlobalTrajectory()
if (!drawGlobalTrajectory.first) {
ToastUtils.showLong(drawGlobalTrajectory.second)
}
}
}
val viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(LineViewModel::class.java)
}
viewModel?.setDistanceCallback(this)
onClick {
viewModel?.changeVisualView()
}
}
@@ -52,20 +61,8 @@ class VisualView : AppCompatImageView, VisualViewModel.IVisualCallback {
}
}
override fun setViewShow(boolean: Boolean) {
UiThreadHandler.post({
if (boolean) {
visibility = View.VISIBLE
} else {
visibility = View.GONE
}
}, UiThreadHandler.MODE.QUEUE)
}
override fun setViewResource(resource: Int) {
UiThreadHandler.post({
setImageResource(resource)
}, UiThreadHandler.MODE.QUEUE)
override fun setImageViewResource(name: Int) {
setImageResource(name)
}

View File

@@ -0,0 +1,46 @@
package com.mogo.och.common.module.wigets.map.drawline
import androidx.annotation.DrawableRes
import androidx.lifecycle.ViewModel
import com.mogo.och.common.module.R
import com.mogo.och.common.module.manager.autopilot.line.ILineCallback
import com.mogo.och.common.module.manager.autopilot.line.LineManager
class LineViewModel : ViewModel(), ILineCallback {
private val TAG = LineViewModel::class.java.simpleName
private var viewCallback: ILineViewCallback? = null
init {
}
override fun onCleared() {
super.onCleared()
LineManager.removeListener(TAG)
this.viewCallback = null
}
fun setDistanceCallback(viewCallback: ILineViewCallback) {
LineManager.addListener(TAG,this)
this.viewCallback = viewCallback
}
override fun clearLineSuccess() {
this.viewCallback?.setImageViewResource(R.drawable.common_map_line_close)
}
override fun drawLineSuccess() {
this.viewCallback?.setImageViewResource(R.drawable.common_map_line_open)
}
override fun drawLineFail() {
this.viewCallback?.setImageViewResource(R.drawable.common_map_line_close)
}
interface ILineViewCallback {
fun setImageViewResource(@DrawableRes name: Int)
}
}

View File

@@ -25,7 +25,7 @@ class OrderStatusView : AppCompatImageView, OrderStatusViewModel.IVisualCallback
)
private fun initView() {
setImageResource(R.drawable.common_visual_medium)
setImageResource(R.drawable.common_status_unorder)
}
override fun onAttachedToWindow() {

View File

@@ -0,0 +1,83 @@
package com.mogo.och.common.module.wigets.map.overmapview
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import androidx.recyclerview.widget.DiffUtil.Callback
import com.mogo.och.common.module.R
/**
* Created by yangyakun on 06/06/17.
*/
class IconListItemAdapter(
private val context: Context,
private val dataList: MutableList<EventDrawBean>
) : RecyclerView.Adapter<IconListItemAdapter.TextVH>() {
fun setDataList(dataList: List<EventDrawBean>) {
if (this.dataList == dataList) {
// 如果新旧列表一致,则直接返回
return
}
val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.dataList, dataList))
this.dataList.clear()
this.dataList.addAll(dataList)
diffResult.dispatchUpdatesTo(this)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TextVH {
val view: View
val inflater = LayoutInflater.from(context)
view = inflater.inflate(R.layout.taxt_d_icon_item, parent, false)
return TextVH(view)
}
override fun onBindViewHolder(holder: TextVH, position: Int) {
val errorInfo = dataList[holder.bindingAdapterPosition]
holder.acivQuanxilukValue.text = errorInfo.title
holder.acivQuanxiluk.setImageResource(errorInfo.resId)
}
override fun getItemCount(): Int {
return dataList.size
}
inner class TextVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var acivQuanxiluk: AppCompatImageView
var acivQuanxilukValue: AppCompatTextView
init {
acivQuanxiluk = itemView.findViewById(R.id.aciv_quanxiluk)
acivQuanxilukValue = itemView.findViewById(R.id.aciv_quanxiluk_value)
}
}
inner class MyDiffCallback(val oldData:List<EventDrawBean>,val newData:List<EventDrawBean>):Callback(){
override fun getOldListSize(): Int {
return oldData.size
}
override fun getNewListSize(): Int {
return newData.size
}
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem.resId == newItem.resId
}
}
}

View File

@@ -0,0 +1,30 @@
package com.mogo.och.common.module.wigets.map.overmapview
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.GradientDrawable
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.och.common.module.R
class OverMapBottomView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr){
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.common_overmap_bottom, this, true)
}
init {
try {
initView()
} catch (e: Exception) {
e.printStackTrace()
}
}
}

View File

@@ -0,0 +1,66 @@
package com.mogo.och.common.module.wigets.map.overmapview
import android.content.Context
import android.os.Bundle
import android.view.View
import androidx.lifecycle.LifecycleObserver
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.widget.media.video.TextureVideoViewOutlineProvider
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.common_overmap_dialog.aciv_close_map
import kotlinx.android.synthetic.main.common_overmap_dialog.repvErrorPointReason
import me.jessyan.autosize.utils.AutoSizeUtils
class OverMapDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver {
init {
setContentView(R.layout.common_overmap_dialog)
setCanceledOnTouchOutside(true)
aciv_close_map.onClick {
hideDialog()
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
repvErrorPointReason?.let {
it.onCreateView(savedInstanceState)
val radius = AutoSizeUtils.dp2px(context, 16f)
it.outlineProvider = TextureVideoViewOutlineProvider(radius.toFloat())
it.clipToOutline = true
}
}
override fun onStart() {
super.onStart()
repvErrorPointReason.onResume()
}
override fun onStop() {
super.onStop()
repvErrorPointReason.onResume()
}
fun showDialog() {
if (isShowing) {
return
}
show()
}
fun hideDialog() {
if (isShowing) {
dismiss()
}
}
fun destory(){
repvErrorPointReason.onDestroy()
}
}

View File

@@ -0,0 +1,119 @@
package com.mogo.och.common.module.wigets.map.overmapview
import android.content.Context
import android.os.Bundle
import android.util.AttributeSet
import android.view.LayoutInflater
import android.widget.RelativeLayout
import com.google.android.flexbox.AlignItems
import com.google.android.flexbox.FlexDirection
import com.google.android.flexbox.FlexWrap
import com.google.android.flexbox.FlexboxLayoutManager
import com.google.android.flexbox.JustifyContent
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import com.mogo.eagle.core.function.view.TravelRealityView
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.common_overmap_view.view.ovbv_bottom_icons
import kotlinx.android.synthetic.main.common_overmap_view.view.ovbv_bottom_icons_cl
import kotlinx.android.synthetic.main.common_overmap_view.view.travelRealityView
import kotlinx.android.synthetic.main.common_overmap_view.view.tv_add_false
import kotlinx.android.synthetic.main.common_overmap_view.view.tv_add_true
class OverMapView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : RelativeLayout(context, attrs, defStyleAttr){
private var iconListItemAdapter:IconListItemAdapter?=null
private val eventDrawBeansTrue = mutableListOf<EventDrawBean>()
private val eventDrawBeansFalse = mutableListOf<EventDrawBean>()
private val listener = object : TravelRealityView.OnDrawListener{
override fun onDraw(eventList: List<EventDrawBean>, isEvent: Boolean) {
// if(isEvent){
// eventDrawBeansTrue.clear()
// eventDrawBeansTrue.addAll(eventList)
// }else{
// eventDrawBeansFalse.clear()
// eventDrawBeansFalse.addAll(eventList)
// }
// iconListItemAdapter?.let {
// it.setDataList(eventDrawBeansTrue+eventDrawBeansFalse)
// if(it.itemCount==0){
// ovbv_bottom_icons_cl.visibility = GONE
// }else{
// ovbv_bottom_icons_cl.visibility = VISIBLE
// }
// }
}
}
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.common_overmap_view, this, true)
val flexboxLayoutManager = FlexboxLayoutManager(context)
flexboxLayoutManager.flexDirection = FlexDirection.ROW;
flexboxLayoutManager.alignItems = AlignItems.CENTER
flexboxLayoutManager.flexWrap = FlexWrap.WRAP
flexboxLayoutManager.justifyContent = JustifyContent.CENTER
ovbv_bottom_icons?.layoutManager = flexboxLayoutManager
//ovbv_bottom_icons?.setHasFixedSize(true)
iconListItemAdapter = IconListItemAdapter(
context, mutableListOf(
EventDrawBean(R.drawable.mogo_quanxi_lukou, "全息路口"),
EventDrawBean(R.drawable.mogo_jingzhi_nor, "静止事件"),
EventDrawBean(R.drawable.mogo_shigong_image, "道路施工"),
EventDrawBean(R.drawable.mogo_shigu_nor, "交通事故")
)
)
ovbv_bottom_icons?.adapter = iconListItemAdapter
travelRealityView.setOnDrawListener(listener)
tv_add_true.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_jingzhi_nor,"全息路口"),
EventDrawBean(R.drawable.mogo_shigong_image,"静止事件"),
),true)
}
tv_add_false.setOnClickListener {
listener.onDraw(mutableListOf(
EventDrawBean(R.drawable.mogo_quanxi_lukou,"全息路口"),
),false)
}
}
fun onCreateView(savedInstanceState: Bundle?) {
travelRealityView.onCreateView(savedInstanceState)
}
fun onResume() {
travelRealityView.onResume()
}
fun onPause() {
travelRealityView.onPause()
}
fun onDestroy() {
travelRealityView.onDestroy()
}
init {
try {
initView()
} catch (e: Exception) {
e.printStackTrace()
}
}
}

View File

@@ -0,0 +1,256 @@
package com.mogo.och.common.module.wigets.map.switchvisual
import android.animation.ObjectAnimator
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.LinearGradient
import android.graphics.Paint
import android.graphics.Shader
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.MotionEvent
import android.widget.ImageView
import androidx.annotation.DrawableRes
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.taxi_p_seekbar_visualangle.view.iv_visualangle_bg
import kotlinx.android.synthetic.main.taxi_p_seekbar_visualangle.view.iv_visualangle_value
import kotlinx.android.synthetic.main.taxi_seekbar_visualangle.view.iv_visualangle_bg_dark
import kotlinx.android.synthetic.main.taxi_seekbar_visualangle.view.iv_visualangle_value_dark
import kotlin.properties.Delegates
class SeekBarView : ConstraintLayout, VisualViewModel.IVisualCallback {
//定义、并创建画笔
var p = Paint().apply {
strokeWidth = 1f
style = Paint.Style.STROKE
isAntiAlias = true
shader = LinearGradient(
0f, 0f, 600f, 600f, intArrayOf(Color.RED, Color.BLUE, Color.BLACK),
null, Shader.TileMode.CLAMP
)
}
private val TAG = "SeekBarView"
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(
context,
attributeSet,
defStyleAttr
)
private var viewModel: VisualViewModel? = null
var enableCallback:EnableCallback?=null
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
super.onLayout(changed, left, top, right, bottom)
}
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
}
private var initialX = 0f
private var initialY = 0f
private val tempSet = ConstraintSet()
/**
* 为该组件的触碰事件重写事件处理方法
*/
override fun onTouchEvent(event: MotionEvent?): Boolean {
if(value==VisualViewModel.Visualangle.UnChange){
return true
}
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
initialX = event.rawX;
initialY = event.rawY;
}
MotionEvent.ACTION_MOVE -> {
if(draggableButton.translationY<-draggableButton.height){
tempSet.clone(this)
tempSet.setTranslationY(draggableButton.id,-draggableButton.height.toFloat())
tempSet.applyTo(this)
return true
}else if (draggableButton.translationY>(height)){
tempSet.clone(this)
tempSet.setTranslationY(draggableButton.id,(height).toFloat())
tempSet.applyTo(this)
return true
}
val dx = event.rawX - initialX;
val dy = event.rawY - initialY;
initialX = event.rawX;
initialY = event.rawY;
tempSet.clone(this)
tempSet.setTranslationY(draggableButton.id,draggableButton.translationY+dy)
tempSet.applyTo(this)
}
MotionEvent.ACTION_UP -> {
if(draggableButton.translationY<0){
translationByValue(VisualViewModel.Visualangle.Long)
}else if (draggableButton.translationY>(height-draggableButton.height)){
translationByValue(VisualViewModel.Visualangle.Middle)
}else{
val marginTop = draggableButton.translationY
val split = (height - draggableButton.height) / 2
// if(marginTop>0&&marginTop<split){
// translationByValue(Visualangle.Middle)
// }else if(marginTop>split&&marginTop<split*2){
// translationByValue(Visualangle.Crossroads)
// }else if(marginTop*2>split&&marginTop<(height - draggableButton.height)){
// translationByValue(Visualangle.Long)
// }
if(marginTop>0&&marginTop<split){
translationByValue(VisualViewModel.Visualangle.Long)
}else if(marginTop>split&&marginTop<(height - draggableButton.height)){
translationByValue(VisualViewModel.Visualangle.Middle)
}
}
}
else -> {}
}
return true
}
private var value: VisualViewModel.Visualangle by Delegates.observable(VisualViewModel.Visualangle.None) { _, oldValue, newValue ->
CallerLogger.d(TAG,"oldValue:${oldValue}____newValue:${newValue}")
if (oldValue != newValue) {
viewModel?.changeVisualView(newValue)
if(newValue==VisualViewModel.Visualangle.UnChange){
this.enableCallback?.enableChangeListener(false)
}else{
if (oldValue==VisualViewModel.Visualangle.UnChange) {
this.enableCallback?.enableChangeListener(true)
}
}
}
}
fun translationByValue(visualangle: VisualViewModel.Visualangle){
value = visualangle
when (visualangle) {
VisualViewModel.Visualangle.Middle -> {
ObjectAnimator.ofFloat(
draggableButton, "translationY", draggableButton.translationY,
(height - draggableButton.height).toFloat()
).apply {
duration = 100
}.start()
}
VisualViewModel.Visualangle.Long -> {
ObjectAnimator.ofFloat(
draggableButton, "translationY", draggableButton.translationY,
0f
).apply {
duration = 100
}.start()
}
VisualViewModel.Visualangle.UnChange -> {
ObjectAnimator.ofFloat(
draggableButton, "translationY", draggableButton.translationY,
(height - draggableButton.height) / 2f
).apply {
duration = 100
}.start()
}
}
}
private lateinit var draggableButton:ImageView
private fun initView() {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
LayoutInflater.from(context).inflate(R.layout.taxi_seekbar_visualangle, this, true)
draggableButton = findViewById(R.id.iv_visualangle_value_dark)
}else{
LayoutInflater.from(context).inflate(R.layout.taxi_p_seekbar_visualangle, this, true)
draggableButton = findViewById(R.id.iv_visualangle_value)
}
}
fun setBgResource(@DrawableRes resource:Int){
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
iv_visualangle_bg_dark.setImageResource(resource)
}else{
iv_visualangle_bg.setImageResource(resource)
}
}
fun setHumbResource(@DrawableRes resource:Int){
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
iv_visualangle_value_dark.setImageResource(resource)
}else{
iv_visualangle_value.setImageResource(resource)
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(VisualViewModel::class.java)
}
viewModel?.setDistanceCallback(this)
}
init {
try {
initView()
} catch (e: Exception) {
e.printStackTrace()
}
}
override fun setMiddleAngle() {
UiThreadHandler.post({
translationByValue(VisualViewModel.Visualangle.Middle)
}, UiThreadHandler.MODE.QUEUE)
}
override fun setLongAngle() {
UiThreadHandler.post({
translationByValue(VisualViewModel.Visualangle.Long)
}, UiThreadHandler.MODE.QUEUE)
}
override fun setUnableChange() {
UiThreadHandler.post({
translationByValue(VisualViewModel.Visualangle.UnChange)
}, UiThreadHandler.MODE.QUEUE)
}
override fun setSkyboxAngle() {
UiThreadHandler.post({
translationByValue(VisualViewModel.Visualangle.Middle)
}, UiThreadHandler.MODE.QUEUE)
}
interface EnableCallback{
fun enableChangeListener(enable:Boolean)
}
}

View File

@@ -0,0 +1,80 @@
package com.mogo.och.common.module.wigets.map.switchvisual
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.och.common.module.R
import kotlinx.android.synthetic.main.common_visualangle_black.view.iv_center_location_bg
import kotlinx.android.synthetic.main.common_visualangle_black.view.iv_visual_angle_title_bottom
import kotlinx.android.synthetic.main.common_visualangle_black.view.iv_visual_angle_title_head
import kotlinx.android.synthetic.main.common_visualangle_black.view.iv_visual_angle_title_value_bg
class VisualViewDirver : ConstraintLayout {
private val TAG = "LeftBarView"
constructor(context: Context) : super(context)
constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
init {
}
private fun initView() {
LayoutInflater.from(context).inflate(R.layout.common_visualangle_black, this, true)
iv_visual_angle_title_value_bg.enableCallback = object :SeekBarView.EnableCallback{
override fun enableChangeListener(enable: Boolean) {
if(enable){
iv_visual_angle_title_head.alpha = 1f
iv_visual_angle_title_head.alpha = 1f
iv_visual_angle_title_bottom.alpha = 1f
iv_visual_angle_title_value_bg.alpha = 1f
iv_visual_angle_title_value_bg.alpha = 1f
iv_center_location_bg.alpha = 1f
// iv_visual_angle_title_head.setImageResource(R.drawable.commont_visual_head)
// iv_visual_angle_title_bottom.setImageResource(R.drawable.common_visual_bottom)
// iv_visual_angle_title_value_bg.setBgResource(R.drawable.common_visual_angle_bg)
// iv_visual_angle_title_value_bg.setHumbResource(R.drawable.common_visual_angle)
iv_center_location_bg.setImageResource(R.drawable.common_visualangle_bg)
}else{
iv_visual_angle_title_head.alpha = 0.5f
iv_visual_angle_title_bottom.alpha = 0.5f
iv_visual_angle_title_value_bg.alpha = 0.5f
iv_visual_angle_title_value_bg.alpha = 0.5f
iv_center_location_bg.alpha = 0.5f
// iv_visual_angle_title_head.setImageResource(R.drawable.commont_visual_head_unable)
// iv_visual_angle_title_bottom.setImageResource(R.drawable.common_visual_bottom_unenable)
// iv_visual_angle_title_value_bg.setBgResource(R.drawable.common_visual_angle_bg_unenable)
// iv_visual_angle_title_value_bg.setHumbResource(R.drawable.common_visual_angle_unenable)
// iv_center_location_bg.setImageResource(R.drawable.common_visualangle_bg_unenable)
}
}
}
}
override fun onVisibilityAggregated(isVisible: Boolean) {
super.onVisibilityAggregated(isVisible)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
}
init {
try {
initView()
} catch (e: Exception) {
e.printStackTrace()
}
}
}

View File

@@ -1,14 +1,16 @@
package com.mogo.och.common.module.wigets.map.switchvisual
import androidx.lifecycle.ViewModel
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.map.listener.IMogoMapListener
import com.mogo.map.listener.MogoMapListenerHandler
import com.mogo.eagle.core.function.angle.scenes.LongSight
import com.mogo.eagle.core.function.api.map.angle.IMoGoVisualAngleChangeProvider
import com.mogo.eagle.core.function.api.map.angle.Scene
import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.map.uicontroller.VisualAngleMode
import com.mogo.och.common.module.R
import com.mogo.eagle.core.function.angle.scenes.Default
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
class VisualViewModel : ViewModel(), IMogoMapListener {
class VisualViewModel : ViewModel(),
IMoGoVisualAngleChangeProvider.OnMoGoVisualAngleSceneChangeListener {
private val TAG = VisualViewModel::class.java.simpleName
@@ -20,72 +22,89 @@ class VisualViewModel : ViewModel(), IMogoMapListener {
override fun onCleared() {
super.onCleared()
MogoMapListenerHandler.mogoMapListenerHandler.unregisterHostMapListener(TAG)
CallerVisualAngleManager.removeListener(TAG)
this.viewCallback = null
}
fun setDistanceCallback(viewCallback: IVisualCallback) {
MogoMapListenerHandler.mogoMapListenerHandler.registerHostMapListener(TAG, this)
CallerVisualAngleManager.addListener(TAG, this)
this.viewCallback = viewCallback
}
override fun onMapVisualAngleChanged(visualAngleMode: VisualAngleMode?) {
CallerLogger.d(TAG,"视角切换成功${visualAngleMode}")
visualAngleMode?.let {
if (visualAngleMode.isMediumSight) {
this.viewCallback?.setViewShow(true)
this.viewCallback?.setViewResource(R.drawable.common_visual_medium)
} else if (visualAngleMode.isLongSight) {
this.viewCallback?.setViewShow(true)
this.viewCallback?.setViewResource(R.drawable.common_visual_long)
} else if (visualAngleMode.isCloseSight) {
this.viewCallback?.setViewShow(false)
} else{
this.viewCallback?.setViewShow(false)
override fun onSceneChanged(scene: Scene) {
if (scene.isCanSwitch) {// 可切换
when (scene.angle) {
VisualAngleMode.MODE_MEDIUM_SIGHT -> {
UiThreadHandler.post({
this.viewCallback?.setViewShow(true)
this.viewCallback?.setMiddleAngle()
}, UiThreadHandler.MODE.QUEUE)
}
VisualAngleMode.MODE_LONG_SIGHT -> {
UiThreadHandler.post({
this.viewCallback?.setViewShow(true)
this.viewCallback?.setLongAngle()
}, UiThreadHandler.MODE.QUEUE)
}
VisualAngleMode.MAP_STYLE_VR_SKY_BOX -> {
UiThreadHandler.post({
this.viewCallback?.setViewShow(true)
this.viewCallback?.setSkyboxAngle()
}, UiThreadHandler.MODE.QUEUE)
}
else -> {
// 不可切换
UiThreadHandler.post({
this.viewCallback?.setViewShow(false)
this.viewCallback?.setUnableChange()
}, UiThreadHandler.MODE.QUEUE)
}
}
} else {// 不可切换
UiThreadHandler.post({
this.viewCallback?.setViewShow(false)
this.viewCallback?.setUnableChange()
}, UiThreadHandler.MODE.QUEUE)
}
}
override fun onMapLoaded() {
super.onMapLoaded()
CallerLogger.d(TAG,"地图加载成功 onMapLoaded")
val mapUIController = CallerMapUIServiceManager.getMapUIController()
mapUIController?.let {
val visualAngleMode = mapUIController.currentMapVisualAngle
if (visualAngleMode.isMediumSight) {
this.viewCallback?.setViewShow(true)
this.viewCallback?.setViewResource(R.drawable.common_visual_medium)
} else if (visualAngleMode.isLongSight) {
this.viewCallback?.setViewShow(true)
this.viewCallback?.setViewResource(R.drawable.common_visual_long)
} else if (visualAngleMode.isCloseSight) {
this.viewCallback?.setViewShow(false)
} else{
this.viewCallback?.setViewShow(false)
fun changeVisualView(angle: Visualangle) {
when (angle) {
Visualangle.Middle -> {
CallerVisualAngleManager.changeScene(Default(forceClosePrev = true))
}
Visualangle.Long -> {
CallerVisualAngleManager.changeScene(LongSight())
}
Visualangle.UnChange -> {
viewCallback?.setUnableChange()
}
}
}
fun changeVisualView() {
val mapUIController = CallerMapUIServiceManager.getMapUIController()
mapUIController?.currentMapVisualAngle?.let {
CallerLogger.d(TAG,"切换视角:${it}")
if (it.isLongSight) {
mapUIController.setLockMode(true);
mapUIController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
} else if (it.isMediumSight) {
mapUIController.setLockMode(false);
mapUIController.changeMapVisualAngle(VisualAngleMode.MODE_LONG_SIGHT, null);
} else {
mapUIController.changeMapVisualAngle(VisualAngleMode.MODE_MEDIUM_SIGHT, null);
}
}
enum class Visualangle {
Middle, Long, UnChange,None
}
interface IVisualCallback {
fun setViewShow(boolean: Boolean)
fun setViewShow(boolean: Boolean) {}
fun setViewResource(resource: Int)
fun setMiddleAngle() {}
fun setLongAngle() {}
fun setSkyboxAngle() {}
fun setUnableChange() {}
}
}

View File

@@ -23,12 +23,12 @@ import com.amap.api.maps.model.Polyline
import com.amap.api.maps.model.PolylineOptions
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.R
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.shuttle.passenger.ui.mapdirectionview.MapDirectionViewModel
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -128,13 +128,13 @@ class MapDirectionView @JvmOverloads constructor(
initAMapView()
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 1, this)
OchLocationManager.addGCJ02Listener(TAG, 1, this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
OchLocationManager.removeGCJ02Listener(TAG)
}
private fun initAMapView() {

View File

@@ -0,0 +1,77 @@
package com.mogo.och.common.module.wigets.rodedata
import android.content.Context
import android.util.AttributeSet
import android.util.Log
import com.mogo.eagle.core.function.hmi.ui.notice.exploration.AutomaticExplorationView
import com.mogo.och.data.taxi.BaseOrderBean
import com.mogo.och.common.module.biz.order.OrderListener
import com.mogo.och.common.module.biz.order.OrderModel
import com.mogo.och.common.module.biz.order.TaxiOrderStatusEnum
class OchAutomaticExplorationView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : AutomaticExplorationView(context, attrs, defStyleAttr), OrderListener {
private val TAG = "OchAutomaticExplorationView"
init {
OrderModel.setOrderStatusCallback(TAG,this)
}
override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) {
if(order==null){
cancelTimer()
currentOrderStatus(false)
Log.i(TAG,"onCurrentOrderStatusChanged order 为空")
}else {
when (order.orderStatus) {
TaxiOrderStatusEnum.None.code -> {
cancelTimer()
currentOrderStatus(false)
Log.i(TAG,"TaxiOrderStatusEnum.None.code")
}
TaxiOrderStatusEnum.OnTheWayToStart.code -> {
startShowTimer()
currentOrderStatus(true)
Log.i(TAG,"TaxiOrderStatusEnum.OnTheWayToStart.code")
}
TaxiOrderStatusEnum.ArriveAtStart.code -> {
startShowTimer()
currentOrderStatus(true)
Log.i(TAG,"TaxiOrderStatusEnum.ArriveAtStart.code")
}
TaxiOrderStatusEnum.UserArriveAtStart.code -> {
startShowTimer()
currentOrderStatus(true)
Log.i(TAG,"TaxiOrderStatusEnum.UserArriveAtStart.code")
}
TaxiOrderStatusEnum.OnTheWayToEnd.code -> {
startShowTimer()
currentOrderStatus(true)
Log.i(TAG,"TaxiOrderStatusEnum.OnTheWayToEnd.code")
}
TaxiOrderStatusEnum.ArriveAtEnd.code -> {
startShowTimer()
currentOrderStatus(true)
Log.i(TAG,"TaxiOrderStatusEnum.ArriveAtEnd.code")
}
TaxiOrderStatusEnum.JourneyCompleted.code -> {
cancelTimer()
currentOrderStatus(false)
Log.i(TAG,"TaxiOrderStatusEnum.JourneyCompleted.code")
}
TaxiOrderStatusEnum.Cancel.code -> {
cancelTimer()
currentOrderStatus(false)
Log.i(TAG,"TaxiOrderStatusEnum.Cancel.code")
}
else -> {
cancelTimer()
currentOrderStatus(false)
Log.i(TAG,"else")
}
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 572 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_1860"
android:layout_height="@dimen/dp_136"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_quanxiluk"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"
android:src="@drawable/mogo_quanxi_lukou"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/aciv_quanxiluk_value"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_quanxiluk_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:layout_marginEnd="@dimen/dp_40"
android:text="全息路口"
android:textColor="#0D0D0D"
app:layout_constraintTop_toTopOf="@+id/aciv_quanxiluk"
app:layout_constraintBottom_toBottomOf="@+id/aciv_quanxiluk"
app:layout_constraintEnd_toStartOf="@+id/aciv_jingzhi"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_jingzhi"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"
android:layout_marginStart="@dimen/dp_40"
android:src="@drawable/mogo_jingzhi_nor"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_jingzhi_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_jingzhi_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:text="全息路口"
android:textColor="#0D0D0D"
android:layout_marginEnd="@dimen/dp_40"
app:layout_constraintTop_toTopOf="@+id/aciv_quanxiluk"
app:layout_constraintBottom_toBottomOf="@+id/aciv_quanxiluk"
app:layout_constraintStart_toEndOf="@+id/aciv_jingzhi"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigong"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_shigong"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"
android:src="@drawable/mogo_shigong_image"
android:layout_marginStart="@dimen/dp_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_jingzhi_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigong_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_shigong_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:text="全息路口"
android:textColor="#0D0D0D"
android:layout_marginEnd="@dimen/dp_40"
app:layout_constraintTop_toTopOf="@+id/aciv_shigong"
app:layout_constraintBottom_toBottomOf="@+id/aciv_shigong"
app:layout_constraintStart_toEndOf="@+id/aciv_shigong"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigu"
/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_shigu"
android:layout_width="@dimen/dp_53"
android:layout_height="@dimen/dp_53"
android:src="@drawable/mogo_shigu_nor"
android:layout_marginStart="@dimen/dp_40"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_shigong_value"
app:layout_constraintEnd_toStartOf="@+id/aciv_shigu_value"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_shigu_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_19"
android:text="全息路口"
android:textColor="#0D0D0D"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/aciv_shigu"
app:layout_constraintBottom_toBottomOf="@+id/aciv_shigu"
app:layout_constraintStart_toEndOf="@+id/aciv_shigu"
/>
</merge>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.och.common.module.wigets.map.overmapview.OverMapView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/repvErrorPointReason"
android:layout_width="2286dp"
android:layout_height="@dimen/dp_1200">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_close_map"
android:src="@drawable/common_close_100x100"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/dp_30"
android:layout_marginEnd="@dimen/dp_30"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"/>
</com.mogo.och.common.module.wigets.map.overmapview.OverMapView>

View File

@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:parentTag="RelativeLayout">
<com.mogo.eagle.core.function.view.TravelRealityView
android:id="@+id/travelRealityView"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:roadRangeDrawable="@drawable/taxi_overmap_road_range"
app:roadTrajectoryDrawable="@drawable/taxi_orvermap_road_trajectory"
app:globalPathColor="@color/common_39BA90"
app:carDrawable="@drawable/taxt_u_p_map_car"
app:compassDrawable="@drawable/taxt_u_p_map_car_light"
app:endPointDrawable="@drawable/taxi_overmap_endpoint"
app:mapStyleExtraPath="over_view_style_extra.data"
app:mapStylePath="over_view_style.data"
app:resetDrawable="@null"
app:leftPadding="70"
app:topPadding="70"
app:rightPadding="70"
app:bottomPadding="160" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/ovbv_bottom_icons_cl"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_150"
android:background="@color/common_232A3F"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/ovbv_bottom_icons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:background="@color/common_232A3F"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
</androidx.recyclerview.widget.RecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_add_true"
android:layout_marginTop="@dimen/dp_198"
android:text="添加true"
android:visibility="gone"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_add_false"
android:text="添加false"
android:visibility="gone"
android:layout_marginTop="@dimen/dp_198"
android:layout_alignParentEnd="true"
android:background="@color/light_prompt_red"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</merge>

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_308"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<ImageView
android:id="@+id/iv_center_location_bg"
android:layout_width="@dimen/dp_60"
android:layout_height="@dimen/dp_308"
android:src="@drawable/common_visualangle_bg"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.mogo.och.common.module.wigets.map.switchvisual.SeekBarView
android:id="@+id/iv_visual_angle_title_value_bg"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_169"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_visual_angle_title_head"
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:layout_marginTop="@dimen/dp_22"
android:src="@drawable/commont_visual_head"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_visual_angle_title_bottom"
android:layout_width="@dimen/dp_31"
android:layout_height="@dimen/dp_25"
android:layout_marginBottom="@dimen/dp_22"
android:src="@drawable/common_visual_bottom"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</merge>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="100dp"
android:layout_height="208dp"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<ImageView
android:id="@+id/iv_visualangle_bg"
android:layout_width="39dp"
android:layout_height="141dp"
android:src="@drawable/taxi_p_visual_angle_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_visualangle_value"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/taxi_p_visual_angle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</merge>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_169"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<ImageView
android:id="@+id/iv_visualangle_bg_dark"
android:layout_width="@dimen/dp_40"
android:layout_height="@dimen/dp_169"
android:src="@drawable/common_visual_angle_bg"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_visualangle_value_dark"
android:layout_width="@dimen/dp_64"
android:layout_height="@dimen/dp_33"
android:src="@drawable/common_visual_angle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</merge>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_quanxiluk"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginStart="@dimen/dp_35"
android:src="@drawable/mogo_quanxi_lukou"
/>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/aciv_quanxiluk_value"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginStart="@dimen/dp_17"
android:layout_marginEnd="@dimen/dp_35"
app:layout_constraintStart_toEndOf="@+id/aciv_quanxiluk"
android:textSize="@dimen/dp_24"
android:text="全息路口"
android:textColor="@color/white"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -27,4 +27,6 @@
<color name="common_A0B3DA">#A0B3DA</color>
<color name="common_3B4577">#3B4577</color>
<color name="common_232A3F">#232A3F</color>
<color name="common_39BA90">#39BA90</color>
</resources>

View File

@@ -41,7 +41,9 @@ dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoutils
api rootProject.ext.dependencies.mogo_core_data
}else {
api project(":core:mogo-core-utils")
api project(':core:mogo-core-data')
}
}

View File

@@ -0,0 +1,18 @@
package com.mogo.och.data.taxi;
public class BaseOrderBean {
public String orderNo;// 订单号
public int orderStatus;//订单状态
public String getEndSiteAddr() {
return "";
}
@Override
public String toString() {
return "BaseOrderBean{" +
"orderNo='" + orderNo + '\'' +
", orderStatus=" + orderStatus +
'}';
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.data.taxi;
/**
* Created on 2021/9/7
@@ -9,6 +9,14 @@ public class OrderQueryRouteInfoReqBean {
public String sn;
public String orderNo;
@Override
public String toString() {
return "OrderQueryRouteInfoReqBean{" +
"sn='" + sn + '\'' +
", orderNo='" + orderNo + '\'' +
'}';
}
public OrderQueryRouteInfoReqBean(String sn, String orderNo) {
this.sn = sn;
this.orderNo = orderNo;

View File

@@ -1,4 +1,4 @@
package com.mogo.och.taxi.bean;
package com.mogo.och.data.taxi;
import com.mogo.eagle.core.data.BaseData;
@@ -18,5 +18,15 @@ public class OrderQueryRouteInfoRespBean extends BaseData {
// 起点至终点
public long durationToEnd; //订单上车点到目的地的时长单位
public long distanceToEnd; //订单上车点到目的地的距离单位
@Override
public String toString() {
return "Result{" +
"durationToStart=" + durationToStart +
", distanceToStart=" + distanceToStart +
", durationToEnd=" + durationToEnd +
", distanceToEnd=" + distanceToEnd +
'}';
}
}
}

View File

@@ -0,0 +1,5 @@
package com.mogo.och.data.taxi
data class QueryCarOrderByNoReqBean(
var sn: String, var orderNo: String
)

View File

@@ -0,0 +1,14 @@
package com.mogo.och.data.taxi
import com.mogo.eagle.core.data.BaseData
data class QueryCarOrderByNoRespBean(var data: Result) : BaseData() {
data class Result(
var sn: String,
var bookingUserPhone: String,
var businessType: String,
var mileage: Float,
var duration: Float,
var passengerSize: Int
):BaseOrderBean()
}

View File

@@ -1,6 +1,7 @@
package com.mogo.och.facade.route
import android.content.Context
import android.media.AudioManager
import android.view.Gravity
import android.view.View
import android.view.ViewGroup
@@ -18,7 +19,9 @@ import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.core.utilcode.util.VolumeUtils
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.biz.login.BusinessEnum
import com.mogo.och.common.module.biz.login.ILoginCallback
@@ -76,6 +79,15 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback {
}
private fun getFragment(): Fragment {
if(DeviceUtils.isEB5Model()&&AppIdentityModeUtils.isCharterPassenger(FunctionBuildConfig.appIdentityMode)){
val maxVolume = VolumeUtils.getMaxVolume(AudioManager.STREAM_MUSIC)
val volume = VolumeUtils.getVolume(AudioManager.STREAM_MUSIC)
val tartgetVolume = (maxVolume * 0.8).toInt()
OchChainLogManager.writeChainLog("音量","最大声音量:${maxVolume}------当前音量:${volume}----目的音量:${tartgetVolume}")
if(volume<tartgetVolume){
VolumeUtils.setVolume( AudioManager.STREAM_MUSIC, tartgetVolume, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)
}
}
if (AppIdentityModeUtils.isBusDriver(FunctionBuildConfig.appIdentityMode)) {
return getFragmentByServeName(OchCommonConst.BUS_DRIVER)
} else if (AppIdentityModeUtils.isShuttleDriver(FunctionBuildConfig.appIdentityMode)) {

View File

@@ -24,6 +24,8 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
import com.mogo.eagle.core.utilcode.util.StringUtils;
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
import com.mogo.och.common.module.manager.autopilot.line.LineManager;
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager;
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager;
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType;
@@ -47,7 +49,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
@@ -134,7 +135,7 @@ public class OrderModel {
public void init() {
mContext = AbsMogoApplication.getApp();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5,mMapLocationListener);
OchLocationManager.addGCJ02Listener(TAG,5,mMapLocationListener);
//开启自驾后 异常信息返回
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(mAdasStartFailureListener);
@@ -263,7 +264,7 @@ public class OrderModel {
public void release() {
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
OchLocationManager.removeGCJ02Listener(TAG);
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);
@@ -398,6 +399,7 @@ public class OrderModel {
if (refreshBusStationsCallback != null) {
refreshBusStationsCallback.updateEmptyUi();
}
updateBusStatus(null);
clearAutopilotControlParameters();
closeBeautificationMode();
clearStartAutopilotTag();
@@ -651,7 +653,7 @@ public class OrderModel {
}
// 3、距离轨迹15m计算
//3、距离轨迹15m计算
String resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId());
String resion = OchAutoPilotManager.canStartAutoPilot(busRoutesResult.getLineId());
if(TrajectoryAndDistanceManager.errorTypeNoneLineId.equals(resion)){
MogoLocation nextStationPoint = new MogoLocation();
if (backgroundCurrentStationIndex < stationList.size() - 1) {
@@ -664,7 +666,7 @@ public class OrderModel {
currentStationPoint.setLongitude(busStationBean.getGcjLon());
currentStationPoint.setLatitude(busStationBean.getGcjLat());
setTrajectoryStation(currentStationPoint,nextStationPoint, (long) busRoutesResult.getLineId());
resion = TrajectoryAndDistanceManager.INSTANCE.canStartAutopilot((long)busRoutesResult.getLineId());
resion = OchAutoPilotManager.canStartAutoPilot(busRoutesResult.getLineId());
}
if(!StringUtils.isEmpty(resion)){
ToastUtils.showShort(resion);
@@ -672,9 +674,7 @@ public class OrderModel {
return;
}
//4、ssm 给出数据
if (!FunctionBuildConfig.isDemoMode && !OCHAdasAbilityManager.getInstance().getAutopilotAbilityStatus()) {
ToastUtils.showLong(OCHAdasAbilityManager.getInstance().getAutopilotUnAbilityReason() +
", 请稍候重试");
if (!OchAutoPilotManager.canStartAutoPilotSSM()) {
triggerUnableStartAPReasonEvent();
return;
}
@@ -704,8 +704,7 @@ public class OrderModel {
* 到站后重置站点状态
*/
private void arriveSiteStation(String changeInfo) {
OchChainLogManager.writeChainLog("触发进站", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("触发进站", changeInfo);
if ( backgroundCurrentStationIndex +1 > stationList.size() - 1 ) { //到站短时间内调用多次
CallerLogger.e( M_BUS + TAG, "数组越界" );
return;
@@ -856,8 +855,7 @@ public class OrderModel {
String changeInfo = "taskId:" + busRoutesResult.getTaskId() + "--lineId:" + busRoutesResult.getLineId() +
"--currentStationName:"+currentStationName+"--finalNextStationName:"+finalNextStationName;
OchChainLogManager.writeChainLog("滑动出发", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("滑动出发", changeInfo);
OrderServiceManager.leaveStation(mContext,
stationList.get(backgroundCurrentStationIndex).getSeq(),
stationList.get(backgroundCurrentStationIndex).getSiteId(),
@@ -865,8 +863,7 @@ public class OrderModel {
new OchCommonServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData o) {
OchChainLogManager.writeChainLog("滑动出发成功", changeInfo,
true,OchChainLogManager.EVENT_KEY_INFE_WITH_BUS);
OchChainLogManager.writeChainLog("滑动出发成功", changeInfo);
}
@@ -923,8 +920,12 @@ public class OrderModel {
* @param result
*/
private void updateBusStatus(BusRoutesResult result) {
if (result == null) return;
if (result == null) {
LineManager.setLineId(-1);
return;
}
busRoutesResult = result;
LineManager.setLineId(busRoutesResult.getLineId());
stationList.clear();
stationList.addAll(result.getSites());
for (int i = 0; i < stationList.size(); i++) {
@@ -1188,8 +1189,7 @@ public class OrderModel {
// 登出
public void logout() {
MogoLocation gcj02 = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02();
LoginStatusManager.loginOut(gcj02.getLatitude(), gcj02.getLongitude());
LoginStatusManager.loginOut();
}
public void triggerStartServiceEvent(boolean isRestart, boolean send) {

View File

@@ -13,9 +13,6 @@ import java.util.ArrayList
object ShuttleVoiceManager {
fun arrivedStationBus(siteNameCN: String?, siteNameKR: String?) {
if (AppIdentityModeUtils.isB2(FunctionBuildConfig.appIdentityMode)) {
return
}
val context = AbsMogoApplication.getApp()
val list: MutableList<LangTtsEntity> = ArrayList()
siteNameCN?.let {
@@ -25,7 +22,7 @@ object ShuttleVoiceManager {
)
val engTTS = LangTtsEntity(
context.getString(R.string.bus_arrived_station_english_tip, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
val koreanTTS = LangTtsEntity(
context.getString(R.string.bus_arrived_station_korean_tip, siteNameKR?:it),
@@ -49,7 +46,7 @@ object ShuttleVoiceManager {
)
val engTTS = LangTtsEntity(
context.getString(R.string.bus_leave_station_english_tip, it),
LanguageType.CHINESE
LanguageType.ENGLISH
)
list.add(chineseTTS)
list.add(engTTS)

View File

@@ -104,6 +104,16 @@
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_71"
app:layout_constraintEnd_toEndOf="@+id/viewLimitingVelocity"
app:layout_goneMarginEnd="40dp"
app:layout_goneMarginTop="@dimen/dp_236"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
<!--消息盒子选择入口-->
<com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxButtonView
android:id="@+id/viewDriverMsgBoxButton"
@@ -198,6 +208,14 @@
app:layout_constraintTop_toBottomOf="@id/module_mogo_och_autopilot_status"
app:layout_goneMarginTop="@dimen/module_mogo_och_station_panel_container_margin_top_no_call" />
<com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver
app:layout_constraintStart_toEndOf="@+id/module_mogo_och_station_panel_container"
app:layout_constraintBottom_toBottomOf="@+id/module_mogo_och_station_panel_container"
android:layout_marginBottom="@dimen/dp_28"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<include
android:id="@+id/module_mogo_och_bus_test_bar"
layout="@layout/shuttle_test_bar_view"
@@ -241,23 +259,20 @@
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<!--切换地图远近事件 @dimen/module_switch_map -->
<com.mogo.och.common.module.wigets.map.switchvisual.VisualView
android:id="@+id/switch_visual_view"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/toolsView"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.och.common.module.wigets.map.reportworkorder.ReportWorkOrderView
android:id="@+id/reportworkorderview"
android:layout_marginStart="-10dp"
android:layout_marginBottom="@dimen/dp_17"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/switch_visual_view"
app:layout_constraintLeft_toRightOf="@id/toolsView"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
<com.mogo.och.common.module.wigets.map.drawline.LineView
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/reportworkorderview"
android:layout_marginStart="-11dp"
android:layout_marginBottom="@dimen/dp_17"
android:layout_width="@dimen/dp_142"
android:layout_height="@dimen/dp_142"/>
@@ -355,7 +370,7 @@
<com.mogo.eagle.core.function.hmi.ui.widget.ConnectionProcessView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_18"
android:layout_marginBottom="@dimen/dp_26"
app:layout_constraintBottom_toTopOf="@id/viewVersionName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -60,7 +60,7 @@ object PassengerServiceManager {
driverAppSn
)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate"))
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate",false))
}
/**

View File

@@ -26,6 +26,8 @@ import com.mogo.eagle.core.utilcode.util.StringUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener;
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
import com.mogo.och.common.module.manager.logchainanalytic.OchChainLogManager;
import com.mogo.och.common.module.manager.socket.lan.LanSocketManager;
import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType;
import com.mogo.och.common.module.voice.VoiceNotice;
@@ -39,12 +41,10 @@ import com.mogo.och.common.module.constant.OchCommonConst;
import com.mogo.och.common.module.manager.distance.IDistanceListener;
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager;
import com.mogo.och.common.module.utils.DateTimeUtil;
import com.mogo.commons.module.status.StatusDescriptor;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener;
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.och.shuttle.passenger.bean.response.PassengerOperationStatusResponse;
@@ -182,6 +182,8 @@ public class BusPassengerModel {
return;
}
OchChainLogManager.writeChainLog("线路发生变化",data.toString());
if (routesResult != null &&
routesResult.getWriteVersion() < data.getResult().getWriteVersion()){
routesResult = data.getResult();
@@ -308,7 +310,7 @@ public class BusPassengerModel {
OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,mGoAutopilotStatusListener);
IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener );
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, 3,mMapLocationListener);
OchLocationManager.addGCJ02Listener(TAG, 3,mMapLocationListener);
//监听司机端消息
@@ -321,7 +323,7 @@ public class BusPassengerModel {
private void releaseListeners() {
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
OchLocationManager.removeGCJ02Listener(TAG);
MogoAiCloudSocketManager.getInstance(mContext)
.unregisterLifecycleListener(10010);

View File

@@ -18,7 +18,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.telematic.IReceivedMsgListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
@@ -32,6 +31,7 @@ import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager.p
import com.mogo.och.common.module.constant.OchCommonConst
import com.mogo.och.common.module.manager.autopilot.autopilot.IOchAutopilotStatusListener
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotStatusListenerManager
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.common.module.network.OchCommonServiceCallback
import com.mogo.och.common.module.manager.distance.IDistanceListener
import com.mogo.och.common.module.manager.distance.TrajectoryAndDistanceManager
@@ -44,6 +44,7 @@ import com.mogo.och.common.module.manager.socket.lan.bean.BusinessType
import com.mogo.och.common.module.manager.socket.lan.bean.DPMsgType
import com.mogo.och.common.module.manager.socket.lan.bean.TaskDetailsMsg
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.voice.VoiceNotice.showNotice
import com.mogo.och.data.bean.BusRoutesResult
import com.mogo.och.data.bean.BusStationBean
@@ -113,7 +114,7 @@ class PM2DrivingModel private constructor() {
OchAutoPilotStatusListenerManager.addListener(TAG, mAutoPilotStatusListener)
// 定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 3, mMapLocationListener)
OchLocationManager.addGCJ02Listener(TAG, 3, mMapLocationListener)
//司乘屏通信监听
CallerTelematicListenerManager.addListener(TAG, mReceivedMsgListener)
@@ -131,7 +132,7 @@ class PM2DrivingModel private constructor() {
CallerAutoPilotStatusListenerManager.removeListener(TAG)
// 定位监听
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
OchLocationManager.removeGCJ02Listener(TAG)
CallerTelematicListenerManager.removeListener(TAG)
@@ -246,7 +247,7 @@ class PM2DrivingModel private constructor() {
.build()
mAudioManager.requestAudioFocus(mAudioFocusRequest) //抢占焦点
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(msg,AIAssist.LEVEL0,object : IMogoVoiceCmdCallBack{
VoiceNotice.speakTTSVoiceWithLevel(msg,AIAssist.LEVEL0,object : IMogoVoiceCmdCallBack{
override fun onSpeakEnd(speakText: String?) {
mAudioManager.abandonAudioFocusRequest(mAudioFocusRequest)
}

View File

@@ -109,9 +109,10 @@ class PM2HPMapFragment :
it?.let{
builder.rotate(it.angle.toFloat())
}
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
overlayManager?.showOrUpdatePoint(builder.build())
}
val overlayManager = CallerMapUIServiceManager.getOverlayManager()
overlayManager?.showOrUpdatePoint(builder.build())
}
OCHThreadPoolManager.getsInstance().execute(setMapMarkerRunnable)
}

View File

@@ -22,13 +22,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoSweeperFutianCleanSystemL
import com.mogo.eagle.core.function.api.autopilot.IMoGoSweeperFutianCloudTaskListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCleanSystemListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerSweeperFutianCloudTaskListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.NumberFormatUtil;
import com.mogo.och.sweeper.cloud.callback.ISweeperCloudTaskCallback;
@@ -131,7 +131,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
public void init() {
mContext = AbsMogoApplication.getApp();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, mMapLocationListener);
OchLocationManager.addGCJ02Listener(TAG,10, mMapLocationListener);
MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
@@ -275,7 +275,7 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
public void release() {
MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
OchLocationManager.removeGCJ02Listener(TAG);
//自动驾驶路线规划接口
CallerPlanningRottingListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);
@@ -792,4 +792,9 @@ public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListene
public void onAutopilotTrajectoryDownloadReq(@NonNull AutopilotControlParameters.AutoPilotLine autoPilotLine, int downloadType) {
}
@Override
public void onFsmReceiveTimeout(boolean isTimeout) {
}
}

View File

@@ -14,11 +14,11 @@ import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.*
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.sweeper.R
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
import com.mogo.och.sweeper.common.constant.SweeperConst
@@ -55,8 +55,7 @@ class WeltMapOverView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
LayoutInflater.from(context).inflate(R.layout.sweeper_welt_map_overview, this)
initAMapView()
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this)
CallerChassisLocationGCJ02ListenerManager.setListenerHz(TAG,5)
OchLocationManager.addGCJ02Listener(TAG, 5,this)
}
private fun initAMapView() {

View File

@@ -14,11 +14,11 @@ import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.*
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
import com.mogo.och.sweeper.R
import kotlinx.android.synthetic.main.sweeper_welt_small_map_view.view.*
@@ -51,8 +51,7 @@ class WeltSmallMapView : ConstraintLayout, IMoGoChassisLocationGCJ02Listener {
LayoutInflater.from(context).inflate(R.layout.sweeper_welt_small_map_view, this)
initAMapView()
// 注册定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this)
CallerChassisLocationGCJ02ListenerManager.setListenerHz(TAG,5)
OchLocationManager.addGCJ02Listener(TAG, 5,this)
}
override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) {

View File

@@ -28,13 +28,13 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Liste
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.CoordinateUtils;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutoPilotManager;
import com.mogo.och.common.module.manager.autopilot.location.OchLocationManager;
import com.mogo.och.common.module.manager.socket.cloud.OCHSocketMessageManager;
import com.mogo.och.common.module.manager.socket.cloud.data.OCHOperationalMessage;
import com.mogo.och.common.module.network.OchCommonServiceCallback;
@@ -130,7 +130,7 @@ public class SweeperOperateTaskModel {
public void init() {
mContext = AbsMogoApplication.getApp();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG, mMapLocationListener);
OchLocationManager.addGCJ02Listener(TAG, 10,mMapLocationListener);
MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
@@ -255,7 +255,7 @@ public class SweeperOperateTaskModel {
public void release() {
MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener);
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
OchLocationManager.removeGCJ02Listener(TAG);
//自动驾驶路线规划接口
CallerPlanningRottingListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener);
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);

View File

@@ -469,4 +469,9 @@ public class SweeperOperatePresenter extends Presenter<SweeperOperateFragment>
@Override
public void onAutopilotTrajectoryDownloadReq(@NonNull AutopilotControlParameters.AutoPilotLine autoPilotLine, int downloadType) {
}
@Override
public void onFsmReceiveTimeout(boolean isTimeout) {
}
}

Some files were not shown because too many files have changed in this diff Show More