[master] merge 6.7.4 conflict gradle version

This commit is contained in:
zhongchao
2024-11-11 14:27:10 +08:00
12 changed files with 196 additions and 60 deletions

View File

@@ -18,4 +18,5 @@ interface ITaxiCarServiceCallback {
fun onCarStartServiceFailed(code: Int, msg: String)
fun onCarStartServiceError()
fun onStartTaskFail()
}

View File

@@ -462,6 +462,10 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}
override fun onStartTaskFail() {
}
private fun clearDemoModeAndACParameters(){
if (FunctionBuildConfig.isDemoMode) {
d(TAG, "setIPCDemoModefalse")

View File

@@ -947,6 +947,7 @@ object TaxiTaskModel {
override fun onError() {
super.onError()
mTaxiCarServiceCallback?.onStartTaskFail()
if (!NetworkUtils.isConnected(mContext)) { // 网络异常,接口重试
ToastUtils.showShort("网络出现异常,请稍后重试")
DebugView.printErrorMsg("[开始任务] 网络出现异常,请稍后重试")
@@ -957,6 +958,7 @@ object TaxiTaskModel {
}
override fun onFail(code: Int, msg: String?) {
mTaxiCarServiceCallback?.onStartTaskFail()
DebugView.printErrorMsg("[开始任务] 请求fail, code=$code, msg=$msg, lindId=$lineId")
d(TAG, "startTask onFail: code=$code, msg=$msg")
ToastUtils.showShort("开始任务请求出现异常,请稍后重试,code=$code, msg=$msg, lindId=$lineId")

View File

@@ -1,6 +1,5 @@
package com.mogo.och.unmanned.taxi.ui.itinerarycurrent
package com.mogo.och.unmanned.taxi.ui.task.itinerarycurrent
import androidx.lifecycle.ViewModel
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.BaseData
@@ -27,7 +26,6 @@ import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.base.BaseViewModel
import com.mogo.och.unmanned.taxi.base.IUiIntent
import com.mogo.och.unmanned.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.unmanned.taxi.bean.StartGrayAndQueryContrailRsp
import com.mogo.och.unmanned.taxi.bean.StartServiceRespBean
import com.mogo.och.unmanned.taxi.bean.TrajectoryListRespBean
import com.mogo.och.unmanned.taxi.callback.ITaxiCarServiceCallback
@@ -179,9 +177,14 @@ class ItineraryCurrentModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
private fun startTask(isStartAutopilot: Boolean = true) {
if (!TaxiTaskModel.checkCurrentTaskCondition()) {
ToastUtils.showShort("无任务!")
onStartTaskFail()
return
}
if(TaxiTaskModel.getCurrentTaskWithOrder()==null){
ToastUtils.showShort("无任务!")
onStartTaskFail()
return
}
TaxiTaskModel.getCurrentTaskWithOrder()?.let {
TaxiTaskModel.startTask(
if (it.order != null && it.order!!.orderStatus >= TaxiOrderStatusEnum.ArriveAtStart.code)
@@ -480,6 +483,10 @@ class ItineraryCurrentModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
}
}
override fun onStartTaskFail() {
viewCallback?.onStartTaskFail()
}
private fun clearDemoModeAndACParameters(){
if (FunctionBuildConfig.isDemoMode) {
d(TAG, "setIPCDemoModefalse")
@@ -505,7 +512,7 @@ class ItineraryCurrentModel : BaseViewModel<UnmannedState, TaskUiIntent>(),
interface SwtichLineViewCallback {
fun onStartTaskFail()
}
}

View File

@@ -32,7 +32,6 @@ import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.common.module.utils.ResourcesUtils
import com.mogo.och.common.module.voice.VoiceNotice
import com.mogo.och.common.module.wigets.CommonSlideView
import com.mogo.och.common.module.wigets.OCHCommitDialog
import com.mogo.och.common.module.wigets.dialog.CommonDialogStatus
import com.mogo.och.unmanned.taxi.R
import com.mogo.och.unmanned.taxi.TaxiUnmannedDriverProvider
@@ -46,7 +45,6 @@ import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
import com.mogo.och.unmanned.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
import com.mogo.och.unmanned.taxi.ui.debug.DebugView
import com.mogo.och.unmanned.taxi.ui.itinerarycurrent.ItineraryCurrentModel
import com.mogo.och.unmanned.taxi.ui.task.TaskUiIntent
import com.mogo.och.unmanned.taxi.ui.task.TaskWithOrderUIState
import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel
@@ -868,4 +866,9 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi
}
}
override fun onStartTaskFail() {
commonSlideViewStartServer.reset()
}
}

View File

@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.business.roadcross
import android.annotation.SuppressLint
import android.content.Context
import android.graphics.BitmapFactory
import android.os.Handler
import android.os.Looper
import android.os.Message
@@ -21,7 +20,9 @@ import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.map.R
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.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.map.overlay.core.Level
@@ -38,6 +39,8 @@ class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
private const val TAG = "RoadCrossCameraManager"
private const val REQUEST_CAMERA_MSG = 0
private const val REMOVE_MARKER_MSG = 1
private const val REQUEST_CAL_ROAD_DISTANCE = 2
private const val REQUEST_CAL_ROAD_DELAY_TIME = 1000L
private const val REQUEST_CAMERA_DELAY_TIME = 20000L
private const val REMOVE_MARKER_DELAY_TIME = 10000L
@@ -64,6 +67,11 @@ class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
getAllRoadCross()
}
REQUEST_CAL_ROAD_DISTANCE -> {
CallerLogger.d("$M_MAP$TAG", "cal roam road distance")
calRoamRoadDistance()
}
REMOVE_MARKER_MSG -> {
CallerLogger.d("$M_MAP$TAG", "remove marker")
overlayManager?.removeAllPointsInOwner(TAG)
@@ -208,12 +216,12 @@ class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
}
}
fun hasCrossCamera(): Boolean {
private fun hasCrossCamera(camera: ((Boolean, CameraDeviceInfo?) -> Unit)) {
if (CallerMapUIServiceManager.getCityCode() == "010") {
roadCrossTrace(
TAG, mapOf("errorMsg" to "cityCode限制 - 北京无路口设备")
)
return false
camera.invoke(false, null)
}
val roadCrossEnd = CallerMapRoadListenerManager.getCrossEndInfo()
@@ -221,31 +229,47 @@ class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
roadCrossTrace(
TAG, mapOf("errorMsg" to "hasCrossCamera - 未获取到地图crossEnd数据")
)
return false
camera.invoke(false, null)
}
if (roadCrossCameraList == null) {
roadCrossTrace(
TAG, mapOf("errorMsg" to "hasCrossCamera - 未获取到全市路口设备信息")
)
return false
camera.invoke(false, null)
}
roadCrossCameraList?.forEach {
val result = (!it.roadUniqueId.isNullOrEmpty()
var result = false
roadCrossCameraList?.forEach { it ->
result = (!it.roadUniqueId.isNullOrEmpty()
&& it.roadUniqueId == roadCrossEnd)
if (result) {
roadCrossTrace(
TAG, mapOf("errorMsg" to "hasCrossCamera - 遍历匹配路口数据命中 - $roadCrossEnd")
TAG,
mapOf("errorMsg" to "hasCrossCamera - 遍历匹配路口数据命中 - $roadCrossEnd")
)
return true
val loc = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
val cameraInfo = it.deviceInfoList.minByOrNull { info ->
CoordinateUtils.calculateLineDistance(
info.lon,
info.lat,
loc.longitude,
loc.latitude
)
}
if (cameraInfo != null) {
camera.invoke(true, cameraInfo)
return@forEach
}
}
}
if(!result){
roadCrossTrace(
TAG, mapOf("errorMsg" to "hasCrossCamera - 均不匹配上述条件")
TAG, mapOf("errorMsg" to "hasCrossCamera - 未匹配到路口信息 - $roadCrossEnd")
)
return false
camera.invoke(false, null)
}
}
@SuppressLint("NewApi")
@@ -270,20 +294,102 @@ class RoadCrossCameraManager : IMoGoMapRoadListener, IGaoDeMapLocationListener {
override fun onRoadChange(cross: Boolean, roadCross: RoadCross?) {
super.onRoadChange(cross, roadCross)
// 出路口
if (!cross) {
handleRoadCrossRoam(false)
handleCameraMarker()
CallerLogger.d("$M_MAP$TAG", "经过路口,释放控制")
} else {
handleRoadCrossRoam(true)
}
}
private var cameraDis: CameraDeviceInfo? = null
private fun handleRoadCrossRoam(isCross: Boolean) {
CallerLogger.d("$M_MAP$TAG", "handleRoadCrossRoam , isCross:$isCross")
if (isCross) {
//停止handlerremove
cameraDis = null
handler.removeMessages(REQUEST_CAL_ROAD_DISTANCE)
CallerMapRoadListenerManager.invokeCrossDevice(false)
CallerLogger.d("$M_MAP$TAG", "emArrow 已过路口,清除判断")
} else {
//开启handler计算每隔一秒
handler.sendEmptyMessageDelayed(REQUEST_CAL_ROAD_DISTANCE, REQUEST_CAL_ROAD_DELAY_TIME)
CallerLogger.d("$M_MAP$TAG", "emArrow 路口内,开始计算")
}
}
private fun calRoamRoadDistance() {
//计算前方路口与marker最小距离 < 200 ,触发业务,回调
//到达触发距离可一直发如果业务方已经展示业务invoke取消handler
handler.removeMessages(REQUEST_CAL_ROAD_DISTANCE)
if (cameraDis != null) {
calDisInRange { b, dis ->
if(b){
CallerLogger.d("$M_MAP$TAG", "emArrow 距离内,多次计算,命中")
CallerMapRoadListenerManager.invokeCrossDevice(true)
}else{
//没有命中距离,继续计算
handler.sendEmptyMessageDelayed(REQUEST_CAL_ROAD_DISTANCE, REQUEST_CAL_ROAD_DELAY_TIME)
CallerLogger.d("$M_MAP$TAG", "emArrow 继续计算, dis:$dis")
}
}
return
}
hasCrossCamera { hasCamera, cameraDeviceInfo ->
if (hasCamera && cameraDeviceInfo != null) {
CallerLogger.d("$M_MAP$TAG", "emArrow 首次命中设备")
cameraDis = cameraDeviceInfo
calDisInRange { b, dis ->
if(b){
CallerLogger.d("$M_MAP$TAG", "emArrow 距离内,首次即命中")
CallerMapRoadListenerManager.invokeCrossDevice(true)
}else{
//没有命中距离,继续计算
handler.sendEmptyMessageDelayed(REQUEST_CAL_ROAD_DISTANCE, REQUEST_CAL_ROAD_DELAY_TIME)
CallerLogger.d("$M_MAP$TAG", "emArrow 继续计算, 首次 dis:$dis")
}
}
}else{
//没有命中设备,继续计算
handler.sendEmptyMessageDelayed(REQUEST_CAL_ROAD_DISTANCE, REQUEST_CAL_ROAD_DELAY_TIME)
CallerLogger.d("$M_MAP$TAG", "emArrow 没有命中设备${cameraDeviceInfo?:"空"}/路口${CallerMapRoadListenerManager.getCrossEndInfo()},继续计算")
}
}
}
private fun calDisInRange(range: ((Boolean, Float) -> Unit)) {
if (cameraDis == null) {
range.invoke(false, 0f)
return
}
val loc = CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
val dis = CoordinateUtils.calculateLineDistance(
cameraDis!!.lon,
cameraDis!!.lat,
loc.longitude,
loc.latitude
)
if (dis < 220 && dis >= 5) {
range.invoke(true, dis)
}else{
range.invoke(false,dis)
}
}
private fun handleCameraMarker() {
if (!isCameraRequest) {
CallerLogger.d("$M_MAP$TAG", "未触发路口获取marker")
return
}
if (!cross) {
// 停止请求摄像头数据
ndeRoadCameraNetWorkModel.cancelRequest("roadCross")
// 清除marker
CallerLogger.d("$M_MAP$TAG", "remove marker handler")
CallerLogger.d("$M_MAP$TAG", "handleCameraMarker remove marker handler")
handler.sendEmptyMessageDelayed(REMOVE_MARKER_MSG, REMOVE_MARKER_DELAY_TIME)
// 释放控制
isCameraRequest = false
CallerLogger.d("$M_MAP$TAG", "经过路口,释放控制")
}
}
private fun traceError(msg: String) {

View File

@@ -188,18 +188,9 @@ class RoadCrossRoamView @JvmOverloads constructor(
}
}
override fun onStopLineInfo(info: StopLine) {
super.onStopLineInfo(info)
val cross = CallerMapRoadListenerManager.getCrossEndInfo()
if (info.distance == 0.0 || info.distance > 200) {
if (cross != null && cross != "0") {
CallerLogger.d("$M_MAP$TAG", "未触发路口ID:$cross , 距离超出:${info.distance}")
}
return
}
CallerLogger.d("$M_MAP$TAG", "命中 before:$showState")
showState = info.distance in 100.0..200.0
CallerLogger.d("$M_MAP$TAG", "命中 after:$showState路口ID:$cross , dis:${info.distance}")
override fun onCrossDevice(trigger: Boolean) {
super.onCrossDevice(trigger)
showState = trigger
}
private fun attachView() {
@@ -234,17 +225,17 @@ class RoadCrossRoamView @JvmOverloads constructor(
CallerLogger.d("$M_MAP$TAG", "未触发路口ID:$cross")
return
}
if (!instance.hasCrossCamera()) {
CallerLogger.d("$M_MAP$TAG", "没有路侧设备,不做处理")
return
}
isShow = true
//播放语音
val dis = CallerMapRoadListenerManager.getStopLineDistance()?.toInt() ?: 0
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
var disStr = "前方即将通过路口,${SkinResources.getInstance().getString(R.string.operation_platform_name)}为您提供路口全息影像,助力出行"
var disStr = "前方即将通过路口,${
SkinResources.getInstance().getString(R.string.operation_platform_name)
}为您提供路口全息影像助力出行"
if (dis >= 80) {
disStr = "前方${dis}米将通过路口,${SkinResources.getInstance().getString(R.string.operation_platform_name)}为您提供路口全息影像,助力出行"
disStr = "前方${dis}米将通过路口,${
SkinResources.getInstance().getString(R.string.operation_platform_name)
}为您提供路口全息影像助力出行"
}
AIAssist.getInstance(context).speakTTSVoice(disStr)
}

View File

@@ -41,7 +41,7 @@
<com.mogo.eagle.core.function.view.MapRoamView
android:id="@+id/mapRoamView"
android:layout_width="@dimen/dp_540"
android:layout_width="@dimen/dp_593"
android:layout_height="@dimen/dp_300"
android:layout_marginTop="@dimen/dp_160"
app:layout_constraintLeft_toLeftOf="parent"
@@ -50,11 +50,11 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/clScanningBg"
android:layout_width="@dimen/dp_540"
android:layout_width="@dimen/dp_593"
android:layout_height="@dimen/dp_300"
android:layout_marginTop="@dimen/dp_160"
android:layout_marginStart="@dimen/dp_32"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView

View File

@@ -116,6 +116,7 @@ class ChainConstant {
const val CHAIN_CODE_HD_MAP_CALL = "CHAIN_CODE_HD_MAP_CALL"
const val CHAIN_CODE_HD_MAP_ROAD_CROSS = "CHAIN_CODE_HD_MAP_ROAD_CROSS"
const val CHAIN_CODE_HD_MAP_ROAD_LIVE = "CHAIN_CODE_HD_MAP_ROAD_LIVE"
const val CHAIN_CODE_HD_MAP_ROAD_DEVICE_TRIGGER = "CHAIN_CODE_HD_MAP_ROAD_DEVICE_TRIGGER"
const val CHAIN_CODE_HD_MAP_ICON_SET = "CHAIN_CODE_HD_MAP_ICON_SET"
const val CHAIN_CODE_HMI_ACTIONS = "CHAIN_CODE_HMI_ACTIONS"
const val CHAIN_CODE_CERT_REQUEST = "CHAIN_CODE_CERT_REQUEST"

View File

@@ -19,4 +19,7 @@ interface IMoGoMapRoadListener {
fun onRoadCrossClick() {}
fun onCrossDevice(trigger:Boolean){}
}

View File

@@ -15,11 +15,16 @@ object CallerMapRoadListenerManager : CallerBase<IMoGoMapRoadListener>() {
private var mRoadId: String? = null
private var mStopLine: StopLine? = null
@Volatile
private var mRoadChange = false
@Volatile
private var mRoadCross: RoadCross? = null
@Volatile
private var mTrigger = false
private var mCross: Int by Delegates.observable(-1) { _, oldValue, newValue ->
if (oldValue != newValue) {
CallerLogger.d("$M_MAP onRoadChange observable", newValue)
@@ -40,9 +45,9 @@ object CallerMapRoadListenerManager : CallerBase<IMoGoMapRoadListener>() {
mStopLine?.let {
listener.onStopLineInfo(it)
}
if (mCross != -1 && mRoadCross != null) {
// 启动默认false
listener.onRoadChange(mRoadChange, mRoadCross)
}
listener.onCrossDevice(mTrigger)
}
fun invokeListenersOnRoadIdGet(roadId: String) {
@@ -116,4 +121,17 @@ object CallerMapRoadListenerManager : CallerBase<IMoGoMapRoadListener>() {
entry.value.onCrossLiveInfo(info)
}
}
@ChainLog(
linkChainLog = ChainConstant.CHAIN_TYPE_STATUS,
linkCode = ChainConstant.CHAIN_SOURCE_MAP,
nodeAliasCode = ChainConstant.CHAIN_CODE_HD_MAP_ROAD_DEVICE_TRIGGER,
paramIndexes = [0]
)
fun invokeCrossDevice(trigger:Boolean){
mTrigger = trigger
M_LISTENERS.forEach { entry ->
entry.value.onCrossDevice(trigger)
}
}
}

View File

@@ -151,7 +151,7 @@ MATRIX_VERSION=2.0.8
# 公交模式司机端版本号
DRIVER_VERSION=6.7.3
DRIVER_VERSION=6.7.4
# 公交模式乘客端端版本号
PASSENGER_VERSION=5.7.3
PASSENGER_VERSION=5.7.4