diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index 4410ea8827..a2713a6c12 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -70,29 +70,60 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( @SuppressLint("ClickableViewAccessibility") private fun initView() { background = ColorDrawable(Color.parseColor("#F0151D41")) - - keyBoardUtil?.setActionListener { inputContent -> - inputContent.toIntOrNull()?.let { speed -> - when { - speed > 60 -> { - // 设置失败键盘不消失,让用户直接修改 - ToastUtils.showShort("超过最大限速值60,设置失败") - } - else -> { - // 设置自动驾驶速度 - val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speed) - when { - isSuccess -> { - ToastUtils.showShort("车速设置成功,立即生效") - } - else -> { - ToastUtils.showShort("设置车速失败,请启动域控制器") + if (keyBoardUtil == null) { + keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed) + } + keyBoardUtil?.setActionListener(object: KeyBoardUtil.ActionListener{ + override fun onComplete(inputContent: String?) { + inputContent?.toIntOrNull()?.let { speed -> + when { + speed > 60 -> { + // 设置失败键盘不消失,让用户直接修改 + ToastUtils.showShort("超过最大限速值60,设置失败") + } + else -> { + keyBoardUtil?.hideKeyboard() + etInputSpeed.clearFocus() + // 设置自动驾驶速度 + val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speed) + when { + isSuccess -> { + ToastUtils.showShort("车速设置成功,立即生效") + } + else -> { + ToastUtils.showShort("设置车速失败,请启动域控制器") + } } } } } } - } + + override fun onUpdate(inputContent: String?) { + if (inputContent != null) { + try { + if(inputContent.isEmpty()){ + speedLimit = 0 + }else{ + speedLimit = inputContent.toInt() + if(speedLimit>60){ + speedLimit = 60 + ToastUtils.showShort("最大限速60") + } + } + }catch (t: Exception){ + ToastUtils.showShort("最大限速60") + speedLimit = 60 + + } + etInputSpeed.setText(speedLimit.toString()) + etInputSpeed.setSelection(speedLimit.toString().length) + } + } + + }) + + KeyBoardUtil.hideSystemSoftKeyboard(context, etInputSpeed) ivCloseIcon.setOnClickListener { clickListener?.onClose(it) } @@ -123,16 +154,42 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( // } tvAcceleration.text = "每次调整车速±5km/h,点击确定生效" if (speedLimit > 0) { - tvSpeed.text = speedLimit.toString() + etInputSpeed.setText(speedLimit.toString()) }else{ - tvSpeed.text = "0" + etInputSpeed.setText("0") + } + + etInputSpeed.setOnTouchListener { _, _ -> + val curTime = System.currentTimeMillis() + if (curTime - lastTime < 1000) { + return@setOnTouchListener true + } + etInputSpeed.isFocusableInTouchMode = true + if (keyBoardUtil == null) { + keyBoardUtil = KeyBoardUtil(sKeyBoardView, etInputSpeed) + } + keyBoardUtil?.showKeyboard() + //滑动滚动条 + svLayout.post { + svLayout.fullScroll(View.FOCUS_DOWN) + } + if (!connectStatus) { + ToastUtils.showShort("设置车速失败,请启动域控制器") + keyBoardUtil?.hideKeyboard() + return@setOnTouchListener true + } else { + return@setOnTouchListener false + } } ivSpeedReduce.setOnClickListener { if(speedLimit>=5){ speedLimit -= 5 - tvSpeed.text = speedLimit.toString() - }else{ + etInputSpeed.setText(speedLimit.toString()) + }else if(speedLimit in 1..4){ + speedLimit = 0 + etInputSpeed.setText(speedLimit.toString()) + } else{ ToastUtils.showShort("车速不能再减了") } } @@ -140,19 +197,27 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( ivSpeedAdd.setOnClickListener { if(speedLimit<=55){ speedLimit += 5 - tvSpeed.text = speedLimit.toString() - }else{ + etInputSpeed.setText(speedLimit.toString()) + }else if(speedLimit in 56..59){ + speedLimit = 60 + etInputSpeed.setText(speedLimit.toString()) + } else{ ToastUtils.showShort("车速不能再加了") } } //速度确认 tvSureModify.setOnClickListener { + if(speedLimit>60){ + // 设置失败键盘不消失,让用户直接修改 + ToastUtils.showShort("超过最大限速值60,设置失败") + return@setOnClickListener + } val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speedLimit) when { isSuccess -> { //速度显示 - tvSpeed.text = speedLimit.toString() + etInputSpeed.setText(speedLimit.toString()) ToastUtils.showShort("车速设置成功,立即生效") } else -> { @@ -243,7 +308,7 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( // } maxAcceleration = carConfigResp.maxAcceleration speedLimit = (carConfigResp.speedLimit * 3.6).toInt() - tvSpeed.text = speedLimit.toString() + etInputSpeed.setText(speedLimit.toString()) } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java index 8b826a2255..b06500228f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/utils/KeyBoardUtil.java @@ -6,6 +6,7 @@ import android.inputmethodservice.KeyboardView; import android.os.Build; import android.text.Editable; import android.text.InputType; +import android.util.Log; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; @@ -78,6 +79,9 @@ public class KeyBoardUtil { editable.delete(start - 1, start); } } + if(actionListener != null){ + actionListener.onUpdate(editText.getText().toString()); + } break; case Keyboard.KEYCODE_DONE: if (actionListener != null) { @@ -86,6 +90,9 @@ public class KeyBoardUtil { break; default: editable.insert(start, Character.toString((char) primaryCode)); + if(actionListener != null){ + actionListener.onUpdate(editText.getText().toString()); + } break; } } @@ -133,5 +140,6 @@ public class KeyBoardUtil { public interface ActionListener { void onComplete(String inputContent); + void onUpdate(String inputContent); } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt index 90ea0b57ab..bfc61ae6ef 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/vehicle/TakeOverView.kt @@ -7,10 +7,15 @@ import android.view.View import androidx.constraintlayout.widget.ConstraintLayout import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.data.enums.EventTypeEnumNew +import com.mogo.eagle.core.data.msgbox.MsgBoxBean +import com.mogo.eagle.core.data.msgbox.MsgBoxType +import com.mogo.eagle.core.data.msgbox.V2XMsg import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager +import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.zhjt.mogo.adas.data.bean.MogoReport @@ -54,18 +59,63 @@ class TakeOverView @JvmOverloads constructor( MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_PLANNING, MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_LOCATION, MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_CHASSIS, - MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE -> { - CallerHmiManager.warningV2X(EventTypeEnumNew.TAKE_OVER_EVENT.poiType, EventTypeEnumNew.TAKE_OVER_EVENT.content, EventTypeEnumNew.TAKE_OVER_EVENT.tts, object : IMoGoWarningStatusListener { - override fun onShow() { - takeOver = true - visibility = View.VISIBLE - } + MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE ->{ + CallerHmiManager.warningV2X( + EventTypeEnumNew.TAKE_OVER_EVENT.poiType, + EventTypeEnumNew.TAKE_OVER_EVENT.content, + EventTypeEnumNew.TAKE_OVER_EVENT.tts, + object : IMoGoWarningStatusListener { + override fun onShow() { + takeOver = true + visibility = View.VISIBLE + //加入消息盒子 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.TAKE_OVER_EVENT.poiType, + EventTypeEnumNew.TAKE_OVER_EVENT.content, + EventTypeEnumNew.TAKE_OVER_EVENT.tts + ) + ) + ) + } - override fun onDismiss() { - takeOver = false - visibility = View.GONE - } - }, isFromObu = false) + override fun onDismiss() { + takeOver = false + visibility = View.GONE + } + },isFromObu = false + ) + } + //弱网 + MogoReport.Code.Error.EMAP.EPARALLEL_AICLOUD_NETWORK_WEAK, + MogoReport.Code.Error.EMAP.EPARALLEL_AICLOUD_CONNECTION_ERROR -> { + CallerHmiManager.warningV2X( + EventTypeEnumNew.NETWORK_WEAK_EVENT.poiType, + EventTypeEnumNew.NETWORK_WEAK_EVENT.content, + EventTypeEnumNew.NETWORK_WEAK_EVENT.tts, + object : IMoGoWarningStatusListener { + override fun onShow() { + takeOver = true + visibility = View.VISIBLE + //加入消息盒子 + saveMsgBox( + MsgBoxBean( + MsgBoxType.V2X, V2XMsg( + EventTypeEnumNew.NETWORK_WEAK_EVENT.poiType, + EventTypeEnumNew.NETWORK_WEAK_EVENT.content, + EventTypeEnumNew.NETWORK_WEAK_EVENT.tts + ) + ) + ) + } + + override fun onDismiss() { + takeOver = false + visibility = View.GONE + } + },isFromObu = false + ) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml index 75d41bf8bf..9d2020f352 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_m_box_notice.xml @@ -1,6 +1,6 @@ diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml index 0c2efda5b6..00d935bb03 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_auto_pilot_check.xml @@ -6,6 +6,7 @@ android:layout_height="match_parent"> - @@ -297,8 +300,8 @@ android:textColor="@android:color/white" android:textSize="42dp" android:layout_marginLeft="50dp" - app:layout_constraintTop_toTopOf="@id/tvSpeed" - app:layout_constraintBottom_toBottomOf="@id/tvSpeed" + app:layout_constraintTop_toTopOf="@id/ivSpeedAdd" + app:layout_constraintBottom_toBottomOf="@id/ivSpeedAdd" app:layout_constraintLeft_toRightOf="@id/tvUnit" tools:visibility="visible" /> diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt index 57f6e064f3..2885e542e1 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/ai/net/AiCloudIdentifyNetWorkModel.kt @@ -16,7 +16,6 @@ class AiCloudIdentifyNetWorkModel private constructor(){ val aiCloudIdentifyNetWorkModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { AiCloudIdentifyNetWorkModel() } - } private fun getNetWorkApi(baseUrl: String = getEagleHost()): IAiCloudIdentifyApiService { return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl) diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt index d7ddc07c0d..d3282ce9ab 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/EventTypeEnumNew.kt @@ -112,6 +112,10 @@ enum class EventTypeEnumNew( "注意周围、立即接管", "自动驾驶退出请立即接管" ), + //弱网接管 + NETWORK_WEAK_EVENT("20001", "接管", "注意周围、立即接管", R.drawable.icon_warning_take_over, + "注意周围、立即接管", "平行驾驶遇弱网已退出,注意随时接管"), + // 前方静止or慢速车辆报警 ALERT_FRONT_CAR("99999","前方预警"), @@ -843,6 +847,10 @@ enum class EventTypeEnumNew( TAKE_OVER_EVENT.poiType ->{ TAKE_OVER_EVENT.poiTypeStr } + //弱网接管 + NETWORK_WEAK_EVENT.poiType ->{ + NETWORK_WEAK_EVENT.poiTypeStr + } //机动车 TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType ->{ TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiTypeStr @@ -1142,6 +1150,10 @@ enum class EventTypeEnumNew( TAKE_OVER_EVENT.poiType -> { R.drawable.icon_warning_take_over } + //弱网接管 + NETWORK_WEAK_EVENT.poiType -> { + R.drawable.icon_warning_take_over + } //机动车 TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.poiType -> { R.drawable.icon_warning_v2x_motorcycle_collision diff --git a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/MogoReport.java b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/MogoReport.java index c0dcddf7ad..d469c8f52f 100644 --- a/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/MogoReport.java +++ b/libraries/mogo-adas-data/src/main/java/com/zhjt/mogo/adas/data/bean/MogoReport.java @@ -155,6 +155,8 @@ public class MogoReport { String EXIT_AUTOPILOT_FOR_LOCATION = "EMAP_EXIT_AUTOPILOT_FOR_LOCATION";//因location掉帧强退自动驾驶 String EXIT_AUTOPILOT_FOR_CHASSIS = "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS";//因底盘消息掉帧强退自动驾驶 String EXIT_AUTOPILOT_FOR_DISTANCE = "EMAP_EXIT_AUTOPILOT_FOR_DISTANCE";//因planning起点距离当前过远强退自动驾驶 + String EPARALLEL_AICLOUD_CONNECTION_ERROR = "EPARALLEL_AICLOUD_CONNECTION_ERROR";//断网(此时不符合平行驾驶条件) 平行驾驶退出到自驾,同时减速停车 + String EPARALLEL_AICLOUD_NETWORK_WEAK = "EPARALLEL_AICLOUD_NETWORK_WEAK";//弱网,平行驾驶退出到自驾,同时减速停车 String EXIT_AUTOPILOT_FOR_BRAKE = "EMAP_EXIT_AUTOPILOT_FOR_BRAKE";//制动踏板干预而强退自动驾驶 String EXIT_AUTOPILOT_FOR_ACCEL = "EMAP_EXIT_AUTOPILOT_FOR_ACCEL";//加速踏板干预而强退自动驾驶 String EXIT_AUTOPILOT_FOR_STEER = "EMAP_EXIT_AUTOPILOT_FOR_STEER";//方向盘干预而强退自动驾驶