Merge branch 'dev_robotaxi-d_251110_8.2.8_i18n' into dev_robotaxi-d_251204_8.3.0_xfk_temp

# Conflicts:
#	OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/taskrunning/TaskRunningView.kt
This commit is contained in:
xinfengkun
2025-12-17 11:29:10 +08:00
471 changed files with 10137 additions and 2778 deletions

View File

@@ -15,6 +15,7 @@ import com.mogo.eagle.core.data.map.MogoLatLng
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener
import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener
import com.mogo.eagle.core.function.biz.R
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.CallerPlanningRottingListenerManager
@@ -24,6 +25,7 @@ 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.mogo.logger.scene.SceneConstant.Companion.M_BIZ
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.function.biz.dispatch.network.DispatchServiceModel.Companion.DISPATCH_COMPLETED
import com.mogo.eagle.function.biz.dispatch.network.DispatchServiceModel.Companion.DISPATCH_RESULT_AFFIRM
@@ -162,42 +164,50 @@ class DispatchAutoPilotManager private constructor() :
}
if(it.trajUrl == null){
V2XBizTrace.onAck(M_BIZ + TAG, "trajUrl-null")
ToastUtils.showShort("trajUrl数据为空")
// ToastUtils.showShort("trajUrl数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_traj_url_data_null)
return
}
if(it.trajMd5 == null){
V2XBizTrace.onAck(M_BIZ + TAG, "trajMd5-null")
ToastUtils.showShort("trajMd5数据为空")
// ToastUtils.showShort("trajMd5数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_traj_md5_data_null)
return
}
if(it.stopUrl == null){
V2XBizTrace.onAck(M_BIZ + TAG, "stopUrl-null")
ToastUtils.showShort("stopUrl数据为空")
// ToastUtils.showShort("stopUrl数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_stop_url_data_null)
return
}
if(it.stopMd5 == null){
V2XBizTrace.onAck(M_BIZ + TAG, "stopMd5-null")
ToastUtils.showShort("stopMd5数据为空")
// ToastUtils.showShort("stopMd5数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_stop_md5_data_null)
return
}
if(it.vehicleModel == null){
V2XBizTrace.onAck(M_BIZ + TAG, "vehicleModel-null")
ToastUtils.showShort("vehicleModel数据为空")
// ToastUtils.showShort("vehicleModel数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_vehicle_model_data_null)
return
}
if(it.lineName == null){
V2XBizTrace.onAck(M_BIZ + TAG, "lineName-null")
ToastUtils.showShort("lineName数据为空")
// ToastUtils.showShort("lineName数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_line_name_data_null)
return
}
if(it.startLocAddress == null){
V2XBizTrace.onAck(M_BIZ + TAG, "startLocAddress-null")
ToastUtils.showShort("startLocAddress数据为空")
// ToastUtils.showShort("startLocAddress数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_start_loc_address_data_null)
return
}
if(it.endLocAddress == null){
V2XBizTrace.onAck(M_BIZ + TAG, "endLocAddress-null")
ToastUtils.showShort("endLocAddress数据为空")
// ToastUtils.showShort("endLocAddress数据为空")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_end_loc_address_data_null)
return
}
val currentAutoPilotLine = AutopilotControlParameters.AutoPilotLine(it.lineId.toLong(),it.lineName,it.trajUrl,it.trajMd5,
@@ -227,7 +237,8 @@ class DispatchAutoPilotManager private constructor() :
//调用工控机开启自动驾驶
startAutoPilot()
},onError = { error->
ToastUtils.showShort("上报调度失败${error}")
// ToastUtils.showShort("上报调度失败${error}")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_reported_dispatch_failure, error)
})
}
}
@@ -244,10 +255,13 @@ class DispatchAutoPilotManager private constructor() :
//取消自动驾驶
CallerAutoPilotControlManager.cancelAutoPilot()
isDispatch = false
ToastUtils.showShort("云调度取消确认成功")
// ToastUtils.showShort("云调度取消确认成功")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_cloud_cancel_autopilot_success)
CallerLogger.i("$M_BIZ$TAG","stopAffirm 取消自动驾驶")
}, onError = {error ->
ToastUtils.showShort("停止调度确认失败${error}")
// ToastUtils.showShort("停止调度确认失败${error}")
ToastUtils.showShort(R.string.module_mogo_core_function_biz_cloud_cancel_autopilot_error, error)
}
)
}
@@ -341,11 +355,14 @@ class DispatchAutoPilotManager private constructor() :
receiverBean?.let {
//调度完成,同步云端,并且吐司提示
dispatchServiceModel.dispatchResultUpload(DISPATCH_COMPLETED, it.taskId)
ToastUtils.showLong("云调度完成,车辆已到达${it.endLocAddress}")
val msg = StringUtils.getString(R.string.module_mogo_core_function_biz_cloud_complete_arrive, it.endLocAddress)
// ToastUtils.showLong("云调度完成,车辆已到达${it.endLocAddress}")
ToastUtils.showShort(msg)
//取消自动驾驶
CallerAutoPilotControlManager.cancelAutoPilot()
//语音提示到站
AIAssist.getInstance(mContext).speakTTSVoice("云调度完成,车辆已到达${it.endLocAddress}")
// AIAssist.getInstance(mContext).speakTTSVoice("云调度完成,车辆已到达${it.endLocAddress}")
AIAssist.getInstance(mContext).speakTTSVoice(msg)
}
}else{
V2XBizTrace.onAck(M_BIZ + TAG, mapOf("arriveErrorMsg" to "不在到站距离范围内", "ArriveAtStation" to arrivalNotification, "distanceFromSelf" to distanceFromSelf), true)

View File

@@ -7,10 +7,12 @@ import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.autopilot.AutopilotRouteInfo.RouteModels
import com.mogo.eagle.core.data.biz.dispatch.ReportDispatchResult
import com.mogo.eagle.core.data.biz.dispatch.ReportedRoute
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.RequestOptions
import com.mogo.eagle.core.network.SubscribeImpl
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.eagle.core.utilcode.util.StringUtils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.util.*
@@ -106,7 +108,8 @@ class DispatchServiceModel private constructor() {
if (!e.message.isNullOrBlank()) {
onError?.invoke(e.message!!)
} else {
onError?.invoke("上报失败")
// onError?.invoke("上报失败")
onError?.invoke(StringUtils.getString(R.string.module_core_reporting_failed))
}
}

View File

@@ -7,11 +7,13 @@ import com.mogo.commons.constants.HostConst
import com.mogo.commons.utils.RetryWithDelay
import com.mogo.eagle.core.data.biz.camera.CameraEntity
import com.mogo.eagle.core.data.biz.camera.ReqLiveCarBean
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BIZ
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.function.biz.monitoring.net.ICameraListServices
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -178,7 +180,8 @@ class CronTaskManager {
if (!flvString.isNullOrEmpty()) {
success(flvString)
} else {
error(Throwable("flvUrl为空"))
// error(Throwable("flvUrl为空"))
error(Throwable(StringUtils.getString(R.string.module_core_fvl_url_null)))
}
} else {
error(Throwable(it.msg))

View File

@@ -14,6 +14,7 @@ import com.mogo.eagle.core.data.biz.trafficlight.TrafficLightStatusHelper.getCur
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
import com.mogo.eagle.core.function.api.v2x.IMoGoVipSetListener
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
@@ -23,6 +24,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.LocationUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.function.biz.v2x.trafficlight.core.MogoTrafficLightManager
import com.zhjt.service_biz.BizConfig
@@ -132,8 +134,10 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
val originRemainSpeed =
floor(distance / (remainTime + trafficLightResult.flashYellow + 1.5) * 3.6).toInt()
when {
originRemainSpeed > 50 -> greenLightWarning("10到50")
originRemainSpeed in 10..50 -> greenLightWarning("10到$originRemainSpeed")
// originRemainSpeed > 50 -> greenLightWarning("10到50")
originRemainSpeed > 50 -> greenLightWarning(StringUtils.getString(R.string.module_core_10_to_50))
// originRemainSpeed in 10..50 -> greenLightWarning("10到$originRemainSpeed")
originRemainSpeed in 10..50 -> greenLightWarning("${StringUtils.getString(R.string.module_core_10_to_any)}$originRemainSpeed")
}
}
}
@@ -146,8 +150,10 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
// 单位Km/h当前为黄灯推荐速度越慢越容易绿灯通过且要满足[10,50]
val originRemainSpeed = floor(distance / (remainTime + 1.5) * 3.6).toInt()
when {
originRemainSpeed > 50 -> greenLightWarning("10到50")
originRemainSpeed in 10..50 -> greenLightWarning("10到$originRemainSpeed")
// originRemainSpeed > 50 -> greenLightWarning("10到50")
originRemainSpeed > 50 -> greenLightWarning(StringUtils.getString(R.string.module_core_10_to_50))
// originRemainSpeed in 10..50 -> greenLightWarning("10到$originRemainSpeed")
originRemainSpeed in 10..50 -> greenLightWarning("${StringUtils.getString(R.string.module_core_10_to_any)}$originRemainSpeed")
}
}
}
@@ -160,8 +166,10 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
// 单位Km/h当前为绿灯推荐速度越快越容易绿灯通过且要满足[10,50]
val originRemainSpeed = ceil(distance / (remainTime - 1.5) * 3.6).toInt()
when {
originRemainSpeed < 10 -> greenLightWarning("10到50")
originRemainSpeed in 10..50 -> greenLightWarning("${originRemainSpeed}50")
// originRemainSpeed < 10 -> greenLightWarning("10到50")
originRemainSpeed < 10 -> greenLightWarning(StringUtils.getString(R.string.module_core_10_to_50))
// originRemainSpeed in 10..50 -> greenLightWarning("${originRemainSpeed}到50")
originRemainSpeed in 10..50 -> greenLightWarning("${originRemainSpeed}${StringUtils.getString(R.string.module_core_any_to_50)}")
}
}
}

View File

@@ -4,11 +4,13 @@ import com.mogo.commons.constants.HostConst
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.biz.trafficlight.*
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.cancel
import com.mogo.eagle.core.network.request
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.map.MogoData.Companion.mogoMapData
class TrafficLightNetWorkModel {
@@ -86,7 +88,8 @@ class TrafficLightNetWorkModel {
if (it.result != null) {
onSuccess.invoke(it.result)
} else {
onError.invoke(it.msg ?: "返回result数据为null")
// onError.invoke(it.msg ?: "返回result数据为null")
onError.invoke(it.msg ?: StringUtils.getString(R.string.module_core_result_data_null))
}
}
onError {

View File

@@ -32,6 +32,7 @@ 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.autopilot.IMoGoV2XListener
import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
@@ -47,6 +48,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.eagle.function.biz.v2x.V2XBizTrace
import com.mogo.eagle.function.biz.v2x.v2n.V2XPoiLoader.Companion.v2xPoiLoader
@@ -233,11 +235,13 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback,
// 1004 -> { //V2N_RSM,静止事件,包括异常停车、异常静止障碍物
// }
1005 -> { //V2N_RSI,施工事件,包括锥桶或者挡板围城的施工场景,是个多边形包围区域
tts = "自动驾驶正在提前规划绕开前方道路施工"
// tts = "自动驾驶正在提前规划绕开前方道路施工"
tts = StringUtils.getString(R.string.module_core_auto_drive_preplan_avoid_road_construction)
EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType
}
1007 -> { //三角牌
tts = "自动驾驶正在提前规划绕开前方交通事故"
// tts = "自动驾驶正在提前规划绕开前方交通事故"
tts = StringUtils.getString(R.string.module_core_auto_drive_preplan_avoid_front_accident)
EventTypeEnumNew.FOURS_ACCIDENT_04.poiType
}
else -> {
@@ -334,7 +338,11 @@ object V2XEventManager : IMoGoChassisLocationGCJ02Listener, IV2XCallback,
private fun sendToMsgBox(count: Int) {
val msgBoxBean =
MsgBoxBean(MsgBoxType.V2X, V2XMsg("", "查询到当前全程共${count}个事件", "",CommunicationType.V2N.name))
// MsgBoxBean(MsgBoxType.V2X, V2XMsg("", "查询到当前全程共${count}个事件", "",CommunicationType.V2N.name))
MsgBoxBean(
MsgBoxType.V2X,
V2XMsg("", StringUtils.getString(R.string.module_core_query_whole_route_total_events, count), "", CommunicationType.V2N.name)
)
msgBoxBean.sourceType = DataSourceType.SUMMARY
V2XBizTrace.onAck("$M_V2X$TAG", mapOf("v2xEventsSummary" to msgBoxBean))
CallerMsgBoxManager.saveMsgBox(msgBoxBean)

View File

@@ -10,9 +10,11 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.V2XMsg
import com.mogo.eagle.core.data.v2x.V2XEvent
import com.mogo.eagle.core.data.v2x.V2XMarkerResponse
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.eagle.function.biz.v2x.V2XBizTrace
import com.mogo.eagle.function.biz.v2x.v2n.network.V2XRefreshModel
@@ -160,7 +162,11 @@ class V2XPoiLoader private constructor() {
val size = it?.size ?: 0
if (size > 0) {
val msgBoxBean =
MsgBoxBean(MsgBoxType.V2X, V2XMsg("", "查询到当前全程共${size}个事件", "",CommunicationType.V2N.name))
// MsgBoxBean(MsgBoxType.V2X, V2XMsg("", "查询到当前全程共${size}个事件", "",CommunicationType.V2N.name))
MsgBoxBean(
MsgBoxType.V2X,
V2XMsg("", StringUtils.getString(R.string.module_core_query_whole_route_total_events, size), "", CommunicationType.V2N.name)
)
msgBoxBean.sourceType = DataSourceType.SUMMARY
V2XBizTrace.onAck("${SceneConstant.M_V2X}$TAG", mapOf("v2xEventsSummary" to msgBoxBean))
CallerMsgBoxManager.saveMsgBox(msgBoxBean)

View File

@@ -39,6 +39,7 @@ import com.mogo.eagle.core.utilcode.util.CoordinateTransform
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.mogo.eagle.function.biz.v2x.V2XBizTrace
@@ -190,9 +191,13 @@ internal object V2NIdentifyDrawer : IEventDismissListener {
}
}
val contentType =
if (poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType) "道路施工" else "道路事故"
val content = "前方${distance.toInt()}米有$contentType"
val tts = "前方${distance.toInt()}米有$contentType"
// if (poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType) "道路施工" else "道路事故"
StringUtils.getString(if (poiType == EventTypeEnumNew.TYPE_SOCKET_ROAD_SHIGONG.poiType) R.string.module_core_road_construction else R.string.module_core_road_accident)
// val content = "前方${distance.toInt()}米有$contentType"
val content = StringUtils.getString(R.string.module_core_front_have, distance.toInt(), contentType)
// val tts = "前方${distance.toInt()}米有$contentType"
val tts = content
V2XBizTrace.onAck(TAG, "绘制poi事件:$poiType")
saveMsgBox(
MsgBoxBean(
@@ -806,7 +811,8 @@ internal object V2NIdentifyDrawer : IEventDismissListener {
saveMsgBox(MsgBoxBean(
MsgBoxType.NDE,
NDEMsg(
"", "路口车龙", "前方路口有车龙"
// "", "路口车龙", "前方路口有车龙"
"", StringUtils.getString(R.string.module_och_crossing_tailback), StringUtils.getString(R.string.module_och_crossing_tailback_desc)
).also {
it.setRoadList(sortedList)
}
@@ -815,7 +821,8 @@ internal object V2NIdentifyDrawer : IEventDismissListener {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
ThreadUtils.runOnUiThread {
AIAssist.getInstance(Utils.getApp())
.speakTTSVoiceWithLevel("前方路口有车龙", AIAssist.NEW_LEVEL_2)
// .speakTTSVoiceWithLevel("前方路口有车龙", AIAssist.NEW_LEVEL_2)
.speakTTSVoiceWithLevel(StringUtils.getString(R.string.module_och_crossing_tailback_desc), AIAssist.NEW_LEVEL_2)
}
}
}

View File

@@ -21,8 +21,10 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType;
import com.mogo.eagle.core.data.msgbox.V2XMsg;
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener;
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener;
import com.mogo.eagle.core.function.biz.R;
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager;
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager;
import com.mogo.eagle.core.utilcode.util.StringUtils;
import com.mogo.eagle.function.biz.v2x.v2n.scenario.impl.AbsV2XScenario;
import com.mogo.eagle.function.biz.v2x.v2n.scenario.view.IV2XMarker;
import com.mogo.eagle.core.data.v2x.V2XWarningTarget;
@@ -100,12 +102,15 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoChas
switch (entity.getType()) {
case 1:
case 11:
entity.setTts("注意行人");
// entity.setTts("注意行人");
entity.setTts(StringUtils.getString(R.string.module_core_watch_pedestrians));
return EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_PERSON.getPoiType();
case 2:
entity.setTts("注意自行车");
// entity.setTts("注意自行车");
entity.setTts(StringUtils.getString(R.string.module_core_watch_bicycle));
case 4:
entity.setTts("注意摩托车");
// entity.setTts("注意摩托车");
entity.setTts(StringUtils.getString(R.string.module_core_watch_motorbike));
return EventTypeEnumNew.TYPE_USECASE_ID_VRUCW_MOTOR_VEHICLES.getPoiType();
}
return "0";
@@ -116,7 +121,8 @@ public class V2XFrontWarningScenario extends AbsV2XScenario implements IMoGoChas
//距离四舍五入保留整数
BigDecimal bg = BigDecimal.valueOf(dis);
double disBig = bg.setScale(0, RoundingMode.HALF_UP).doubleValue();
String distance = String.format(Locale.getDefault(), "%.0f", disBig) + "";
// String distance = String.format(Locale.getDefault(), "%.0f", disBig) + "米";
String distance = String.format(Locale.getDefault(), "%.0f", disBig) + StringUtils.getString(R.string.module_och_m);
String content = entity.getWarningContent();
SpannableStringBuilder ssb = new SpannableStringBuilder(content + distance);
ssb.setSpan(new ForegroundColorSpan(Color.parseColor("#FF3036")), content.length(), ssb.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);

View File

@@ -2,6 +2,8 @@ package com.mogo.eagle.function.biz.v2x.v2n.utils
import android.util.Log
import androidx.annotation.WorkerThread
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.map.MapDataWrapper
import com.mogo.map.entities.Lane
import com.zhidaoauto.map.data.road.CenterLine
@@ -70,7 +72,8 @@ object V2NUtils {
fun computeBestLane(laneId: Int, occupy: List<Lane>, total: List<Lane>): Pair<Int, String> {
if (occupy.size == total.size) {
return Pair(Int.MIN_VALUE, "更换路线")
// return Pair(Int.MIN_VALUE, "更换路线")
return Pair(Int.MIN_VALUE, StringUtils.getString(R.string.module_core_change_line))
}
val map = HashMap<Int, String>()
if (total.size % 2 == 0) {
@@ -78,17 +81,22 @@ object V2NUtils {
for (i in 0 until half) {
val left = total[i]
val right = total[half + i]
map[left.id] = "驶入左${i + 1}车道"
map[right.id] = "驶入右${i + 1}车道"
// map[left.id] = "驶入左${i + 1}车道"
map[left.id] = StringUtils.getString(R.string.module_core_drive_into_left_lane, (i + 1))
// map[right.id] = "驶入右${i + 1}车道"
map[right.id] = StringUtils.getString(R.string.module_core_drive_into_right_lane, (i + 1))
}
} else {
val middle = total.size / 2
map[total[middle].id] = "驶入中间车道"
// map[total[middle].id] = "驶入中间车道"
map[total[middle].id] = StringUtils.getString(R.string.module_core_drive_into_center_lane)
for (i in 0 until middle) {
val left = total[i]
val right = total[middle + i + 1]
map[left.id] = "驶入左${i + 1}车道"
map[right.id] = "驶入右${i + 1}车道"
// map[left.id] = "驶入左${i + 1}车道"
map[left.id] = StringUtils.getString(R.string.module_core_drive_into_left_lane, (i + 1))
// map[right.id] = "驶入右${i + 1}车道"
map[right.id] = StringUtils.getString(R.string.module_core_drive_into_right_lane, (i + 1))
}
}
val ids = occupy.map { it.id }
@@ -103,8 +111,10 @@ object V2NUtils {
delta = abs
}
}
return Pair(best, map[best] ?: "更换路线")
// return Pair(best, map[best] ?: "更换路线")
return Pair(best, map[best] ?: StringUtils.getString(R.string.module_core_change_line))
}
return Pair(Int.MIN_VALUE, "更换路线")
// return Pair(Int.MIN_VALUE, "更换路线")
return Pair(Int.MIN_VALUE, StringUtils.getString(R.string.module_core_change_line))
}
}

View File

@@ -21,6 +21,7 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType
import com.mogo.eagle.core.data.msgbox.V2XMsg
import com.mogo.eagle.core.data.v2x.VipMessage
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
import com.mogo.eagle.core.function.biz.R
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
@@ -259,7 +260,8 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
",bearing:$bearing" +
",controlTime:$controlTime"
,true)
ToastUtils.showLong("服务异常,请稍后重试")
// ToastUtils.showLong("服务异常,请稍后重试")
ToastUtils.showLong(R.string.module_mogo_core_function_biz_serve_error)
})
}

View File

@@ -6,6 +6,7 @@ import androidx.annotation.RequiresPermission
import bag_manager.BagManagerOuterClass
import chassis.SpecialVehicleTaskCmdOuterClass
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
@@ -39,6 +40,7 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapDataCollectorManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicStatusListenerManager
import com.mogo.eagle.core.function.datacenter.R
import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasListenerImpl
import com.mogo.eagle.core.function.datacenter.autopilot.adapter.MoGoAdasMsgConnectStatusListenerImpl
import com.mogo.eagle.core.function.datacenter.autopilot.server.AsyncDataToAutopilotServer
@@ -51,6 +53,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.mogo.eagle.core.utilcode.util.DeviceUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
@@ -144,7 +147,7 @@ class MoGoAutopilotControlProvider :
// .setSubscribeInterfaceOptions(subscribeInterfaceOptions)//
.build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
@@ -155,7 +158,8 @@ class MoGoAutopilotControlProvider :
}
override fun onStartServer() {
ToastUtils.showShort("司机端服务启动成功!")
// ToastUtils.showShort("司机端服务启动成功!")
ToastUtils.showShort(R.string.module_mogo_core_function_datacenter_driver_service_started_successfully)
if (timer == null) {
timer = Timer()
}
@@ -169,15 +173,18 @@ class MoGoAutopilotControlProvider :
msgHandler.synMsgToAllClients()
}
}, 1000, 10000)
invokeNettyConnResult("司机端服务启动成功!")
// invokeNettyConnResult("司机端服务启动成功!")
invokeNettyConnResult(StringUtils.getString(R.string.module_mogo_core_function_datacenter_driver_service_started_successfully))
CallerTelematicStatusListenerManager.invokeServerStatusChanged(true)
}
override fun onStopServer() {
ToastUtils.showLong("司机端服务停止!")
// ToastUtils.showLong("司机端服务停止!")
ToastUtils.showLong(R.string.module_mogo_core_function_datacenter_driver_service_stop)
timer?.cancel()
timer = null
invokeNettyConnResult("司机端服务停止!")
// invokeNettyConnResult("司机端服务停止!")
invokeNettyConnResult(StringUtils.getString(R.string.module_mogo_core_function_datacenter_driver_service_stop))
CallerTelematicStatusListenerManager.invokeServerStatusChanged(false)
}
@@ -191,7 +198,8 @@ class MoGoAutopilotControlProvider :
override fun onReceiveClientSign(channel: Channel?, sn: String?) {
sn?.let {
invokeNettyConnResult("连接成功的乘客屏sn为:$it")
// invokeNettyConnResult("连接成功的乘客屏sn为:$it")
invokeNettyConnResult("${StringUtils.getString(R.string.module_core_connected_passenger_sn)}$it")
}
}
}, SharedPrefsMgr.getInstance().sn)
@@ -240,7 +248,7 @@ class MoGoAutopilotControlProvider :
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build()
AdasManager.getInstance()
.create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
.create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// 接收司机屏发过来的感知、定位等数据
@@ -257,7 +265,8 @@ class MoGoAutopilotControlProvider :
AsyncDataToAutopilotServer.INSTANCE.initServer()
}.onFailure { throwable ->
if (DebugConfig.isDebug()) {
ToastUtils.showLong("AutoPilot出现异常请立即处理!")
// ToastUtils.showLong("AutoPilot出现异常请立即处理!")
ToastUtils.showLong(R.string.module_mogo_core_function_datacenter_autopilot_exception)
}
throwable.printStackTrace()
}
@@ -274,7 +283,7 @@ class MoGoAutopilotControlProvider :
.setDeviceCrt(CallerCloudCertManager.getDeviceCrtFDecode())
// .setLaunchAutopilotGear(FunctionBuildConfig.launchAutopilotGear)
.build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
//////////////////////////////////注意先后顺序AdasManager.getInstance().create后才可以设置监听/////////////////////////////////////////////
// 监听ADAS-SDK获取到的工控机数据
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
@@ -336,7 +345,7 @@ class MoGoAutopilotControlProvider :
.setConnectionMode(AdasOptions.IPC_CONNECTION_MODE.SPECIFIED)
.setSpecifiedAddress(autoPilotIp)
.build()
AdasManager.getInstance().create(mContext, options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().create(AbsMogoApplication.getApp(), options, MoGoAdasMsgConnectStatusListenerImpl())
AdasManager.getInstance().setOnAdasListener(MoGoAdasListenerImpl())
// AdasManager.getInstance().adasOptions.isClient = false
// AdasManager.getInstance().adasOptions.ipcConnectionMode =
@@ -1167,7 +1176,7 @@ class MoGoAutopilotControlProvider :
* @param resultCode 上报字段code
*/
override fun getReportResultDesc(resultCode: String): String {
return MogoReport.ResultDesc.getDesc(resultCode)
return MogoReport.ResultDesc.getDesc(AbsMogoApplication.getApp(), resultCode)
}
/**
@@ -1175,7 +1184,7 @@ class MoGoAutopilotControlProvider :
* @param actionCode 上报字段code
*/
override fun getReportActionDesc(actionCode: String): String {
return MogoReport.ActionDesc.getDesc(actionCode)
return MogoReport.ActionDesc.getDesc(AbsMogoApplication.getApp(), actionCode)
}
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
@@ -1193,7 +1202,8 @@ class MoGoAutopilotControlProvider :
carConfigResp.macAddress,
SharedPrefsMgr.getInstance().sn
)
invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为${carConfigResp.macAddress}")
// invokeNettyConnResult("乘客屏车牌号:${carConfigResp.plateNumber},Mac地址为${carConfigResp.macAddress}")
invokeNettyConnResult("${StringUtils.getString(R.string.module_core_passenger_plate)}${carConfigResp.plateNumber},${StringUtils.getString(R.string.module_core_mac_address)}${carConfigResp.macAddress}")
}
if (carConfigResp.dockVersion.isNotEmpty() && !isRainModeInit) {

View File

@@ -25,10 +25,12 @@ import com.mogo.eagle.core.function.call.autopilot.CallerIpcConnectStateToastMan
import com.mogo.eagle.core.function.call.autopilot.CallerParallelDrivingActionsListenerManager
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.datacenter.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.scene.SceneConstant.Companion.M_D_C
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhidao.support.adas.high.AdasManager
import com.zhidao.support.adas.high.OnAdasConnectStatusListener
@@ -74,7 +76,7 @@ class MoGoAdasMsgConnectStatusListenerImpl :
CallerAutopilotCarConfigListenerManager.invokeAutopilotCertFileResult(certificationResult)
}
private fun connectToast(reason: String) {
private fun connectToast(reason: Int) {
if (CallerIpcConnectStateToastManager.isToast) {
ToastUtils.showShort(reason)
}
@@ -124,7 +126,8 @@ class MoGoAdasMsgConnectStatusListenerImpl :
AdasConstants.IpcConnectionStatus.CONNECTED -> {
connectStatusDescribe = "已连接"
CallerLogger.d("$M_D_C$TAG", connectStatusDescribe)
connectToast("域控已连接")
// connectToast("域控已连接")
connectToast(R.string.module_core_ipc_connection_status_connected)
CallerIpcConnectStateToastManager.ipcConnected()
// 初始化自动驾驶状态信息
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().connectIP =
@@ -182,19 +185,22 @@ class MoGoAdasMsgConnectStatusListenerImpl :
AdasConstants.IpcConnectionStatus.CONNECTING -> {
connectStatusDescribe = "连接中"
CallerLogger.d("$M_D_C$TAG", connectStatusDescribe)
connectToast("域控连接中")
// connectToast("域控连接中")
connectToast(R.string.module_core_ipc_connection_status_connecting)
}
AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER -> {
connectStatusDescribe = "重连中(定时器)"
CallerLogger.d("$M_D_C$TAG", connectStatusDescribe)
connectToast("域控重连中")
// connectToast("域控重连中")
connectToast(R.string.module_core_ipc_connection_status_reconnecting)
}
AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK -> {
connectStatusDescribe = "重连中(网络监听)"
CallerLogger.d("$M_D_C$TAG", connectStatusDescribe)
connectToast("域控重连中")
// connectToast("域控重连中")
connectToast(R.string.module_core_ipc_connection_status_reconnecting)
}
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION -> {
@@ -215,7 +221,8 @@ class MoGoAdasMsgConnectStatusListenerImpl :
connectStatusDescribe
)
resetArgs()
connectToast("非法域控地址")
// connectToast("非法域控地址")
connectToast(R.string.module_core_ipc_connection_status_illegal_address)
}
AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS -> {
@@ -224,7 +231,8 @@ class MoGoAdasMsgConnectStatusListenerImpl :
"$M_D_C$TAG",
connectStatusDescribe
)
connectToast("正在搜索域控地址")
// connectToast("正在搜索域控地址")
connectToast(R.string.module_core_ipc_connection_status_search_address)
}
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS -> {
@@ -358,27 +366,35 @@ class MoGoAdasMsgConnectStatusListenerImpl :
AdasConstants.IpcConnectionStatus.DISCONNECTED -> {
if (isFirstDisconnected) {
title = "连接异常"
content = "域控未连接或主动断开连接"
// title = "连接异常"
title = StringUtils.getString(R.string.module_core_msg_box_connection_error)
// content = "域控未连接或主动断开连接"
content = StringUtils.getString(R.string.module_core_msg_box_connection_error_desc)
isFirstDisconnected = false
}
}
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION -> {
title = "域控连接异常"
content = "建议检查WiFi连接情况及域控是否开机"
// title = "域控连接异常"
title = StringUtils.getString(R.string.module_core_msg_box_ipc_connection_error)
// content = "建议检查WiFi连接情况及域控是否开机"
content = StringUtils.getString(R.string.module_core_msg_box_ipc_connection_error_desc)
}
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS -> {
if (isFirstException) {
title = "找不到域控可用地址"
content = "建议检查车载路由器及域控是否开机"
// title = "找不到域控可用地址"
title = StringUtils.getString(R.string.module_core_msg_box_not_find_address)
// content = "建议检查车载路由器及域控是否开机"
content = StringUtils.getString(R.string.module_core_msg_box_not_find_address_desc)
isFirstException = false
}
}
AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT -> {
title = "域控心跳超时"
content = "建议检查车载路由器连接是否正常"
// title = "域控心跳超时"
title = StringUtils.getString(R.string.module_core_msg_box_ipc_heartbeat_timeout)
// content = "建议检查车载路由器连接是否正常"
content = StringUtils.getString(R.string.module_core_msg_box_ipc_heartbeat_timeout_desc)
}
else -> {}

View File

@@ -32,6 +32,7 @@ import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManag
import com.mogo.eagle.core.function.call.telematic.CallerTelematicListenerManager
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.datacenter.R
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
import com.mogo.eagle.core.utilcode.kotlin.scope
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -518,7 +519,8 @@ class TeleMsgHandler : IMsgHandler {
CallerTelematicListenerManager.invokeReceivedMsg(TelematicConstant.DRIVE_SEAT_VIDEO_STREAM_RSP, it.body)
}
TelematicConstant.PASSENGER_APP_REBOOT -> {
ToastUtils.showLong("乘客屏已收到重启命令")
// ToastUtils.showLong("乘客屏已收到重启命令")
ToastUtils.showLong(R.string.module_mogo_core_function_datacenter_passenger_received_restart_command)
}
else -> {
}
@@ -550,7 +552,8 @@ class TeleMsgHandler : IMsgHandler {
isReceiveSN = false
}
// AdasManager.getInstance().startDispatchHandler()
ToastUtils.showShort("连接司机屏成功!")
// ToastUtils.showShort("连接司机屏成功!")
ToastUtils.showShort(R.string.module_mogo_core_function_datacenter_passenger_link_driver_success)
invokeReqStatusLog(mapOf("dpConnectStatus" to true))
val byteArray = byteArrayOf(0)
NSDNettyManager.getInstance().sendMogoProtocolMsgToServer(
@@ -567,7 +570,8 @@ class TeleMsgHandler : IMsgHandler {
isFirstDisc = false
AppConfigInfo.plateNumber = ""
AppConfigInfo.iPCMacAddress = ""
ToastUtils.showLong("断开和司机屏的连接!")
// ToastUtils.showLong("断开和司机屏的连接!")
ToastUtils.showLong(R.string.module_mogo_core_function_datacenter_passenger_disconnect_driver)
invokeReqStatusLog(mapOf("dpConnectStatus" to false))
AdasManager.getInstance().stopDispatchHandler()
}
@@ -575,7 +579,8 @@ class TeleMsgHandler : IMsgHandler {
ConnectState.STATUS_CONNECT_ERROR -> {
AppConfigInfo.plateNumber = ""
ToastUtils.showLong("和司机端连接异常!")
// ToastUtils.showLong("和司机端连接异常!")
ToastUtils.showLong(R.string.module_mogo_core_function_datacenter_passenger_connect_driver_error)
invokeReqStatusLog(mapOf("dpConnectErrorMsg" to "$content"))
AdasManager.getInstance().stopDispatchHandler()
}

View File

@@ -9,6 +9,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.function.api.cloud.IMoGoCloudListener
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.support.device.DevicesManager
import com.mogo.support.device.IWriteChainLogListener
import com.mogo.support.device.led.LedSourceManager
@@ -68,7 +69,7 @@ object IotManager : IMoGoCloudListener, IWriteChainLogListener {
paramIndexes = [0, 1, 2]
)
override fun onWriteChainLog(tag: String, title: String, info: String) {
if(DebugConfig.isDebug()) {
if (DebugConfig.isDebug()) {
try {
i("${tag}_${EVENT_KEY_HARDWARE_DEVICES}", "${title}_${info}")
val params = HashMap<String, Any>()
@@ -82,4 +83,8 @@ object IotManager : IMoGoCloudListener, IWriteChainLogListener {
}
}
}
override fun onGetString(id: Int): String {
return StringUtils.getString(id)
}
}

View File

@@ -21,11 +21,13 @@ import com.mogo.eagle.core.function.call.map.*
import com.mogo.eagle.core.function.call.obu.*
import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.datacenter.R
import com.mogo.eagle.core.function.datacenter.obu.drawer.*
import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
import com.mogo.eagle.core.utilcode.util.ConvertUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.support.obu.ObuScene
import com.zhidao.support.obu.constants.MogoObuShowConstants
import kotlin.math.roundToInt
@@ -629,11 +631,14 @@ class MogoObuDcCombineManager private constructor() : IMoGoObuWarningRsiListener
if (currentSpeed > 0) {
ttsContentNew =
if ((currentSpeed * 3.6).roundToInt() in (minSpeedTemp + 1) until maxSpeedTemp) {
"建议保持当前车速通过路口"
// "建议保持当前车速通过路口"
StringUtils.getString(R.string.module_core_suggest_keep_current_speed_pass_intersection)
} else {
"推荐保持车速10-30KM/H通过路口"
// "推荐保持车速10-30KM/H通过路口"
StringUtils.getString(R.string.module_core_suggest_keep_speed_10_30kmh_pass_intersection)
}
alertContentNew = "推荐车速$minSpeedTemp - $maxSpeedTemp KM/H"
// alertContentNew = "推荐车速$minSpeedTemp - $maxSpeedTemp KM/H"
alertContentNew = "${StringUtils.getString(R.string.module_core_suggest_speed)}$minSpeedTemp - $maxSpeedTemp KM/H"
}
saveObuToDcData(
EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType,

View File

@@ -17,6 +17,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
import com.mogo.eagle.core.function.call.obu.*
import com.mogo.eagle.core.function.call.v2x.CallerLimitingVelocityListenerManager
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.datacenter.R
import com.mogo.eagle.core.function.datacenter.obu.drawer.*
import com.mogo.eagle.core.function.datacenter.obu.utils.TrafficDataConvertUtilsNew
import com.mogo.eagle.core.utilcode.download.Config
@@ -24,6 +25,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_OBU
import com.mogo.eagle.core.utilcode.util.ConvertUtils
import com.mogo.eagle.core.utilcode.util.FileUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.support.obu.ObuBase
import com.mogo.support.obu.ObuScene
@@ -817,8 +819,10 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener {
//前向碰撞预警
MogoObuShowConstants.V2X_WARNING_TYPE.FCW.toString() -> {
if (FunctionBuildConfig.isObuWarningFusionUnion && level == 3) {
alertContent = "前车距离过近"
ttsContent = "前车距离过近"
// alertContent = "前车距离过近"
alertContent = StringUtils.getString(R.string.module_core_warning_vehicle_ahead_distance_too_close)
// ttsContent = "前车距离过近"
ttsContent = alertContent
} else {
alertContent =
EventTypeEnumNew.getWarningContent(EventTypeEnumNew.TYPE_USECASE_ID_FCW.poiType)
@@ -858,18 +862,24 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener {
direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT
) { //左后
ttsContent = String.format(ttsContent, "")
alertContent = String.format(alertContent, "")
// ttsContent = String.format(ttsContent, "左")
ttsContent = String.format(ttsContent, StringUtils.getString(R.string.module_core_left))
// alertContent = String.format(alertContent, "左")
alertContent = String.format(alertContent, StringUtils.getString(R.string.module_core_left))
} else if (
direction == WarningDirectionEnum.ALERT_WARNING_RIGHT ||
direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT
) { //右后
ttsContent = String.format(ttsContent, "")
alertContent = String.format(alertContent, "")
// ttsContent = String.format(ttsContent, "右")
ttsContent = String.format(ttsContent, StringUtils.getString(R.string.module_core_right))
// alertContent = String.format(alertContent, "右")
alertContent = String.format(alertContent, StringUtils.getString(R.string.module_core_right))
} else{
ttsContent = "注意周围车辆"
alertContent = "盲区预警"
// ttsContent = "注意周围车辆"
ttsContent = StringUtils.getString(R.string.module_core_warning_pay_attention_to_surrounding_vehicles)
// alertContent = "盲区预警"
alertContent = StringUtils.getString(R.string.module_core_warning_blind_spot)
}
}
@@ -885,15 +895,19 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener {
direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT
) {
ttsContent = String.format(ttsContent, "")
alertContent = String.format(alertContent, "")
// ttsContent = String.format(ttsContent, "左")
ttsContent = String.format(ttsContent, StringUtils.getString(R.string.module_core_left))
// alertContent = String.format(alertContent, "左")
alertContent = String.format(alertContent, StringUtils.getString(R.string.module_core_left))
} else if (
direction == WarningDirectionEnum.ALERT_WARNING_RIGHT ||
direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT ||
direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT
) {
ttsContent = String.format(ttsContent, "")
alertContent = String.format(alertContent, "")
// ttsContent = String.format(ttsContent, "右")
ttsContent = String.format(ttsContent, StringUtils.getString(R.string.module_core_right))
// alertContent = String.format(alertContent, "右")
alertContent = String.format(alertContent, StringUtils.getString(R.string.module_core_right))
}
}
@@ -1111,11 +1125,14 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener {
if (currentSpeed > 0) {
ttsContentNew =
if ((currentSpeed * 3.6).roundToInt() in (minSpeedTemp + 1) until maxSpeedTemp) {
"建议保持当前车速通过路口"
// "建议保持当前车速通过路口"
StringUtils.getString(R.string.module_core_suggest_keep_current_speed_pass_intersection)
} else {
"推荐保持车速10-30KM/H通过路口"
// "推荐保持车速10-30KM/H通过路口"
StringUtils.getString(R.string.module_core_suggest_keep_speed_10_30kmh_pass_intersection)
}
alertContentNew = "推荐车速$minSpeedTemp - $maxSpeedTemp KM/H"
// alertContentNew = "推荐车速$minSpeedTemp - $maxSpeedTemp KM/H"
alertContentNew = "${StringUtils.getString(R.string.module_core_suggest_speed)}$minSpeedTemp - $maxSpeedTemp KM/H"
}
saveObuData(
EventTypeEnumNew.TYPE_USECASE_ID_IVP_GREEN.poiType,

View File

@@ -36,6 +36,7 @@ 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.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.skin.utils.SkinResources
import com.zhjt.mogo.adas.common.cloud.AstFuncTlmPhaseStateLightState
@@ -246,7 +247,8 @@ class TrafficLightDispatcher : IMoGoAutopilotIdentifyListener, IMoGoTrafficLight
if((light.state == FusionTrafficLightOuterClass.FusionLightState.STATE_YELLOW_FUSION || light.state ==FusionTrafficLightOuterClass.FusionLightState.STATE_RED_FUSION)
&& light.duration < 5 && light.nextState == FusionTrafficLightOuterClass.FusionLightState.STATE_GREEN_FUSION){
//语音播放:红灯即将变绿
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("红灯即将变绿", NEW_LEVEL_2)
// AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("红灯即将变绿", NEW_LEVEL_2)
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(StringUtils.getString(R.string.module_core_hint_red_light_about_to_turn_green), NEW_LEVEL_2)
isTurnGreen = true
}
}

View File

@@ -86,13 +86,14 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="@dimen/dp_30"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="@dimen/sp_36"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -162,6 +162,7 @@
android:textStyle="bold" />
</LinearLayout>
<!-- android:text="取消"-->
<Button
android:id="@+id/btnCancel"
android:layout_width="@dimen/dp_160"
@@ -169,7 +170,7 @@
android:layout_marginStart="@dimen/dp_60"
android:layout_marginTop="@dimen/dp_36"
android:background="@drawable/rviz_common_select_dialog_default_config_button_bg"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="@color/white"
android:textSize="@dimen/sp_32"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -119,6 +119,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_password" />
<!-- android:text="取消"-->
<Button
android:id="@+id/btnCancel"
android:layout_width="@dimen/dp_160"
@@ -126,7 +127,7 @@
android:layout_marginStart="@dimen/dp_40"
android:layout_marginTop="@dimen/dp_16"
android:background="@drawable/rviz_fmd_bg_fmd_dialog_btn"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="@color/rvizFmdColorBlock"
android:textSize="@dimen/sp_32"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -87,13 +87,14 @@
app:layout_constraintLeft_toRightOf="@id/ivSpeedAdd"
android:layout_marginStart="@dimen/dp_20" />
<!-- android:text="确定"-->
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvSureModify"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="确定"
android:text="@string/module_core_confirm"
android:textColor="@android:color/white"
android:textSize="@dimen/sp_36"
android:paddingTop="@dimen/dp_5"

View File

@@ -61,6 +61,7 @@ import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartManager
import com.zhjt.mogo_core_function_devatools.driver.video.DriveSeatVideoProviderImpl
import com.mogo.eagle.core.function.api.driver.video.IDriveSeatVideoProvider
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo_core_function_devatools.cloudcontrol.CloudControlManager
import com.zhjt.mogo_core_function_devatools.diskcopy.DiskCopyManager
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
@@ -155,7 +156,8 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
if (state == Fsm2024.State.SAFETY_STOP) {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
AppStateManager.currentActivity()?.also {
AIAssist.getInstance(it).speakTTSVoice("识别故障即将停车,请注意观察,小心接管")
// AIAssist.getInstance(it).speakTTSVoice("识别故障即将停车,请注意观察,小心接管")
AIAssist.getInstance(it).speakTTSVoice(StringUtils.getString(R.string.module_core_fault_stop_takeover))
}
CallerHmiManager.toggleSafetyStopCarWarning(true)
@@ -165,7 +167,8 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
CallerHmiManager.toggleSafetyStopCarWarning(false)
AppStateManager.currentActivity()?.also {
AIAssist.getInstance(it).speakTTSVoice("请接管恢复车辆状态")
// AIAssist.getInstance(it).speakTTSVoice("请接管恢复车辆状态")
AIAssist.getInstance(it).speakTTSVoice(StringUtils.getString(R.string.module_core_takeover_restore_vehicle))
}
}
}

View File

@@ -192,10 +192,12 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
BadCaseConfig.totalDuration, BadCaseConfig.previousDuration)
}
}else {
ToastUtils.showShort("工控机连接状态异常")
// ToastUtils.showShort("工控机连接状态异常")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_adas_connect_error)
}
}else {
ToastUtils.showShort("网络异常,请检查网络")
// ToastUtils.showShort("网络异常,请检查网络")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_network_error)
}
}
@@ -273,13 +275,16 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
reportTypeWindow?.showFloatWindow(xPosition,yPosition)
}
}else{
ToastUtils.showShort("工控机连接状态异常")
// ToastUtils.showShort("工控机连接状态异常")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_adas_connect_error)
}
}else{
ToastUtils.showShort("网络异常,请检查网络")
// ToastUtils.showShort("网络异常,请检查网络")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_network_error)
}
}else{
ToastUtils.showShort("请勿连续点击,稍后再试")
// ToastUtils.showShort("请勿连续点击,稍后再试")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_do_no_click_continuously)
}
}
}
@@ -324,13 +329,16 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
caseListDialog.show()
}
} else {
ToastUtils.showShort("工控机连接状态异常")
// ToastUtils.showShort("工控机连接状态异常")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_adas_connect_error)
}
} else {
ToastUtils.showShort("网络异常,请检查网络")
// ToastUtils.showShort("网络异常,请检查网络")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_network_error)
}
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
// ToastUtils.showShort("请勿连续点击,稍后再试")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_do_no_click_continuously)
}
}
@@ -355,13 +363,16 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
})
aiDataCollectWindow.showFloatWindow()
} else {
ToastUtils.showShort("工控机连接状态异常")
// ToastUtils.showShort("工控机连接状态异常")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_adas_connect_error)
}
} else {
ToastUtils.showShort("网络异常,请检查网络")
// ToastUtils.showShort("网络异常,请检查网络")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_network_error)
}
} else {
ToastUtils.showShort("请勿连续点击,稍后再试")
// ToastUtils.showShort("请勿连续点击,稍后再试")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_bad_case_do_no_click_continuously)
}
}

View File

@@ -137,7 +137,8 @@ class AIDataCollectView @JvmOverloads constructor(
//上报
tvUpload.setOnClickListener {
if(collectList.isEmpty()){
ToastUtils.showShort("请选择最少一个原因")
// ToastUtils.showShort("请选择最少一个原因")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_last_chose_one)
return@setOnClickListener
}
collectReason.clear()
@@ -170,7 +171,8 @@ class AIDataCollectView @JvmOverloads constructor(
})
if (uploadResult == null || uploadResult.code != 200) {
TipToast.shortTip("上报失败")
// TipToast.shortTip("上报失败")
TipToast.shortTip(R.string.module_core_reporting_failed)
} else {
//上报成功
ThreadUtils.runOnUiThread {
@@ -270,7 +272,8 @@ class AIDataCollectView @JvmOverloads constructor(
override fun onAiDataError() {
if(BadCaseReasonStore.getAiDataRecord().isEmpty()){
ToastUtils.showShort("AI数据采集数据请求错误且无缓存数据可用")
// ToastUtils.showShort("AI数据采集数据请求错误且无缓存数据可用")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_ai_data_gather_error)
}
}

View File

@@ -163,7 +163,8 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
//上报
tvCollectReport.setOnClickListener {
if(collectList.isEmpty()){
ToastUtils.showShort("请选择最少一个原因")
// ToastUtils.showShort("请选择最少一个原因")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_last_chose_one)
return@setOnClickListener
}
collectReason.clear()
@@ -196,9 +197,11 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
})
if (uploadResult == null || uploadResult.code != 200) {
TipToast.shortTip("上报失败")
// TipToast.shortTip("上报失败")
TipToast.shortTip(R.string.module_core_reporting_failed)
} else {
TipToast.shortTip("上报成功")
// TipToast.shortTip("上报成功")
TipToast.shortTip(R.string.module_core_reporting_success)
//将上报BI的结果同步给工控机记录保存
recordKey?.let {
val descReqEntity = BagDescriptionEntity(collectReason.toString(),false,"",true)
@@ -343,7 +346,8 @@ class AIDataCollectWindow constructor(activity: Activity) : View.OnTouchListener
override fun onAiDataError() {
if(BadCaseReasonStore.getAiDataRecord().isEmpty()){
ToastUtils.showShort("AI数据采集数据请求错误且无缓存数据可用")
// ToastUtils.showShort("AI数据采集数据请求错误且无缓存数据可用")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_ai_data_gather_error)
}
}

View File

@@ -95,19 +95,23 @@ internal class BadCaseConfigView @JvmOverloads constructor(
}
if (mPreviousDuration < 0 || mPreviousDuration > 30) {
ToastUtils.showLong("前溯采集时长最长30S")
// ToastUtils.showLong("前溯采集时长最长30S")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_bad_case_previous_duration)
return@setOnClickListener
}
if (mBackDuration < 0 || mBackDuration > 300) {
ToastUtils.showLong("采集总时长最长300S")
// ToastUtils.showLong("采集总时长最长300S")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_bad_case_Back_duration_max)
return@setOnClickListener
}
if ((mPreviousDuration + mBackDuration) < 5) {
ToastUtils.showLong("采集总时长最短5S")
// ToastUtils.showLong("采集总时长最短5S")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_bad_case_Back_duration_min)
return@setOnClickListener
}
if ((mPreviousDuration + mBackDuration) > 300) {
ToastUtils.showLong("采集总时长最长300S")
// ToastUtils.showLong("采集总时长最长300S")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_bad_case_all)
return@setOnClickListener
}
BadCaseConfig.previousDuration = mPreviousDuration
@@ -115,7 +119,8 @@ internal class BadCaseConfigView @JvmOverloads constructor(
BadCaseConfig.totalDuration =
BadCaseConfig.previousDuration + BadCaseConfig.backDuration
} catch (e: Exception) {
ToastUtils.showLong("输入时间格式不合法,请重新输入")
// ToastUtils.showLong("输入时间格式不合法,请重新输入")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_input_time_illegality)
etInitiativePreTime.text = null
etInitiativeAfterTime.text = null
return@setOnClickListener
@@ -125,7 +130,8 @@ internal class BadCaseConfigView @JvmOverloads constructor(
//保存录制模板采集类型
BadCaseConfig.type = mType
//吐司提示保存成功
ToastUtils.showLong("保存成功")
// ToastUtils.showLong("保存成功")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_save_success)
//关闭配置窗口
clickListener?.onClose()
}

View File

@@ -143,7 +143,8 @@ class BadCaseManagerView @JvmOverloads constructor(
bagUploadDialog?.show()
bagUploadDialog?.setAllUpload(selectedBagNum,selectedBagSize)
}else{
ToastUtils.showShort("请先选择要上传的Bag包")
// ToastUtils.showShort("请先选择要上传的Bag包")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_upload_bag)
}
}
@@ -154,7 +155,8 @@ class BadCaseManagerView @JvmOverloads constructor(
bagManagerEntity.keyReq = bagManagerList[0].key
CallerAutoPilotControlManager.sendBagManagerCmd(bagManagerEntity)
}else{
ToastUtils.showShort("请先选择要删除的Bag包")
// ToastUtils.showShort("请先选择要删除的Bag包")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_del_bag)
}
}
@@ -412,32 +414,43 @@ class BadCaseManagerView @JvmOverloads constructor(
}
//上传Cos执行完成
if(bagManagerList.size == 0 && selectedBagNum != 0){
ToastUtils.showShort("上传命令完成")
// ToastUtils.showShort("上传命令完成")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_bag_complete)
bagUploadDialog?.uploadCompleted()
tvCancelSelect.performClick()
}
when (bagManager.uploadCosResp.stat) {
0 -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶成功")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶成功")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_cos_success, "${bagManager.uploadCosResp.key}")
}
1 -> {
//执行中
}
2 -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶执行python失败")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶执行python失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_cos_python_fail, "${bagManager.uploadCosResp.key}")
}
3 -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶拷贝过程失败")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶拷贝过程失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_cos_copy_fail, "${bagManager.uploadCosResp.key}")
}
4 -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶合并过程失败")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶合并过程失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_cos_merge_fail, "${bagManager.uploadCosResp.key}")
}
5 -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶上传过程失败")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶上传过程失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_upload_cos_fail, "${bagManager.uploadCosResp.key}")
}
else -> {
ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶 ${bagManager.uploadCosResp.message}")
// ToastUtils.showShort("${bagManager.uploadCosResp.key} 上传cos桶 ${bagManager.uploadCosResp.message}")
ToastUtils.showShort(
R.string.module_mogo_core_function_devatools_upload_cos,
"${bagManager.uploadCosResp.key}",
bagManager.uploadCosResp.message
)
}
}

View File

@@ -163,7 +163,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
if (recordType != null) {
Boolean success = CallerAutoPilotControlManager.INSTANCE.getBadCaseConfig(2, recordType.getId(), addTopicList);
if (Boolean.TRUE.equals(success)) {
ToastUtils.showShort("Topic设置成功");
// ToastUtils.showShort("Topic设置成功");
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_topic_set_success);
if (recordType.getId() == 0) {
//自定义Topic
BadCaseConfig.customTopicList.clear();
@@ -173,7 +174,8 @@ public class CaseTopicListDialog extends Dialog implements IMoGoAutopilotRecordL
recordType.getTopicsList().removeAll(allTopicList);
dismiss();
} else {
ToastUtils.showShort("Topic设置失败");
// ToastUtils.showShort("Topic设置失败");
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_topic_set_fail);
}
}
});

View File

@@ -206,7 +206,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
//上报
tvInitiativeReport.setOnClickListener {
if(uploadList.isEmpty()){
ToastUtils.showShort("请选择最少一个原因")
// ToastUtils.showShort("请选择最少一个原因")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_last_chose_one)
return@setOnClickListener
}
uploadReason.clear()
@@ -257,7 +258,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -334,7 +336,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
@@ -389,7 +392,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
}
override fun onUploadFail(filePath: String) {
TipToast.shortTip("上传语音文件失败")
// TipToast.shortTip("上传语音文件失败")
TipToast.shortTip(R.string.module_core_upload_voice_file_failed)
//将语音文件上传Cos监听移除
removeUploadListener(singlePath)
}
@@ -444,12 +448,14 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
itx["coordinate"] = "latitude:${getChassisLocationWGS84().latitude};longitude:${getChassisLocationWGS84().longitude}" //坐标
})
if (uploadResult == null || uploadResult.code != 200) {
TipToast.shortTip("上报失败")
// TipToast.shortTip("上报失败")
TipToast.shortTip(R.string.module_core_reporting_failed)
ThreadUtils.runOnUiThread {
tvInitiativeReport.text = "上报"
}
} else {
TipToast.shortTip("上报成功")
// TipToast.shortTip("上报成功")
TipToast.shortTip(R.string.module_core_reporting_success)
//将上报BI的结果同步给工控机记录保存
recordKey.let {
val hasAudio = downloadUrl != null
@@ -603,7 +609,8 @@ class InitiativeBadCaseWindow constructor(activity: Activity) : View.OnTouchList
override fun onInitiativeError() {
if(BadCaseReasonStore.getInitiativeDataRecord().isEmpty()){
ToastUtils.showShort("主动录包数据采集错误且无缓存数据可用")
// ToastUtils.showShort("主动录包数据采集错误且无缓存数据可用")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_initiative_record_bad_fail)
}
}

View File

@@ -197,7 +197,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
tvPassiveReport.setOnClickListener {
hasOperated = true
if(uploadList.isEmpty()){
TipToast.shortTip("请选择至少一个Case")
// TipToast.shortTip("请选择至少一个Case")
TipToast.shortTip(R.string.module_core_please_choose_noe_case)
return@setOnClickListener
}
uploadReason.clear()
@@ -259,7 +260,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
private val mInitListener = InitListener { code ->
Log.i(TAG, "SpeechRecognizer init() code = $code")
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -337,7 +339,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
audioFileName = "Audio_${System.currentTimeMillis()}_BadCase"
@@ -392,7 +395,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
}
override fun onUploadFail(filePath: String) {
TipToast.shortTip("上传语音文件失败")
// TipToast.shortTip("上传语音文件失败")
TipToast.shortTip(R.string.module_core_upload_voice_file_failed)
//将语音文件上传Cos监听移除
removeUploadListener(singlePath)
}
@@ -449,12 +453,14 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
})
if (uploadResult == null || uploadResult.code != 200) {
TipToast.shortTip("上报失败")
// TipToast.shortTip("上报失败")
TipToast.shortTip(R.string.module_core_reporting_failed)
ThreadUtils.runOnUiThread{
tvPassiveReport.text = "上报"
}
} else {
TipToast.shortTip("上报成功")
// TipToast.shortTip("上报成功")
TipToast.shortTip(R.string.module_core_reporting_success)
//将上报BI的结果同步给工控机记录保存
recordKey?.let {
val hasAudio = downloadUrl != null
@@ -571,7 +577,8 @@ class PassiveBadCaseWindow constructor(activity: Activity) : View.OnTouchListene
override fun onPassiveError() {
if(BadCaseReasonStore.getPassiveDataRecord().isEmpty()){
ToastUtils.showShort("被动录包数据采集错误且无缓存数据可用")
// ToastUtils.showShort("被动录包数据采集错误且无缓存数据可用")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_passivity_record_bad_fail)
}
}

View File

@@ -171,7 +171,8 @@ class BagManagerListAdapter: RecyclerView.Adapter<RecyclerView.ViewHolder>() {
if(RecordBitmapUtils.checkHasImage(bagInfoEntity.key)){
bagClickListener?.lookMapScreen(bagInfoEntity.key)
}else{
ToastUtils.showShort("该截图录制失败或已删除")
// ToastUtils.showShort("该截图录制失败或已删除")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_record_bitmap_fail)
}
}
}

View File

@@ -94,7 +94,8 @@ class BindingCarNetWorkManager private constructor() {
when (info.getData().compare) {
"0" -> showBindingCarDialog()
"3" -> showModifyBindingCarDialog()
"null" -> TipToast.shortTip("当前工控机没有入库")
// "null" -> TipToast.shortTip("当前工控机没有入库")
"null" -> TipToast.shortTip(R.string.module_core_ipc_not_db)
}
// updateCarVrIconRes(info.getData().brandId)
} else {

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.function.api.devatools.INDECloudListener
import com.mogo.eagle.core.function.call.devatools.CallerNDECloudManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo.adas.common.cloud.AdviceEvwType
import com.zhjt.mogo.adas.common.cloud.AdviceType
import com.zhjt.mogo.adas.data.bean.cloud.info.AdviceAvwInfo
@@ -21,6 +22,7 @@ import com.zhjt.mogo.adas.data.bean.cloud.info.AdviceLaneSpdLmtInfo
import com.zhjt.mogo.adas.data.bean.cloud.info.AstFuncTlmInfo
import com.zhjt.mogo.adas.data.bean.cloud.pojo.AdvicePojo
import com.zhjt.mogo.adas.data.bean.cloud.pojo.AstFuncPojo
import com.zhjt.mogo_core_function_devatools.R
/**
* 云控基础平台信息管理
@@ -56,9 +58,16 @@ object CloudControlManager: INDECloudListener{
val speedMax = adviceGlosaInfo.spdExps[0].spdMax*3.6
val num = adviceGlosaInfo.spdExps[0].numIntersection
val desc = if(num ==0 || num == 255){
"建议车速${speedMin}km/h-${speedMax}km/h"
// "建议车速${speedMin}km/h-${speedMax}km/h"
"${StringUtils.getString(R.string.module_core_suggest_speed1)}${speedMin}km/h-${speedMax}km/h"
}else{
"建议车速${speedMin}km/h-${speedMax}km/h可绿灯通过前方${num}个路口"
// "建议车速${speedMin}km/h-${speedMax}km/h可绿灯通过前方${num}个路口"
"${StringUtils.getString(R.string.module_core_suggest_speed1)}${speedMin}km/h-${speedMax}km/h${
StringUtils.getString(
R.string.module_core_hint_green_wave_pass_intersection,
num
)
}"
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
@@ -101,7 +110,8 @@ object CloudControlManager: INDECloudListener{
MsgBoxType.CLOUD,
CloudControlMsg(EventTypeEnumNew.CLOUD_RED_LIGHT_WARN.poiType,
EventTypeEnumNew.CLOUD_RED_LIGHT_WARN.poiTypeStr,
"存在闯红灯风险"
// "存在闯红灯风险"
StringUtils.getString(R.string.module_core_warning_running_red_light_risk)
)
)
)
@@ -109,9 +119,11 @@ object CloudControlManager: INDECloudListener{
//行驶车道建议
6031,6032->{
if(it.adviceRsiLaneProposalInfo.tagLaneDataNum > 0){
var desc = "推荐车道:"
// var desc = "推荐车道:"
var desc = StringUtils.getString(R.string.module_core_hint_recommended_lane)
it.adviceRsiLaneProposalInfo.tagLaneData.forEach {lane->
desc += "${lane.tagLaneSeq}车道 "
// desc += "第${lane.tagLaneSeq}车道 "
desc += StringUtils.getString(R.string.module_core_lane_sequence_number, lane.tagLaneSeq)
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
@@ -128,7 +140,11 @@ object CloudControlManager: INDECloudListener{
6061->{
//eventLevel 2:拥堵; 3:重拥堵
if(it.adviceRsiTrafficJamInfo.eventLevel ==2 || it.adviceRsiTrafficJamInfo.eventLevel == 3){
val desc = "前方${it.adviceRsiTrafficJamInfo.queueLength}${it.adviceRsiTrafficJamInfo.roadIdNum}车道拥堵"
// val desc = "前方${it.adviceRsiTrafficJamInfo.queueLength}${it.adviceRsiTrafficJamInfo.roadIdNum}车道拥堵"
val desc = StringUtils.getString(
R.string.module_core_front_have_block,
it.adviceRsiTrafficJamInfo.queueLength,
it.adviceRsiTrafficJamInfo.roadIdNum)
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -146,9 +162,16 @@ object CloudControlManager: INDECloudListener{
if(it.adviceRsiRoadDangerHintInfo.laneOfEventNum > 0){
var lane = ""
it.adviceRsiRoadDangerHintInfo.laneOfEvent.forEach {
lane += "${it}"
// lane += "第${it}"
lane += "${StringUtils.getString(R.string.module_core_di)}${it}"
}
val desc = "前方${it.eventRadius}米有${getAlterType(it.adviceRsiRoadDangerHintInfo.alterType)},影响${lane}车道通行"
// val desc = "前方${it.eventRadius}米有${getAlterType(it.adviceRsiRoadDangerHintInfo.alterType)},影响${lane}车道通行"
val desc = StringUtils.getString(
R.string.module_core_front_have_alter,
it.eventRadius,
getAlterType(it.adviceRsiRoadDangerHintInfo.alterType),
lane
)
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -164,7 +187,11 @@ object CloudControlManager: INDECloudListener{
//超视距弱势交通参与者提醒
6051->{
if(it.adviceRsiOverSightDistanceInfo.valid == 1){
val desc = "前方${it.adviceRsiOverSightDistanceInfo.distance}米有${getWeakType(it.adviceRsiOverSightDistanceInfo.type)}"
// val desc = "前方${it.adviceRsiOverSightDistanceInfo.distance}米有${getWeakType(it.adviceRsiOverSightDistanceInfo.type)}"
val desc = StringUtils.getString(
R.string.module_core_front_have_rsi,
it.adviceRsiOverSightDistanceInfo.distance,
getWeakType(it.adviceRsiOverSightDistanceInfo.type))
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -180,9 +207,11 @@ object CloudControlManager: INDECloudListener{
6041->{
if(it.adviceRsiOtherCarBreakReadWarningInfo.valid == 1){
val desc = if(it.adviceRsiOtherCarBreakReadWarningInfo.d2StopLine == -1.0){
"路口内有他车闯红灯"
// "路口内有他车闯红灯"
StringUtils.getString(R.string.module_core_warning_other_vehicle_running_red_light_in_intersection)
}else{
"路口前有他车闯红灯"
// "路口前有他车闯红灯"
StringUtils.getString(R.string.module_core_warning_other_vehicle_running_red_light_before_intersection)
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
@@ -201,9 +230,11 @@ object CloudControlManager: INDECloudListener{
if(it.adviceRsiAbandonInfo.laneOfEventNum > 0){
var lane = ""
it.adviceRsiAbandonInfo.lanOfEvent.forEach {lan->
lane = "$lane${lan}车道"
// lane = "$lane${lan}车道"
lane = "$lane${lan}${StringUtils.getString(R.string.module_core_lane)}"
}
val desc = "前方${it.adviceRsiAbandonInfo.distance}${lane}存在障碍物,影响${lane}通行"
// val desc = "前方${it.adviceRsiAbandonInfo.distance}${lane}存在障碍物,影响${lane}通行"
val desc = StringUtils.getString(R.string.module_core_front_have_barrier, it.adviceRsiAbandonInfo.distance, lane, lane)
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -219,7 +250,8 @@ object CloudControlManager: INDECloudListener{
//能见度预警
6071->{
if(it.adviceRsiVisibilityInfo.valid == 1){
val desc = "当前能见度为${it.adviceRsiVisibilityInfo.visibilityDis}"
// val desc = "当前能见度为${it.adviceRsiVisibilityInfo.visibilityDis}米"
val desc = StringUtils.getString(R.string.module_core_current_visibility_distance, it.adviceRsiVisibilityInfo.visibilityDis)
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -246,9 +278,11 @@ object CloudControlManager: INDECloudListener{
//紧急车辆优先通行 TODO 没有具体车道
if(adviceEvwInfo.valid == 1){
val desc = if(adviceEvwInfo.alertRadius == 6553.5){
"前方有${getVehicleType(adviceEvwInfo.type.desc)}"
// "前方有${getVehicleType(adviceEvwInfo.type.desc)}"
StringUtils.getString(R.string.module_core_ahead_has, getVehicleType(adviceEvwInfo.type.desc))
}else{
"后方${adviceEvwInfo.alertRadius}米有${getVehicleType(adviceEvwInfo.type.desc)}"
// "后方${adviceEvwInfo.alertRadius}米有${getVehicleType(adviceEvwInfo.type.desc)}"
StringUtils.getString(R.string.module_core_behind_has, adviceEvwInfo.alertRadius, getVehicleType(adviceEvwInfo.type.desc))
}
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
@@ -273,7 +307,8 @@ object CloudControlManager: INDECloudListener{
) {
//动态限速信息
if(adviceLaneSpdLmtInfo.valid == 1){
val desc = "道路限速${adviceLaneSpdLmtInfo.speedLmt[0].speedLimit}km/h"
// val desc = "道路限速${adviceLaneSpdLmtInfo.speedLmt[0].speedLimit}km/h"
val desc = "${StringUtils.getString(R.string.module_core_road_speed_limit)}${adviceLaneSpdLmtInfo.speedLmt[0].speedLimit}km/h"
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -294,7 +329,8 @@ object CloudControlManager: INDECloudListener{
override fun onNdeCloudAdviceAvw(advicePojo: AdvicePojo, adviceAvwInfo: AdviceAvwInfo) {
//异常车辆预警
if(adviceAvwInfo.valid == 1){
val desc = "前方${adviceAvwInfo.distance}${adviceAvwInfo.rsiLaneId}车道存在异常车辆"
// val desc = "前方${adviceAvwInfo.distance}${adviceAvwInfo.rsiLaneId}车道存在异常车辆"
val desc = StringUtils.getString(R.string.module_core_warning_abnormal_vehicle_ahead_lane, adviceAvwInfo.distance, adviceAvwInfo.rsiLaneId)
CallerMsgBoxManager.saveMsgBox(
MsgBoxBean(
MsgBoxType.CLOUD,
@@ -322,7 +358,8 @@ object CloudControlManager: INDECloudListener{
AdviceEvwType.FIRE_TRUCK.desc
}
else->{
"应急车辆"
// "应急车辆"
StringUtils.getString(R.string.module_core_emergency_vehicle)
}
}
}
@@ -330,76 +367,100 @@ object CloudControlManager: INDECloudListener{
private fun getAlterType(alterType: Int): String{
return when(alterType){
5501->{
"行人提醒"
// "行人提醒"
StringUtils.getString(R.string.module_core_warning_pedestrian_ahead)
}
5502->{
"非机动车提醒"
// "非机动车提醒"
StringUtils.getString(R.string.module_core_warning_non_motor_vehicle_ahead)
}
5503->{
"紧急制动预警"
// "紧急制动预警"
StringUtils.getString(R.string.module_core_warning_emergency_braking)
}
5504->{
"倒车预警"
// "倒车预警"
StringUtils.getString(R.string.module_core_warning_reverse_alert)
}
5505->{
"逆行预警"
// "逆行预警"
StringUtils.getString(R.string.module_core_warning_opposite_direction_traffic)
}
5506->{
"异常低速预警"
// "异常低速预警"
StringUtils.getString(R.string.module_core_warning_abnormal_low_speed)
}
5507->{
"异常停车预警"
// "异常停车预警"
StringUtils.getString(R.string.module_core_warning_abnormal_parking)
}
5508->{
"超速预"
// "超速预警"
StringUtils.getString(R.string.module_core_warning_speed_exceed_limit)
}
5509->{
"交通拥堵预警"
// "交通拥堵预警"
StringUtils.getString(R.string.module_core_warning_traffic_congestion)
}
5510->{
"特殊车辆预警"
// "特殊车辆预警"
StringUtils.getString(R.string.module_core_warning_special_vehicle_approaching)
}
5511->{
"紧急车辆预警"
// "紧急车辆预警"
StringUtils.getString(R.string.module_core_warning_emergency_vehicle_approaching)
}
5512->{
"车辆状态异常预警"
// "车辆状态异常预警"
StringUtils.getString(R.string.module_core_warning_vehicle_status_abnormal)
}
5513->{
"连续并道预警"
// "连续并道预警"
StringUtils.getString(R.string.module_core_warning_continuous_lane_changing)
}
5514->{
"匝道退回主路预警"
// "匝道退回主路预警"
StringUtils.getString(R.string.module_core_warning_ramp_return_to_main_road)
}
5515->{
"交通管控预警"
// "交通管控预警"
StringUtils.getString(R.string.module_core_warning_traffic_control_implemented)
}
5516->{
"路面低摩阻预警"
// "路面低摩阻预警"
StringUtils.getString(R.string.module_core_warning_road_low_friction)
}
5517->{
"动态车道级限速预警"
// "动态车道级限速预警"
StringUtils.getString(R.string.module_core_warning_dynamic_lane_speed_limit)
}
5518->{
"障碍物提醒"
// "障碍物提醒"
StringUtils.getString(R.string.module_core_warning_obstacle_ahead)
}
5519->{
"红绿灯故障预警"
// "红绿灯故障预警"
StringUtils.getString(R.string.module_core_warning_traffic_light_fault)
}
5520->{
"弱势交通参与者预警"
// "弱势交通参与者预警"
StringUtils.getString(R.string.module_core_warning_vulnerable_road_user_ahead)
}
5521->{
"闯红灯"
// "闯红灯"
StringUtils.getString(R.string.module_core_warning_red_light_run_imminent)
}
5522->{
"机动车压实线变道"
// "机动车压实线变道"
StringUtils.getString(R.string.module_core_notice_solid_line_lane_change)
}
5523->{
"机动车不按导向标识行驶"
// "机动车不按导向标识行驶"
StringUtils.getString(R.string.module_core_notice_incorrect_guide_sign_driving)
}
else->{
"预警"
// "预警"
StringUtils.getString(R.string.module_core_warning)
}
}
}
@@ -410,13 +471,16 @@ object CloudControlManager: INDECloudListener{
private fun getWeakType(type: Int): String{
return when(type){
0->{
"未知"
// "未知"
StringUtils.getString(R.string.module_core_unknown)
}
1->{
"行人"
// "行人"
StringUtils.getString(R.string.module_core_pedestrian)
}
2->{
"非机动车"
// "非机动车"
StringUtils.getString(R.string.module_core_non_motor_vehicle)
}
else->{
""

View File

@@ -8,6 +8,7 @@ import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.deva.coldstart.ColdStartNodeInfo
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo_core_function_devatools.R
class ColdStartNodeAdapter : RecyclerView.Adapter<ColdStartNodeAdapter.NodeInfoHolder>(){
@@ -30,7 +31,8 @@ class ColdStartNodeAdapter : RecyclerView.Adapter<ColdStartNodeAdapter.NodeInfoH
nodeList?.let {
val node = it[position]
holder.tvNodeStatus.text = "${node.nodeName} ${node.status}"
if("启动成功" == node.status || "启动中…" == node.status){
// if("启动成功" == node.status || "启动中…" == node.status){
if (StringUtils.getString(R.string.module_core_startup_successful) == node.status || StringUtils.getString(R.string.module_core_starting) == node.status) {
holder.tvNodeStatus.setTextColor(Color.parseColor("#B2FFFFFF"))
}else{
holder.tvNodeStatus.setTextColor(Color.parseColor("#FF4E41"))

View File

@@ -20,12 +20,14 @@ import com.mogo.eagle.core.network.apiCall
import com.mogo.eagle.core.network.request
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.tencent.liteav.basic.log.TXCLog
import com.tencent.rtmp.ITXLivePlayListener
import com.tencent.rtmp.TXLiveConstants
import com.tencent.rtmp.TXLivePlayConfig
import com.tencent.rtmp.TXLivePlayer
import com.tencent.rtmp.ui.TXCloudVideoView
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.driver.video.vo.VideoUrlData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -98,7 +100,8 @@ class DriveSeatVideoProviderImpl : IDriveSeatVideoProvider {
}
onError {
Log.e(TAG, "-- isVideoLiveUsable -- receive 请求失败: { msg: ${it.message}")
onError.invoke("请求失败 , ${it.message}")
// onError.invoke("请求失败 , ${it.message}")
onError.invoke("${StringUtils.getString(R.string.module_core_request_failed)}${it.message}")
}
}
}
@@ -139,7 +142,8 @@ class DriveSeatVideoProviderImpl : IDriveSeatVideoProvider {
Log.d(TAG, "play failed...$event, bundle: $bundle")
stop()
isPlaying.set(false)
playCallback?.invoke(Failed(bundle?.toString() ?: "播放失败"))
// playCallback?.invoke(Failed(bundle?.toString() ?: "播放失败"))
playCallback?.invoke(Failed(bundle?.toString() ?: StringUtils.getString(R.string.module_core_play_failed)))
}
}
}
@@ -173,7 +177,8 @@ class DriveSeatVideoProviderImpl : IDriveSeatVideoProvider {
@OptIn(ExperimentalCoroutinesApi::class)
override fun poller(): Flow<Boolean> = channelFlow {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
throw AssertionError("此方法不支持司机屏使用")
// throw AssertionError("此方法不支持司机屏使用")
throw AssertionError(StringUtils.getString(R.string.module_core_method_not_support_driver_screen))
}
val ch = chl.get()?.let {
if (it.isClosedForSend || it.isClosedForReceive) {
@@ -217,7 +222,8 @@ class DriveSeatVideoProviderImpl : IDriveSeatVideoProvider {
override fun isVideoPlaying(): Boolean {
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
throw AssertionError("此方法不支持司机屏使用")
// throw AssertionError("此方法不支持司机屏使用")
throw AssertionError(StringUtils.getString(R.string.module_core_method_not_support_driver_screen))
}
return isPlaying.get()
}

View File

@@ -8,7 +8,9 @@ import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.Utils
import com.zhjt.mogo_core_function_devatools.R
object EnvChangeManager {
@@ -48,7 +50,8 @@ object EnvChangeManager {
// else -> "未知"
// }
// }
return "未知"
// return "未知"
return StringUtils.getString(R.string.module_core_unknown)
}
fun getConfigNetMode(): Int {
@@ -74,7 +77,8 @@ object EnvChangeManager {
// else -> "未知"
// }
// }
return "未知"
// return "未知"
return StringUtils.getString(R.string.module_core_unknown)
}
fun changeTo(cityCode: String, netMode: Int) {

View File

@@ -25,12 +25,14 @@ import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.core.log.record.LogcatManager
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.utilcode.mogo.toast.TipToast
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.map.MogoData.Companion.mogoMapData
import com.zhidao.loglib.bean.RemoteLogPushContent
import com.zhidao.loglib.call.LogInfoManagerFactory
import com.zhidao.loglib.core.ILogListener
import com.zhidao.loglib.core.LogInfoManager
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.logcat.config.LogRecordConfig
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.CACHE_MAP_UPLOAD
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchConst.Companion.CACHE_TRACE_UPLOAD
@@ -114,27 +116,33 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
obj.pkgName = mContext?.packageName
when (obj.type) {
START_CATCH_LOG -> if (!catchingList.contains(obj.pkgName)) {
TipToast.longTip("云端下发抓取日志,时间:${obj.duration}分钟")
// TipToast.longTip("云端下发抓取日志,时间:${obj.duration}分钟")
TipToast.longTip(StringUtils.getString(R.string.module_core_cloud_send_get_log, obj.duration))
startCatchLog(obj.duration)
}
STOP_CATCH_LOG -> {
TipToast.longTip("云端下发停止抓取日志")
// TipToast.longTip("云端下发停止抓取日志")
TipToast.longTip(R.string.module_core_cloud_stop_send_get_log)
stopCatchLog(obj)
}
LOCAL_CONFIG_OPEN_LOG -> {
TipToast.longTip("云端下发打开日志开关")
// TipToast.longTip("云端下发打开日志开关")
TipToast.longTip(R.string.module_core_cloud_send_open_log_switch)
openLoggerLevel()
}
LOCAL_CONFIG_CLOSE_LOG -> {
TipToast.longTip("云端下发关闭日志开关")
// TipToast.longTip("云端下发关闭日志开关")
TipToast.longTip(R.string.module_core_cloud_send_close_log_switch)
closeLoggerLevel()
}
CACHE_TRACE_UPLOAD -> {
TipToast.longTip("上传本地缓存链路日志")
// TipToast.longTip("上传本地缓存链路日志")
TipToast.longTip(R.string.module_core_upload_cache_log)
LogInfoManagerFactory.cacheTraceLogUpload()
}
CACHE_MAP_UPLOAD -> {
TipToast.longTip("上传本地地图缓存日志")
// TipToast.longTip("上传本地地图缓存日志")
TipToast.longTip(R.string.module_core_upload_cache_map_log)
mapCacheUpload = true
}
LOCAL_CONFIG_CLOSE_SINGLE_FW -> {
@@ -200,7 +208,8 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
@BizConfig(FOUNDATION, "", BIZ_FULL_LOG)
fun startCatchLog(duration: Int = 10, logPrefixName: String? = null) {
if (catchingList.contains(manualContent.pkgName + logPrefixName)) {
TipToast.shortTip("已经在抓取日志了,请稍后再试")
// TipToast.shortTip("已经在抓取日志了,请稍后再试")
TipToast.shortTip(R.string.module_core_started_capture_log)
} else {
CallerLogger.d("$M_DEVA$TAG", "开始抓取日志==== duration : $duration")
manualContent.type = START_CATCH_LOG
@@ -220,7 +229,8 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
CallerLogger.d("$M_DEVA$TAG", "startCatchLog path : ${content.pkgName + logPrefixName}")
if (SharedPrefsMgr.getInstance().sn == null) {
ThreadUtils.runOnUiThread {
TipToast.shortTip("缺少设备唯一ID请检查网络")
// TipToast.shortTip("缺少设备唯一ID请检查网络")
TipToast.shortTip(R.string.module_core_device_not_uuid)
}
return
}
@@ -330,7 +340,8 @@ object MogoLogCatchManager : IMogoOnMessageListener<RemoteLogPushContent>, Handl
override fun onError(errorCount: Int) {
ThreadUtils.runOnUiThread {
TipToast.shortTip("日志抓取出现错误,出错数量:$errorCount")
// TipToast.shortTip("日志抓取出现错误,出错数量:$errorCount")
TipToast.shortTip(StringUtils.getString(R.string.module_core_get_log_error, errorCount))
}
}

View File

@@ -294,7 +294,8 @@ internal class MoGoMoFangProviderImpl: IMoGoMoFangProvider, OnMoFangDeviceListen
linkedLog.record(mapOf("callback" to "onBluetoothKeyboardInputInvalid"))
UiThreadHandler.post {
listeners.values.forEach {
it.onMoFangStatusError("检测到鹰眼未处于前台, 魔方指令暂不能使用, 请将鹰眼切换到前台运行...")
// it.onMoFangStatusError("检测到鹰眼未处于前台, 魔方指令暂不能使用, 请将鹰眼切换到前台运行...")
it.onMoFangStatusError(StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_eagle_eye_not_front_desk_not_use_mofang))
}
}
}
@@ -322,7 +323,8 @@ internal class MoGoMoFangProviderImpl: IMoGoMoFangProvider, OnMoFangDeviceListen
MoFangAnalyticUtils.track(EVENT_MOFANG_CONNECT, mutableMapOf(EVENT_MOFANG_CONNECT_PARAMS_SETTING_REQ to "${System.currentTimeMillis()}"))
linkedLog.record(mapOf("callback" to "onBluetoothSettingRequest"))
UiThreadHandler.post {
Toast.makeText(Utils.getApp(), "检测到魔方未正确连接,请在系统蓝牙设置页面,找到魔方并配对连接...", Toast.LENGTH_SHORT).show()
// Toast.makeText(Utils.getApp(), "检测到魔方未正确连接,请在系统蓝牙设置页面,找到魔方并配对连接...", Toast.LENGTH_SHORT).show()
Toast.makeText(Utils.getApp(), com.mogo.eagle.core.widget.R.string.module_core_mofang_connect_error, Toast.LENGTH_SHORT).show()
}
}

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Context
import android.os.Looper
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo_core_function_devatools.R
import java.util.*
class MonitorManager private constructor(var context: Context) {
@@ -46,9 +47,11 @@ class MonitorManager private constructor(var context: Context) {
}
}, 1000, 60000)
isStarted = true
ToastUtils.showShort("性能监控启动成功!")
// ToastUtils.showShort("性能监控启动成功!")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_start_monitor_success)
} else {
ToastUtils.showShort("性能监控已启动,请勿重复启动!")
// ToastUtils.showShort("性能监控已启动,请勿重复启动!")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_monitor_started)
}
}
}
@@ -59,6 +62,7 @@ class MonitorManager private constructor(var context: Context) {
timer?.cancel()
timer = null
isStarted = false
ToastUtils.showShort("性能监控停止成功!")
// ToastUtils.showShort("性能监控停止成功!")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_stop_monitor_success)
}
}

View File

@@ -17,8 +17,10 @@ import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
import com.mogo.eagle.core.function.call.devatools.CallerOTAManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo_core_function_devatools.R
import org.json.JSONArray
import org.json.JSONObject
import system_master.SsmInfo
@@ -93,7 +95,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
}
}else if(msg.what == 4){
if(shouldToast && secondVersionShouldToast){
ToastUtils.showLong("暂无待升级任务!")
// ToastUtils.showLong("暂无待升级任务!")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_not_upgrade_task)
}
}
}
@@ -206,9 +209,11 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
Log.i(TAG,"left_time=$leftTime")
val upgradeTime = if(leftTime > 60){
"预计部署过程用时${leftTime/60}分钟${leftTime%60}"
// "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used, leftTime / 60, leftTime % 60)
}else{
"预计部署过程用时${leftTime%60}"
// "预计部署过程用时${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used1, leftTime % 60)
}
if(index == 0){
@@ -225,7 +230,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
//冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级,
// 并toast提示“收到车辆部署任务请在车辆空闲时发起升级”
CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY)
ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
// ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_receive_upgrade_task)
}
OTAUpgradeConfig.promptedUpgrade.add(request.otaToken)
}
@@ -342,9 +348,11 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
Log.i(TAG,"left_time=$leftTime")
val upgradeTime = if(leftTime > 60){
"预计部署过程用时${leftTime/60}分钟${leftTime%60}"
// "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used, leftTime / 60, leftTime % 60)
}else{
"预计部署过程用时${leftTime%60}"
// "预计部署过程用时${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used1, leftTime % 60)
}
if(index == 0){
@@ -361,7 +369,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
//冷启动未完成(进行中),或驾驶状态为自驾状态,或当前有订单,直接默认选择稍后升级,
// 并toast提示“收到车辆部署任务请在车辆空闲时发起升级”
CallerAutoPilotControlManager.sendSsmFuncOtaDownloadResponse(OTAUpgradeConfig.otaToken,SsmInfo.IfUpgrade.DELAY)
ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
// ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_receive_upgrade_task)
}
OTAUpgradeConfig.promptedUpgrade.add(status.otaInfo.otaToken)
}
@@ -445,7 +454,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
val cmd = jsonObject.optString("cmd")
//无升级任务
if("ASK_PAD_NO_UPGRADE" == cmd){
ToastUtils.showShort("暂无OTA升级任务")
// ToastUtils.showShort("暂无OTA升级任务")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_not_ota_task)
return
}
@@ -507,11 +517,14 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
// 并toast提示“收到车辆部署任务请在车辆空闲时发起升级”
val reason = if(OTAUpgradeConfig.autopilotStatus){
"处于自驾中"
// "处于自驾中"
StringUtils.getString(R.string.module_core_in_self_driving)
}else if(OTAUpgradeConfig.inOrder){
"处于订单中"
// "处于订单中"
StringUtils.getString(R.string.module_core_in_order)
}else{
"冷启动未完成"
// "冷启动未完成"
StringUtils.getString(R.string.module_core_cold_boot_incomplete)
}
val query = JSONObject()
query.put("cmd","ASK_PAD_UPGRADE_RES")
@@ -521,7 +534,8 @@ object OTAUpgradeManager: IMoGoAutopilotStatusListener, IDataCenterBizListener,
Log.i(TAG,query.toString())
CallerAutoPilotControlManager.sendOtaPadMsgQuery(query.toString())
ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
// ToastUtils.showLong("收到车辆部署任务,请在车辆空闲时发起升级")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_receive_upgrade_task)
}
return
}

View File

@@ -10,6 +10,7 @@ import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.deva.report.ReportEntity
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo_core_function_devatools.R
/**
@@ -38,7 +39,8 @@ class ReportListAdapter(context: Context) :
data?.let { it ->
val reportEntity = it[position]
reportEntity.let {
holder.tvReportTime.text = "上报时间:${it.time}"
// holder.tvReportTime.text = "上报时间:${it.time}"
holder.tvReportTime.text = "${StringUtils.getString(R.string.module_core_report_time)}${it.time}"
holder.tvReportSrc.text = "src:${it.src}"
holder.tvReportLevel.text = "level:${it.level}"
holder.tvReportMsg.text = "msg:${it.msg}"

View File

@@ -29,6 +29,7 @@ import com.mogo.eagle.core.utilcode.util.IAppStateListener
import com.mogo.eagle.core.utilcode.util.PermissionUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.status.entity.OverViewStatus
import com.zhjt.mogo_core_function_devatools.status.entity.TracingStatus
import com.zhjt.mogo_core_function_devatools.status.entity.toState
@@ -156,7 +157,8 @@ internal class OverViewImpl(ctx: Context) : IFlow<OverViewStatus>(ctx),
}
override fun onDenied() {
ToastUtils.showShort("定位权限被拒绝, 可能导致RTK定位不准确请开启~")
// ToastUtils.showShort("定位权限被拒绝, 可能导致RTK定位不准确请开启~")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_not_location_permission)
isGpsException = true
send(OverViewStatus(true))
CallerDevaToolsListenerManager.invokeGpsStatus(false)

View File

@@ -13,8 +13,10 @@ import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.bean.NodeStateInfo
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStateCode
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStatus
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
@@ -36,7 +38,8 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
private fun getDesc(): List<String> {
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
return listOf("未知")
// return listOf("未知")
return listOf(StringUtils.getString(R.string.module_core_unknown))
} else {
val nodeState = CallerAutoPilotControlManager.getNodeStateInfo(AdasConstants.NodeName.FSM2024)?.nodeState ?: AdasConstants.NodeState.NODE_UNKNOWN
return getStateDescByNodeStateInfo(nodeState)
@@ -63,10 +66,14 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
private fun getStateDescByNodeStateInfo(nodeState: AdasConstants.NodeState): List<String> {
return when(nodeState) {
AdasConstants.NodeState.NODE_UNKNOWN -> listOf("未知")
AdasConstants.NodeState.NODE_NOT_EXIST -> listOf("FSM不存在")
AdasConstants.NodeState.NODE_EXIST -> if(fsmStateMsg.get()?.pilotStandbyFlag == true) listOf("状态正常") else fsmStateMsg.get()?.repeatedPilotNotStandbyReasonList ?: listOf("")
else -> listOf("未知")
// AdasConstants.NodeState.NODE_UNKNOWN -> listOf("未知")
AdasConstants.NodeState.NODE_UNKNOWN -> listOf(StringUtils.getString(R.string.module_core_unknown))
// AdasConstants.NodeState.NODE_NOT_EXIST -> listOf("FSM不存在")
AdasConstants.NodeState.NODE_NOT_EXIST -> listOf(StringUtils.getString(R.string.module_core_fsm_not_exist))
// AdasConstants.NodeState.NODE_EXIST -> if(fsmStateMsg.get()?.pilotStandbyFlag == true) listOf("状态正常") else fsmStateMsg.get()?.repeatedPilotNotStandbyReasonList ?: listOf("")
AdasConstants.NodeState.NODE_EXIST -> if(fsmStateMsg.get()?.pilotStandbyFlag == true) listOf(StringUtils.getString(R.string.module_core_normal_state)) else fsmStateMsg.get()?.repeatedPilotNotStandbyReasonList ?: listOf("")
// else -> listOf("未知")
else -> listOf(StringUtils.getString(R.string.module_core_unknown))
}
}
@@ -91,7 +98,8 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
} else {
CallerLogger.d("$M_DEVA$TAG", "工控机断开了....")
fsmStateMsg.set(null)
send(FSMStatus(FSMStateCode.UnKnown, listOf("工控机断开了")))
// send(FSMStatus(FSMStateCode.UnKnown, listOf("工控机断开了")))
send(FSMStatus(FSMStateCode.UnKnown, listOf(StringUtils.getString(R.string.module_core_ipc_disconnected))))
}
}
@@ -121,7 +129,8 @@ internal class FSMImpl(ctx: Context) : IFlow<FSMStatus>(ctx), IMoGoAutopilotStat
)
fsmStateMsg.set(fsmState)
if (fsmState.pilotStandbyFlag) {
send(FSMStatus(FSMStateCode.ExistNormal, listOf("状态正常")))
// send(FSMStatus(FSMStateCode.ExistNormal, listOf("状态正常")))
send(FSMStatus(FSMStateCode.ExistNormal, listOf(StringUtils.getString(R.string.module_core_normal_state))))
} else {
send(FSMStatus(FSMStateCode.ExistError, fsmState.repeatedPilotNotStandbyReasonList))
}

View File

@@ -7,6 +7,7 @@ import android.util.*
import androidx.core.location.*
import com.mogo.eagle.core.utilcode.util.*
import com.mogo.eagle.core.utilcode.util.PermissionUtils.SimpleCallback
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
import com.zhjt.mogo_core_function_devatools.status.entity.GpsStatus
import java.util.concurrent.atomic.*
@@ -71,7 +72,8 @@ internal class GpsImpl(ctx: Context): IFlow<GpsStatus>(ctx) {
}
override fun onDenied() {
ToastUtils.showShort("定位权限被拒绝, 可能导致RTK定位不准确请开启~")
// ToastUtils.showShort("定位权限被拒绝, 可能导致RTK定位不准确请开启~")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_not_location_permission)
send(enabled = isLocationEnabled(), isGranted = false)
}
})

View File

@@ -117,7 +117,8 @@ class UpgradeAppNetWorkManager private constructor() {
provider?.recordUpgradeRequestSuccess(response)
doUpgrade(info)
} else {
val error = info.msg?:"请检查升级服务日志"
// val error = info.msg?:"请检查升级服务日志"
val error = info.msg?:StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_check_upgrade_log_normal)
runCatching {
block?.invoke(false, error)
}
@@ -128,7 +129,8 @@ class UpgradeAppNetWorkManager private constructor() {
SharedPrefsMgr.getInstance().putString(SharedPrefsConstants.APP_UPGRADE_CONTENT,
"$t--mac:$macAddress --type:$type --sn:$sn "
)
provider?.recordUpgradeRequestFailed(t.message ?: "更新接口请求失败")
// provider?.recordUpgradeRequestFailed(t.message ?: "更新接口请求失败")
provider?.recordUpgradeRequestFailed(t.message ?: StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_update_api_request_failed))
deleteApkFile()
}
delay(TimeUnit.HOURS.toMillis(1))
@@ -165,7 +167,12 @@ class UpgradeAppNetWorkManager private constructor() {
Log.d("ApkInstaller", "需要走patch升级 -- 4 --:$accept")
if (!accept) {
Log.d("ApkInstaller", "旧版本apk包的md5与服务端上的md5不匹配...")
provider.recordSourceMd5CheckFailed("旧apk的md5与服务端的md5不一致:[server_md5: ${patchInfo.sourceMd5}, apk_md5: ${AppUtils.getAppApkMd5()}]")
// provider.recordSourceMd5CheckFailed("旧apk的md5与服务端的md5不一致:[server_md5: ${patchInfo.sourceMd5}, apk_md5: ${AppUtils.getAppApkMd5()}]")
provider.recordSourceMd5CheckFailed(
StringUtils.getString(
com.mogo.eagle.core.widget.R.string.module_core_old_md5_server_md5_inconformity,
patchInfo.sourceMd5,
AppUtils.getAppApkMd5()))
} else {
Log.d("ApkInstaller", "需要走patch升级 -- 5 --")
provider.recordSourceMd5CheckSuccess()
@@ -189,7 +196,8 @@ class UpgradeAppNetWorkManager private constructor() {
mDownloadRequested = true
try {
withContext(Dispatchers.Main) {
Toast.makeText(Utils.getApp(), "检测到新版本[${info.result.versionName}]并且当前设备支持静默升级,开始下载新版本...", Toast.LENGTH_SHORT).show()
// Toast.makeText(Utils.getApp(), "检测到新版本[${info.result.versionName}]并且当前设备支持静默升级,开始下载新版本...", Toast.LENGTH_SHORT).show()
Toast.makeText(Utils.getApp(),com.mogo.eagle.core.widget.R.string.module_core_find_new_version_quiesce_install , Toast.LENGTH_SHORT).show()
}
} catch (t: Throwable) {
t.printStackTrace()

View File

@@ -97,7 +97,8 @@ class UpgradeManager : IDownloadListener {
val ret = dir.mkdirs()
if (!ret) {
Logger.w(TAG, "create new apk path failed.")
throw AssertionError("创建目录失败")
// throw AssertionError("创建目录失败")
throw AssertionError(StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_dir_create_failed))
}
}
if (dir != null){
@@ -111,17 +112,21 @@ class UpgradeManager : IDownloadListener {
upgradeProvider?.recordInstallApplyPatchStart()
var ret = CallerPatchManager.applyPatch(Utils.getApp(), patch, newApk)
if (!ret) {
upgradeProvider?.recordInstallApplyPatchFailed("合成patch失败")
// upgradeProvider?.recordInstallApplyPatchFailed("合成patch失败")
upgradeProvider?.recordInstallApplyPatchFailed(StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_compound_patch_failed))
Logger.w(TAG, "合成patch失败...")
throw AssertionError("合成patch失败...")
// throw AssertionError("合成patch失败...")
throw AssertionError("${StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_compound_patch_failed)}...")
} else {
upgradeProvider?.recordInstallApplyPatchSuccess()
upgradeProvider?.recordTargetMd5CheckStart()
ret = CallerPatchManager.checkMd5ForMergedApk(Utils.getApp(), newApk, patchInfo.targetMd5)
if (!ret) {
upgradeProvider?.recordTargetMd5CheckFailed("合成后的apk的md5与服务端上的目标版本的md5不一致:[server_target_md5: ${patchInfo.targetMd5}, merged_md5: ${Md5Util.getMd5FromFile(newApk)}]")
// upgradeProvider?.recordTargetMd5CheckFailed("合成后的apk的md5与服务端上的目标版本的md5不一致:[server_target_md5: ${patchInfo.targetMd5}, merged_md5: ${Md5Util.getMd5FromFile(newApk)}]")
upgradeProvider?.recordTargetMd5CheckFailed("${StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_compound_apk_md5_check_failed)}:[server_target_md5: ${patchInfo.targetMd5}, merged_md5: ${Md5Util.getMd5FromFile(newApk)}]")
Logger.w(TAG, "md5校验失败...")
throw AssertionError("md5校验失败:[target:${patchInfo.targetMd5}]")
// throw AssertionError("md5校验失败:[target:${patchInfo.targetMd5}]")
throw AssertionError("${StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_md5_check_failed)}:[target:${patchInfo.targetMd5}]")
} else {
Logger.w(TAG, "md5校验成功...")
upgradeProvider?.recordTargetMd5CheckSuccess()
@@ -153,10 +158,12 @@ class UpgradeManager : IDownloadListener {
} catch (t: Throwable) {
t.printStackTrace()
isPatchInstallFailed = true
patchInstallFailedReason = t.message ?: "安装失败: code -1"
// patchInstallFailedReason = t.message ?: "安装失败: code -1"
patchInstallFailedReason = t.message ?: "${StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_install_failed)}: code -1"
}
} else {
patchInstallFailedReason = "patch下载后文件不存在"
// patchInstallFailedReason = "patch下载后文件不存在"
patchInstallFailedReason = StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_patch_file_not_exist)
isPatchInstallFailed = true
}
@@ -190,10 +197,12 @@ class UpgradeManager : IDownloadListener {
override fun onError(url: String, error: String?) {
CallerLogger.d("$M_DEVA$TAG","onError downloadUrl : $url , errorMsg : $error")
CallerDevaToolsUpgradeListenerManager.invokeUpgradeError(url, error ?: "未知错误")
// CallerDevaToolsUpgradeListenerManager.invokeUpgradeError(url, error ?: "未知错误")
CallerDevaToolsUpgradeListenerManager.invokeUpgradeError(url, error ?: StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_unknown_error))
val type = types[url]
if (type == APK || type == PATCH) {
scope.launch { upgradeProvider?.recordDownloadFailed(url, error ?: "下载失败") }
// scope.launch { upgradeProvider?.recordDownloadFailed(url, error ?: "下载失败") }
scope.launch { upgradeProvider?.recordDownloadFailed(url, error ?: StringUtils.getString(com.mogo.eagle.core.widget.R.string.module_core_download_failed)) }
} else if (type == OBU) {
CallerLogger.e("${SceneConstant.M_DEVA}${MogoObuConst.TAG_UPGRADE_OBU}", "----updateObuUpgradeStatus errorMsg = $error ")
//下载失败,删除文件夹

View File

@@ -8,6 +8,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.weak.network.SdtManager
import com.zhjt.mogo_core_function_devatools.R
import com.zhjt.service.chain.ChainLog
import java.util.concurrent.locks.ReentrantReadWriteLock
@@ -97,7 +98,8 @@ object WeakNetworkStrategy {
invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
}
if (timeStamp >= WEAK_HTTP_RTT) {
ToastUtils.showShort("当前网络质量差!")
// ToastUtils.showShort("当前网络质量差!")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_network_bad_quality)
} else if (timeStamp in 300 until WEAK_HTTP_RTT) {
// invokeWeakResult("url为:$url, 耗时为:$timeStamp${if (isFail) " 连接失败!" else ""}")
SdtManager.startActiveCheck()

View File

@@ -51,6 +51,7 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManage
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.JsonParser
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
@@ -233,7 +234,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
//故障类型选择
tvFaultType.setOnClickListener {
if (!hasLevel2) {
ToastUtils.showShort("运营后台没有配置故障类型")
// ToastUtils.showShort("运营后台没有配置故障类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_operation_not_configured_fault_type)
return@setOnClickListener
}
if (faultTypeSelectStatus) {
@@ -273,7 +275,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
//故障原因选择
tvFaultReason.setOnClickListener {
if (tvFaultType.text.isEmpty()) {
ToastUtils.showShort("请先选择故障类型")
// ToastUtils.showShort("请先选择故障类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_operation_choose_fault_type)
return@setOnClickListener
}
if (faultReasonSelectStatus) {
@@ -305,7 +308,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
}
ivTimeAdd.setOnClickListener {
if (workOrderOccurrenceTime + 60000 > System.currentTimeMillis()) {
ToastUtils.showShort("发生时间应在当前时间之前")
// ToastUtils.showShort("发生时间应在当前时间之前")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_occurrence_time_should_be_before_current_time)
return@setOnClickListener
}
workOrderOccurrenceTime += 60000
@@ -318,7 +322,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
if (hasFocus) {
edit.hint = ""
} else {
edit.hint = "手动输入"
// edit.hint = "手动输入"
edit.hint = StringUtils.getString(R.string.module_core_manual_input)
}
}
etNoteInput.addTextChangedListener(object : TextWatcher {
@@ -358,11 +363,13 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
//上报
tvFaultReport.setOnClickListener {
if (level2Name.isEmpty()) {
ToastUtils.showShort("请完整填写再上报")
// ToastUtils.showShort("请完整填写再上报")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_complete_submit_again)
return@setOnClickListener
}
if (hasLevel3 && level3Name.isEmpty()) {
ToastUtils.showShort("请完整填写再上报")
// ToastUtils.showShort("请完整填写再上报")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_complete_submit_again)
return@setOnClickListener
}
reportNote = etNoteInput.text.toString()
@@ -421,7 +428,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
//开始录音,展示放大缩小动效
@@ -450,7 +458,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -592,7 +601,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
override fun problemPadAddError(msg: String) {
super.problemPadAddError(msg)
ToastUtils.showShort("故障原因上报失败$msg")
// ToastUtils.showShort("故障原因上报失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cause_upload_fail, msg)
}
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
@@ -627,7 +637,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
hasLevel3 = false
} else {
hasLevel2 = false
ToastUtils.showShort("故障类型列表为空")
// ToastUtils.showShort("故障类型列表为空")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_type_list_empty)
}
}
}
@@ -635,6 +646,7 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
override fun getCategoriesError(msg: String) {
super.getCategoriesError(msg)
ToastUtils.showShort("故障列表获取失败:$msg")
// ToastUtils.showShort("故障列表获取失败:$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_list_get_fail, msg)
}
}

View File

@@ -127,7 +127,8 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
//一键上报
ivOneClickReport.setOnClickListener {
if(!canOneReport){
ToastUtils.showShort("故障描述获取失败不能上报")
// ToastUtils.showShort("故障描述获取失败不能上报")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_des_get_fail)
return@setOnClickListener
}
hasReportOperate = true
@@ -185,7 +186,8 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
clickListener?.closeWindow()
},1500)
}else{
ToastUtils.showShort("主动录包命令下发失败")
// ToastUtils.showShort("主动录包命令下发失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_initiative_record_bad_cmd_send_fail)
clickListener?.closeWindow()
}
}
@@ -316,14 +318,16 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
override fun problemPadAddError(msg: String) {
super.problemPadAddError(msg)
ToastUtils.showShort("故障原因上报失败$msg")
// ToastUtils.showShort("故障原因上报失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cause_upload_fail, msg)
clickListener?.closeWindow()
}
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
super.getCategoriesSuccess(list)
if(list.isEmpty()){
ToastUtils.showShort("一键上报故障描述后台未配置")
// ToastUtils.showShort("一键上报故障描述后台未配置")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cloud_not_configured)
canOneReport = false
}else{
when (level) {
@@ -352,7 +356,8 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
override fun getCategoriesError(msg: String) {
super.getCategoriesError(msg)
ToastUtils.showShort("一键上报故障描述获取失败$msg")
// ToastUtils.showShort("一键上报故障描述获取失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_desc_get_fail, msg)
canOneReport = false
}

View File

@@ -43,6 +43,7 @@ import com.mogo.eagle.core.function.call.takeover.CallerTakeOverManager
import com.mogo.eagle.core.function.call.takeover.CallerTakeOverRecordEventManager
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.JsonParser
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getMdFormat
@@ -205,7 +206,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
//接管类型选择
tvTakeOverType.setOnClickListener {
if(!hasLevel2){
ToastUtils.showShort("运营后台没有配置接管类型")
// ToastUtils.showShort("运营后台没有配置接管类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_cloud_not_take_over_type)
return@setOnClickListener
}
if(faultTypeSelectStatus){
@@ -238,7 +240,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
//接管原因选择
tvTakeOverReason.setOnClickListener {
if(tvTakeOverType.text.isEmpty()){
ToastUtils.showShort("请先选择接管类型")
// ToastUtils.showShort("请先选择接管类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_take_over_type)
return@setOnClickListener
}
if(faultReasonSelectStatus){
@@ -263,7 +266,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
if(hasFocus){
edit.hint = ""
}else{
edit.hint = "手动输入"
// edit.hint = "手动输入"
edit.hint = StringUtils.getString(R.string.module_core_manual_input)
}
}
etNoteInput.addTextChangedListener(object: TextWatcher{
@@ -299,11 +303,13 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
//保存
tvTakeOverSave.setOnClickListener{
if(level2Name.isEmpty()){
ToastUtils.showShort("请完整填写再保存")
// ToastUtils.showShort("请完整填写再保存")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_input_save)
return@setOnClickListener
}
if(hasLevel3 && level3Name.isEmpty()){
ToastUtils.showShort("请完整填写再保存")
// ToastUtils.showShort("请完整填写再保存")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_input_save)
return@setOnClickListener
}
mTakeOverRecordInfo.reportNote = etNoteInput.text.toString()
@@ -347,7 +353,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
//开始录音,展示放大缩小动效
@@ -372,7 +379,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -555,7 +563,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
hasLevel3 = false
}else{
hasLevel2 = false
ToastUtils.showShort("接管类型列表为空")
// ToastUtils.showShort("接管类型列表为空")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_take_over_type_list_empty)
}
}
}
@@ -563,7 +572,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
override fun getCategoriesError(msg: String) {
super.getCategoriesError(msg)
ToastUtils.showShort("接管列表获取失败:$msg")
// ToastUtils.showShort("接管列表获取失败:$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_take_over_type_list_get_error, msg)
}
/**

View File

@@ -101,7 +101,8 @@ class TakeOverRecordView @JvmOverloads constructor(
})
}
if(takeOverReasonWindow?.getWindowShowStatus() == true){
ToastUtils.showShort("接管原因弹窗已存在,请先编辑现有接管原因")
// ToastUtils.showShort("接管原因弹窗已存在,请先编辑现有接管原因")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_take_over_window_showing)
}else{
takeOverReasonWindow?.showFloatWindow(takeOverRecordInfo)
}
@@ -129,7 +130,8 @@ class TakeOverRecordView @JvmOverloads constructor(
tvUpload.setOnClickListener {
if (ClickUtils.isFastClick()){
if(selectedUploadRecord.isEmpty()){
ToastUtils.showShort("请选择需要上传的接管记录")
// ToastUtils.showShort("请选择需要上传的接管记录")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_take_over_info)
}else{
val recordIterator = selectedUploadRecord.iterator()
val padProblemList= ArrayList<PadTakeOverInfo>()
@@ -137,7 +139,8 @@ class TakeOverRecordView @JvmOverloads constructor(
val uploadRecord = recordIterator.next()
uploadRecord.let {
if(it.level1Id == 0 || it.level2Id == 0 || it.level3Id == 0){
ToastUtils.showShort("请编辑选中的接管记录")
// ToastUtils.showShort("请编辑选中的接管记录")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_edit_take_over_info)
return@setOnClickListener
}
val reason = if(it.reportNote.isEmpty()){
@@ -158,13 +161,15 @@ class TakeOverRecordView @JvmOverloads constructor(
CallerDevaToolsManager.takeOverPadAdd(padAddProblemReq)
}
} else {
ToastUtils.showShort("请勿快速点击")
// ToastUtils.showShort("请勿快速点击")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_dot_quick_click)
}
}
//删除
tvDeleteSelect.setOnClickListener {
if(selectedUploadRecord.isEmpty()){
ToastUtils.showShort("请选择需要删除的接管记录")
// ToastUtils.showShort("请选择需要删除的接管记录")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_del_take_over_info)
}else{
scope.launch(Dispatchers.IO){
CallerTakeOverRecordEventManager.invokeRemoveRecord(selectedUploadRecord)
@@ -227,7 +232,8 @@ class TakeOverRecordView @JvmOverloads constructor(
override fun problemPadAddSuccess() {
super.problemPadAddSuccess()
ToastUtils.showShort("接管记录上传成功")
// ToastUtils.showShort("接管记录上传成功")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_take_over_info_upload_success)
//更新记录状态并且刷新列表
ThreadUtils.runOnUiThread {
selectedUploadRecord.forEach {
@@ -243,7 +249,8 @@ class TakeOverRecordView @JvmOverloads constructor(
override fun problemPadAddError(msg: String) {
super.problemPadAddError(msg)
ToastUtils.showShort("接管记录上传失败$msg")
// ToastUtils.showShort("接管记录上传失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_take_over_info_upload_fail, msg)
}
}

View File

@@ -74,7 +74,8 @@ class TakeOverSceneWindow constructor(activity: Activity) {
//前一个场景
ivScenePrevious.setOnClickListener {
if(currentIndex == 0){
ToastUtils.showShort("没有上一个场景了")
// ToastUtils.showShort("没有上一个场景了")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_none_last_scene)
}else{
currentIndex = (currentIndex-1).coerceAtLeast(0)
vpSceneImage.currentItem = currentIndex
@@ -86,7 +87,8 @@ class TakeOverSceneWindow constructor(activity: Activity) {
currentIndex = (currentIndex + 1).coerceAtMost(2)
vpSceneImage.currentItem = currentIndex
}else{
ToastUtils.showShort("没有下一个场景了")
// ToastUtils.showShort("没有下一个场景了")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_none_last_scene)
}
}
}

View File

@@ -40,6 +40,7 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.JsonParser
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -143,22 +144,28 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
rgType.setOnCheckedChangeListener{_, checkedId ->
when(checkedId){
R.id.rb_type_software->{
workOrderType = "软件"
// workOrderType = "软件"
workOrderType = StringUtils.getString(R.string.module_core_software)
}
R.id.rb_type_kit->{
workOrderType = "套件"
// workOrderType = "套件"
workOrderType = StringUtils.getString(R.string.module_core_kit)
}
R.id.rb_type_vehicle->{
workOrderType = "车辆"
// workOrderType = "车辆"
workOrderType = StringUtils.getString(R.string.module_core_vehicle)
}
R.id.rb_type_capacity->{
workOrderType = "运力"
// workOrderType = "运力"
workOrderType = StringUtils.getString(R.string.module_core_capacity)
}
R.id.rb_type_environment->{
workOrderType = "环境"
// workOrderType = "环境"
workOrderType = StringUtils.getString(R.string.module_core_environment)
}
R.id.rb_type_other->{
workOrderType = "其他"
// workOrderType = "其他"
workOrderType = StringUtils.getString(R.string.module_core_other)
}
}
}
@@ -170,7 +177,8 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
}
ivTimeAdd.setOnClickListener {
if(workOrderOccurrenceTime + 60000 > System.currentTimeMillis()){
ToastUtils.showShort("发生时间应在当前时间之前")
// ToastUtils.showShort("发生时间应在当前时间之前")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_occurrence_time_should_be_before_current_time)
return@setOnClickListener
}
workOrderOccurrenceTime += 60000
@@ -182,7 +190,8 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
if(hasFocus){
edit.hint = ""
}else{
edit.hint = "手动输入"
// edit.hint = "手动输入"
edit.hint = StringUtils.getString(R.string.module_core_manual_input)
}
}
etDescribeInput.addTextChangedListener(object: TextWatcher{
@@ -209,11 +218,13 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
tvWorkOrderReport.setOnClickListener {
//工单问题类型必选,没有选择,进行提示
if(workOrderType.isEmpty()){
ToastUtils.showShort("请选择问题类型")
// ToastUtils.showShort("请选择问题类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_issue_type)
return@setOnClickListener
}
if(etDescribeInput.text.toString().isEmpty()){
ToastUtils.showShort("请填写问题描述")
// ToastUtils.showShort("请填写问题描述")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_issue_desc)
return@setOnClickListener
}
GlobalScope.launch(Dispatchers.IO){
@@ -254,7 +265,8 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
//开始录音,展示放大缩小动效
@@ -278,7 +290,8 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -386,12 +399,14 @@ class WorkOrderWindow constructor(activity: Activity) : View.OnTouchListener,
}
override fun workOrderReportSuccess() {
ToastUtils.showShort("工单上报成功")
// ToastUtils.showShort("工单上报成功")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_work_order_upload_success)
hideFloatWindow()
}
override fun workOrderReportError() {
ToastUtils.showShort("工单上报失败")
// ToastUtils.showShort("工单上报失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_work_order_upload_fail)
}
fun setClickListener(clickListener: ClickListener) {

View File

@@ -12,6 +12,7 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinSecondFormat
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -78,20 +79,23 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.Adapter<Ta
clickListener?.onSelectRecord(recordEntity,isChecked)
}
holder.ivCannotCheck.setOnClickListener {
ToastUtils.showShort("该条记录已上传,不可选择")
// ToastUtils.showShort("该条记录已上传,不可选择")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_uploaded_dot_choose)
}
holder.tvFaultStartTime.text = TimeUtils.millis2String(recordEntity.faultStartTime,getHourMinSecondFormat())
holder.tvLineName.text = recordEntity.lineName
if(recordEntity.reportNote.isEmpty() && recordEntity.level1Name.isEmpty()
&& recordEntity.level2Name.isEmpty() && recordEntity.level3Name.isEmpty()){
holder.tvTakeOverReason.text = "原因:空"
// holder.tvTakeOverReason.text = "原因:空"
holder.tvTakeOverReason.text = StringUtils.getString(R.string.module_core_cause, StringUtils.getString(R.string.module_core_empty))
}else{
val reason = if(recordEntity.reportNote.isEmpty()){
"${recordEntity.level1Name}-${recordEntity.level2Name}-${recordEntity.level3Name}"
}else{
"${recordEntity.level1Name}-${recordEntity.level2Name}-${recordEntity.level3Name}(${recordEntity.reportNote})"
}
holder.tvTakeOverReason.text = "原因:$reason"
// holder.tvTakeOverReason.text = "原因:$reason"
holder.tvTakeOverReason.text = StringUtils.getString(R.string.module_core_cause, reason)
}
if(recordEntity.reportStatus){
//已上报
@@ -110,7 +114,8 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.Adapter<Ta
}
holder.ivRecordStatusLabel.setOnClickListener {
if(recordEntity.reportStatus){
ToastUtils.showShort("此条记录已上传不可再次编辑")
// ToastUtils.showShort("此条记录已上传不可再次编辑")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_uploaded_dot_edit)
}else{
clickListener?.onEditRecord(recordEntity)
}

View File

@@ -5,6 +5,7 @@
android:layout_width="1110px"
android:layout_height="688px">
<!-- android:text="cos桶上传中"-->
<TextView
android:id="@+id/tvUploadTitle"
android:layout_width="wrap_content"
@@ -12,7 +13,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="cos桶上传中"
android:text="@string/module_core_cos_uploading"
android:textColor="#FFFFFFFF"
android:textSize="56px"
android:layout_marginTop="95px"
@@ -38,6 +39,7 @@
app:layout_constraintBottom_toTopOf="@id/viewVerticalLine"
/>
<!-- android:text="取消上传"-->
<TextView
android:id="@+id/tvCancelUpload"
android:layout_width="0dp"
@@ -46,12 +48,13 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@id/viewVerticalLine"
app:layout_constraintBottom_toBottomOf="parent"
android:text="取消上传"
android:text="@string/module_core_cancel_upload"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancel"
android:layout_width="0dp"
@@ -60,7 +63,7 @@
app:layout_constraintLeft_toRightOf="@id/viewVerticalLine"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"

View File

@@ -8,11 +8,12 @@
app:roundLayoutRadius="32dp"
>
<!-- android:text="case清单"-->
<TextView
android:id="@+id/tvCaseListTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="case清单"
android:text="@string/module_core_case_list"
android:textColor="#FFFFFFFF"
android:textSize="56dp"
android:gravity="center"
@@ -22,11 +23,12 @@
android:layout_marginTop="50dp"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="52dp"
app:layout_constraintLeft_toLeftOf="parent"

View File

@@ -37,7 +37,7 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@id/viewVerticalLine"
/>
<!-- android:text="保存"-->
<TextView
android:id="@+id/tvSave"
android:layout_width="0dp"
@@ -46,12 +46,13 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/viewVerticalLine"
android:text="保存"
android:text="@string/module_core_save"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancel"
android:layout_width="0dp"
@@ -60,7 +61,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toRightOf="@id/viewVerticalLine"
app:layout_constraintRight_toRightOf="parent"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"
@@ -90,6 +91,7 @@
android:layout_marginEnd="40px"
/>
<!-- android:hint="topic搜索"-->
<EditText
android:id="@+id/etSearch"
android:layout_width="0dp"
@@ -98,7 +100,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/ivSearch"
android:hint="topic搜索"
android:hint="@string/module_core_topic_search"
android:textSize="38px"
android:textColor="#FFFFFFFF"
android:textColorHint="#B3FFFFFF"

View File

@@ -5,6 +5,7 @@
android:layout_width="1110px"
android:layout_height="688px">
<!-- android:text="当前工控机磁盘空间已满"-->
<TextView
android:id="@+id/tvWarningTitle"
android:layout_width="wrap_content"
@@ -12,7 +13,7 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:text="当前工控机磁盘空间已满"
android:text="@string/module_core_ipc_disk_full"
android:textColor="#FFFFFFFF"
android:textSize="56px"
android:layout_marginTop="95px"
@@ -38,6 +39,7 @@
app:layout_constraintBottom_toTopOf="@id/viewVerticalLine"
/>
<!-- android:text="清理磁盘"-->
<TextView
android:id="@+id/tvCleanDisk"
android:layout_width="0dp"
@@ -46,12 +48,13 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@id/viewVerticalLine"
app:layout_constraintBottom_toBottomOf="parent"
android:text="清理磁盘"
android:text="@string/module_core_ipc_disk_clean"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancel"
android:layout_width="0dp"
@@ -60,7 +63,7 @@
app:layout_constraintLeft_toRightOf="@id/viewVerticalLine"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="52px"
android:gravity="center"

View File

@@ -66,7 +66,7 @@
android:layout_marginStart="@dimen/dp_20"
/>
<!-- android:text="已上报"-->
<TextView
android:id="@+id/tvBagReportStatus"
android:layout_width="162dp"
@@ -75,7 +75,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:text="已上报"
android:text="@string/module_core_reported"
android:textColor="#FFFFFFFF"
android:textSize="28dp"
android:gravity="center"

View File

@@ -122,6 +122,7 @@
android:gravity="center"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCancelSelect"
android:layout_width="200dp"
@@ -131,7 +132,7 @@
app:layout_constraintLeft_toRightOf="@id/tvSelectAll"
android:layout_marginStart="30dp"
android:background="@drawable/cancel_select_button_bg"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFFFF"
android:textSize="36dp"
android:gravity="center"

View File

@@ -104,6 +104,7 @@
</ScrollView>
<!-- android:text="上报"-->
<TextView
android:id="@+id/tvInitiativeReport"
android:layout_width="@dimen/dp_335"
@@ -112,13 +113,14 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@id/tvInitiativeCancel"
android:background="@drawable/bg_passive_report"
android:text="上报"
android:text="@string/module_core_report"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_100"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvInitiativeCancel"
android:layout_width="@dimen/dp_335"
@@ -126,7 +128,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="@id/viewInitiativeTitleBg"
app:layout_constraintLeft_toRightOf="@id/tvInitiativeReport"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="@color/white"
android:textSize="@dimen/sp_36"
android:gravity="center"

View File

@@ -106,6 +106,7 @@
</ScrollView>
<!-- android:text="上报"-->
<TextView
android:id="@+id/tvPassiveReport"
android:layout_width="@dimen/dp_335"
@@ -114,13 +115,14 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@id/tvPassiveCancel"
android:background="@drawable/bg_passive_report"
android:text="上报"
android:text="@string/module_core_report"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_100"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvPassiveCancel"
android:layout_width="@dimen/dp_335"
@@ -128,7 +130,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="@id/viewPassiveTitleBg"
app:layout_constraintLeft_toRightOf="@id/tvPassiveReport"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="@color/white"
android:textSize="@dimen/sp_36"
android:gravity="center"

View File

@@ -50,6 +50,7 @@
android:layout_margin="@dimen/dp_25"
/>
<!-- android:text="上报"-->
<TextView
android:id="@+id/tvCollectReport"
android:layout_width="270dp"
@@ -58,13 +59,14 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toLeftOf="@id/tvCollectCancel"
android:background="@drawable/report_button_bg"
android:text="上报"
android:text="@string/module_core_report"
android:textColor="#FFFFFF"
android:textSize="30dp"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_40"
/>
<!-- android:text="取消"-->
<TextView
android:id="@+id/tvCollectCancel"
android:layout_width="270dp"
@@ -72,7 +74,7 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toRightOf="@id/tvCollectReport"
android:text="取消"
android:text="@string/module_core_cancel"
android:textColor="#FFFFFF"
android:textSize="30dp"
android:gravity="center"

View File

@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="work_order_report_title">Issue Report</string>
<string name="work_order_type">Issue Type</string>
<string name="work_order_occurrence_time">Occurrence Time</string>
<string name="work_order_describe">Additional Description</string>
<string name="work_order_describe_input">Manual Input</string>
<string name="work_order_report">Report</string>
<string name="work_order_cancel">Cancel</string>
<string name="work_order_time">Time:</string>
<string name="work_order_type_software">Software</string>
<string name="work_order_type_kit">Kit</string>
<string name="work_order_type_vehicle">Vehicle</string>
<string name="work_order_type_capacity">Capacity</string>
<string name="work_order_type_environment">Environment</string>
<string name="work_order_type_other">Other</string>
<string name="exam_vehicle_control">Vehicle Control</string>
<string name="exam_vehicle_mode">Vehicle Mode</string>
<string name="exam_line_change">Obstacle</string>
<string name="exam_aeb">Braking</string>
<string name="exam_map_speed">Speed Limit</string>
<string name="exam_ramp">Roundabout</string>
<string name="exam_stop_yield">Stop</string>
<string name="exam_fault_alarm">Fault Alarm</string>
<string name="exam_fault_camera">Camera</string>
<string name="exam_fault_lidar">LiDAR</string>
<string name="exam_fault_radar">MmWave Radar</string>
<string name="exam_fault_wire">Drive-by-Wire</string>
<string name="exam_seat_status">Seat Status</string>
<string name="exam_line_to_left">Left Lane Change</string>
<string name="exam_line_to_right">Right Lane Change</string>
<string name="exam_pull_over">Pull Over</string>
<string name="exam_over_take">Overtake</string>
<string name="exam_take_over_request">Takeover Request</string>
<string name="exam_take_over_recover">Resume Autopilot</string>
<string name="exam_emergency_stop">Emergency Stop</string>
<string name="exam_cancel_autopilot">Exit Autopilot</string>
<string name="exam_close">Close Exam Vehicle Control</string>
<string name="identified_vehicle_malfunction">Vehicle Malfunction Detected (%ds)</string>
<string name="one_click_report">One-click Report</string>
<string name="report_type">Report Type</string>
<string name="report_type_fault">Fault</string>
<string name="report_type_take_over">Active Recording</string>
<string name="report_success">Report Submitted</string>
<string name="record_success">Recording Initiated</string>
<string name="take_over_record_close">Close Takeover Record Button</string>
<string name="take_over_record">Takeover Record</string>
<string name="take_over_record_upload">One-click Upload</string>
<string name="take_over_record_delete">Delete</string>
<string name="take_over_record_status_label">Takeover Record Status Label</string>
<string name="take_over_reason">Takeover Reason</string>
<string name="take_over_time">Time:</string>
<string name="take_over_type_select">Select Takeover Type</string>
<string name="take_over_type">Takeover Type</string>
<string name="fault_type">Fault Type</string>
<string name="fault_type_select">Select Fault Type</string>
<string name="fault_reason">Fault Reason</string>
<string name="fault_reason_select">Select Fault Reason</string>
<string name="fault_time">Occurrence Time</string>
<string name="fault_open_time">Time:</string>
<string name="fault_time_reduce">Adjust Time Backward</string>
<string name="fault_time_add">Adjust Time Forward</string>
<string name="fault_note">Additional Description</string>
<string name="fault_note_supplement">(Optional)</string>
<string name="take_over_note_input">Manual Input</string>
<string name="take_over_note_audio">Voice Input Description</string>
<string name="take_over_scene_image">Scene Image</string>
<string name="take_over_front_camera">Front 120° Camera</string>
<string name="take_over_rear_camera">Rear 120° Camera</string>
<string name="take_over_map_screen">HD Map Screenshot</string>
<string name="take_over_previous_scene">Previous Scene</string>
<string name="take_over_close_scene">Close Scene</string>
<string name="take_over_next_scene">Next Scene</string>
<string name="fault_report">Report</string>
<string name="take_over_save">Save</string>
<string name="take_over_cancel">Cancel</string>
<string name="take_over_record_no_data">No Data</string>
<string name="take_over_record_cannot_check">Cannot Select</string>
<string name="ai_collect_report_title">Report</string>
<string name="passive_title">Fault Feedback</string>
</resources>

View File

@@ -19,6 +19,7 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.SoundPoolUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo_core_function_devatools.status.StatusManager
import com.zhjt.mogo_core_function_devatools.status.entity.AcceleratorStatus
@@ -80,7 +81,8 @@ class StartAutoPilotStatusView @JvmOverloads constructor(
private fun initView() {
// 默认展示 FSM 情况未知的状态
handleFSM(FSMStatus(FSMStateCode.UnKnown, listOf("未知")))
// handleFSM(FSMStatus(FSMStateCode.UnKnown, listOf("未知")))
handleFSM(FSMStatus(FSMStateCode.UnKnown, listOf(StringUtils.getString(R.string.module_core_unknown))))
}
/**
@@ -293,7 +295,8 @@ class StartAutoPilotStatusView @JvmOverloads constructor(
*/
private fun handleFSMDemoMode() {
Logger.d(TAG, "--- handleFSMDemoMode ---")
handleFSM(FSMStatus(FSMStateCode.ExistNormal, listOf("正常")))
// handleFSM(FSMStatus(FSMStateCode.ExistNormal, listOf("正常")))
handleFSM(FSMStatus(FSMStateCode.ExistNormal, listOf(StringUtils.getString(R.string.module_core_normal))))
}
private fun notifyStatus(isError: Boolean) {

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.zhjt.mogo_core_function_devatools.status.StatusManager
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStateCode
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStatus
@@ -48,7 +49,8 @@ class FSMStatusDetailDialog(context: Context) : BaseFloatDialog(context, TAG),
}
fun setFsmErrorStatus(msgArray: List<String>) {
tvTitle?.text = "FSM异常"
// tvTitle?.text = "FSM异常"
tvTitle?.text = StringUtils.getString(R.string.module_core_fsm_error)
runCatching {
val c = Color.parseColor("#FF4E41")
tvTitle?.setTextColor(c)
@@ -60,16 +62,19 @@ class FSMStatusDetailDialog(context: Context) : BaseFloatDialog(context, TAG),
}
private fun setFsmNormalStatus() {
tvTitle?.text = "FSM正常"
// tvTitle?.text = "FSM正常"
tvTitle?.text = StringUtils.getString(R.string.module_core_fsm_normal)
runCatching {
val c = Color.parseColor("#26C14F")
tvTitle?.setTextColor(c)
}
addFsmMsgItemView(ArrayList<String>().also { it += "FSM异常状态已恢复" }, false)
// addFsmMsgItemView(ArrayList<String>().also { it += "FSM异常状态已恢复" }, false)
addFsmMsgItemView(ArrayList<String>().also { it += StringUtils.getString(R.string.module_core_fsm_error_recover) }, false)
}
private fun setFsmUnknownStatus() {
tvTitle?.text = "FSM状态未知"
// tvTitle?.text = "FSM状态未知"
tvTitle?.text = StringUtils.getString(R.string.module_core_fsm_error_unknown)
runCatching {
val c = Color.parseColor("#FFCD3D")
tvTitle?.setTextColor(c)
@@ -78,7 +83,8 @@ class FSMStatusDetailDialog(context: Context) : BaseFloatDialog(context, TAG),
}
private fun setFsmNotExistStatus() {
tvTitle?.text = "FSM不存在"
// tvTitle?.text = "FSM不存在"
tvTitle?.text = StringUtils.getString(R.string.module_core_fsm_not_exist)
runCatching {
val c = Color.parseColor("#FFFFFF")
tvTitle?.setTextColor(c)

View File

@@ -36,6 +36,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.MogoData
@@ -140,7 +141,8 @@ class CarInfoTabView @JvmOverloads constructor(
)
val provider = CallerDevaToolsManager.upgradeProvider()
if (provider?.isDownloading() == true) {
ToastUtils.showShort("正在下载最新版本,请稍候再试...")
// ToastUtils.showShort("正在下载最新版本,请稍候再试...")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_downloading_new_version)
return@setOnClickListener
}
CallerDevaToolsManager.queryAppUpgrade { upgradeStatus, errorInfo ->
@@ -168,7 +170,8 @@ class CarInfoTabView @JvmOverloads constructor(
CallerAutoPilotControlManager.sendOtaPadMsgQuery(query.toString())
CallerOTAManager.invokeOtaPadMsgQuery()
}else{
ToastUtils.showLong("当前SSM节点未成功启动或当前版本不支持OTA升级")
// ToastUtils.showLong("当前SSM节点未成功启动或当前版本不支持OTA升级")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_ssm_not_start)
}
}
@@ -385,16 +388,20 @@ class CarInfoTabView @JvmOverloads constructor(
leftTime = productInfo.optInt("left_time")//剩余时间,单位秒
}
val upgradeTime = if(leftTime > 60){
"预计部署过程用时${leftTime/60}分钟${leftTime%60}"
// "预计部署过程用时${leftTime/60}分钟${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used, leftTime / 60, leftTime % 60)
}else{
"预计部署过程用时${leftTime%60}"
// "预计部署过程用时${leftTime%60}秒"
StringUtils.getString(R.string.module_core_deployment_time_used1, leftTime % 60)
}
CallerHmiManager.showOTAUpgradeDialog(1,true,upgradeReason+upgradeTime)
}else{
ToastUtils.showLong("请结束订单后触发升级")
// ToastUtils.showLong("请结束订单后触发升级")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_stop_order_upgrade)
}
}else{
ToastUtils.showLong("暂无待升级任务!")
// ToastUtils.showLong("暂无待升级任务!")
ToastUtils.showLong(R.string.module_mogo_core_function_devatools_not_upgrade_task)
}
}

View File

@@ -42,6 +42,7 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.JsonParser
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
@@ -183,7 +184,8 @@ class FaultReasonView @JvmOverloads constructor(
//故障类型选择
tvFaultType.setOnClickListener {
if (!hasLevel2) {
ToastUtils.showShort("运营后台没有配置故障类型")
// ToastUtils.showShort("运营后台没有配置故障类型")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_operation_not_configured_fault_type)
return@setOnClickListener
}
if (faultTypeSelectStatus) {
@@ -223,11 +225,13 @@ class FaultReasonView @JvmOverloads constructor(
//故障原因选择
tvFaultReason.setOnClickListener {
if (tvFaultType.text.isEmpty()) {
ToastUtils.showShort("请先选择故障类型")
// ToastUtils.showShort("请先选择故障类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_operation_choose_fault_type)
return@setOnClickListener
}
if(!hasLevel3){
ToastUtils.showShort("后台未配置故障原因")
// ToastUtils.showShort("后台未配置故障原因")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_cloud_not_fault_cause)
return@setOnClickListener
}
@@ -257,7 +261,8 @@ class FaultReasonView @JvmOverloads constructor(
}
ivTimeAdd.setOnClickListener {
if (workOrderOccurrenceTime + 60000 > System.currentTimeMillis()) {
ToastUtils.showShort("发生时间应在当前时间之前")
// ToastUtils.showShort("发生时间应在当前时间之前")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_occurrence_time_should_be_before_current_time)
return@setOnClickListener
}
workOrderOccurrenceTime += 60000
@@ -271,7 +276,8 @@ class FaultReasonView @JvmOverloads constructor(
if (hasFocus) {
edit.hint = ""
} else {
edit.hint = "手动输入"
// edit.hint = "手动输入"
edit.hint = StringUtils.getString(R.string.module_core_manual_input)
}
}
etNoteInput.addTextChangedListener(object : TextWatcher {
@@ -312,11 +318,13 @@ class FaultReasonView @JvmOverloads constructor(
tvFaultReport.setOnClickListener {
if(ClickUtils.isFastClick()){
if (level2Name.isEmpty()) {
ToastUtils.showShort("请完整填写再上报")
// ToastUtils.showShort("请完整填写再上报")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_complete_submit_again)
return@setOnClickListener
}
if (hasLevel3 && level3Name.isEmpty()) {
ToastUtils.showShort("请完整填写再上报")
// ToastUtils.showShort("请完整填写再上报")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_complete_submit_again)
return@setOnClickListener
}
reportNote = etNoteInput.text.toString()
@@ -359,7 +367,8 @@ class FaultReasonView @JvmOverloads constructor(
val q = RegeocodeQuery(latLon, 200f, GeocodeSearch.AMAP)
geocodeSearch.getFromLocationAsyn(q)
}else{
ToastUtils.showShort("请勿连续上报,稍后再试")
// ToastUtils.showShort("请勿连续上报,稍后再试")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_dot_continuous_upload)
}
}
@@ -380,7 +389,8 @@ class FaultReasonView @JvmOverloads constructor(
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
//开始录音,展示放大缩小动效
@@ -405,7 +415,8 @@ class FaultReasonView @JvmOverloads constructor(
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -499,7 +510,9 @@ class FaultReasonView @JvmOverloads constructor(
override fun problemPadAddError(msg: String) {
super.problemPadAddError(msg)
ToastUtils.showShort("故障原因上报失败$msg")
// ToastUtils.showShort("故障原因上报失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cause_upload_fail, msg)
}
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
@@ -533,7 +546,8 @@ class FaultReasonView @JvmOverloads constructor(
hasLevel3 = false
} else {
hasLevel2 = false
ToastUtils.showShort("故障类型列表为空")
// ToastUtils.showShort("故障类型列表为空")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_type_list_empty)
}
}
}
@@ -542,7 +556,8 @@ class FaultReasonView @JvmOverloads constructor(
override fun getCategoriesError(msg: String) {
super.getCategoriesError(msg)
if(ProjectUtils.isSaas()){
ToastUtils.showShort("故障列表获取失败:$msg")
// ToastUtils.showShort("故障列表获取失败:$msg")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_fault_list_get_fail, msg)
}
}

View File

@@ -86,7 +86,8 @@ class ReportTypeView @JvmOverloads constructor(
//一键上报
ivOneClickReport.setOnClickListener {
if(!canOneReport){
ToastUtils.showShort("故障描述获取失败不能上报")
// ToastUtils.showShort("故障描述获取失败不能上报")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_fault_des_get_fail)
return@setOnClickListener
}
hasReportOperate = true
@@ -145,7 +146,8 @@ class ReportTypeView @JvmOverloads constructor(
clickListener?.closeReportView()
},1500)
}else{
ToastUtils.showShort("主动录包命令下发失败")
// ToastUtils.showShort("主动录包命令下发失败")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_initiative_record_bad_cmd_send_fail)
this@ReportTypeView.visibility = View.GONE
clickListener?.closeReportView()
}
@@ -236,7 +238,8 @@ class ReportTypeView @JvmOverloads constructor(
override fun problemPadAddError(msg: String) {
super.problemPadAddError(msg)
ToastUtils.showShort("故障原因上报失败$msg")
// ToastUtils.showShort("故障原因上报失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cause_upload_fail, msg)
ThreadUtils.runOnUiThread {
this.visibility = View.GONE
clickListener?.closeReportView()
@@ -246,7 +249,8 @@ class ReportTypeView @JvmOverloads constructor(
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
super.getCategoriesSuccess(list)
if(list.isEmpty()){
ToastUtils.showShort("一键上报故障描述后台未配置")
// ToastUtils.showShort("一键上报故障描述后台未配置")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_cloud_not_configured)
canOneReport = false
}else{
when (level) {
@@ -275,7 +279,8 @@ class ReportTypeView @JvmOverloads constructor(
override fun getCategoriesError(msg: String) {
super.getCategoriesError(msg)
ToastUtils.showShort("一键上报故障描述获取失败$msg")
// ToastUtils.showShort("一键上报故障描述获取失败$msg")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_fault_desc_get_fail, msg)
canOneReport = false
}

View File

@@ -34,6 +34,7 @@ import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.JsonParser
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
@@ -100,22 +101,28 @@ class WorkOrderView @JvmOverloads constructor(
wrap_radio_group.setOnCheckedChangeListener{_, checkedId ->
when(checkedId){
R.id.rb_type_software->{
workOrderType = "软件"
// workOrderType = "软件"
workOrderType = StringUtils.getString(R.string.module_core_software)
}
R.id.rb_type_kit->{
workOrderType = "套件"
// workOrderType = "套件"
workOrderType = StringUtils.getString(R.string.module_core_kit)
}
R.id.rb_type_vehicle->{
workOrderType = "车辆"
// workOrderType = "车辆"
workOrderType = StringUtils.getString(R.string.module_core_vehicle)
}
R.id.rb_type_capacity->{
workOrderType = "运力"
// workOrderType = "运力"
workOrderType = StringUtils.getString(R.string.module_core_capacity)
}
R.id.rb_type_environment->{
workOrderType = "环境"
// workOrderType = "环境"
workOrderType = StringUtils.getString(R.string.module_core_environment)
}
R.id.rb_type_other->{
workOrderType = "其他"
// workOrderType = "其他"
workOrderType = StringUtils.getString(R.string.module_core_other)
}
}
}
@@ -128,7 +135,8 @@ class WorkOrderView @JvmOverloads constructor(
}
iv_time_add.setOnClickListener {
if(workOrderOccurrenceTime + 60000 > System.currentTimeMillis()){
ToastUtils.showShort("发生时间应在当前时间之前")
// ToastUtils.showShort("发生时间应在当前时间之前")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_occurrence_time_should_be_before_current_time)
return@setOnClickListener
}
workOrderOccurrenceTime += 60000
@@ -140,7 +148,8 @@ class WorkOrderView @JvmOverloads constructor(
if(hasFocus){
edit.hint = ""
}else{
edit.hint = "手动输入"
// edit.hint = "手动输入"
edit.hint = StringUtils.getString(R.string.module_core_manual_input)
}
}
et_describe_input.addTextChangedListener(object: TextWatcher {
@@ -184,11 +193,13 @@ class WorkOrderView @JvmOverloads constructor(
if(ClickUtils.isFastClick()){
//工单问题类型必选,没有选择,进行提示
if(workOrderType.isEmpty()){
ToastUtils.showShort("请选择问题类型")
// ToastUtils.showShort("请选择问题类型")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_issue_type)
return@setOnClickListener
}
if(et_describe_input.text.toString().isEmpty()){
ToastUtils.showShort("请填写问题描述")
// ToastUtils.showShort("请填写问题描述")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_choose_issue_desc)
return@setOnClickListener
}
GlobalScope.launch(Dispatchers.IO){
@@ -212,7 +223,8 @@ class WorkOrderView @JvmOverloads constructor(
CallerDevaToolsManager.workOrderReport(workOrderReportInfo)
}
}else{
ToastUtils.showShort("请勿连续上报,稍后再试")
// ToastUtils.showShort("请勿连续上报,稍后再试")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_dot_continuous_upload)
}
}
@@ -234,7 +246,8 @@ class WorkOrderView @JvmOverloads constructor(
// 不显示听写对话框
ret = it.startListening(mRecognizerListener)
if (ret != ErrorCode.SUCCESS) {
ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
// ToastUtils.showShort("听写失败,错误码:$ret,请点击网址https://www.xfyun.cn/document/error-code查询解决方案")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_fail, ret)
}
}
//开始录音,展示放大缩小动效
@@ -258,7 +271,8 @@ class WorkOrderView @JvmOverloads constructor(
*/
private val mInitListener = InitListener { code ->
if (code != ErrorCode.SUCCESS) {
ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
// ToastUtils.showShort("讯飞语音听写初始化失败,错误码:$code")
ToastUtils.showShort(com.zhjt.mogo_core_function_devatools.R.string.module_mogo_core_function_devatools_iflytek_speech_recognizer_init_fail, code)
}
}
@@ -322,7 +336,8 @@ class WorkOrderView @JvmOverloads constructor(
}
override fun workOrderReportSuccess() {
ToastUtils.showShort("工单上报成功")
// ToastUtils.showShort("工单上报成功")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_work_order_upload_success)
ThreadUtils.runOnUiThread {
this@WorkOrderView.visibility = View.GONE
clickListener?.closeWorkOrderView()
@@ -330,7 +345,8 @@ class WorkOrderView @JvmOverloads constructor(
}
override fun workOrderReportError() {
ToastUtils.showShort("工单上报失败")
// ToastUtils.showShort("工单上报失败")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_work_order_upload_fail)
}
interface ClickListener{

View File

@@ -20,6 +20,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -182,12 +183,14 @@ class MsgBoxTabAdapter(private val activity: Activity) :
holder.tvBagReceiveTime.text =
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
holder.tvBagRecordTime.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
val msgBoxBean = it[position]
val recordBagMsg = msgBoxBean.bean as RecordBagMsg
holder.tvRecordCheck.setOnClickListener {
if(recordBagMsg.isShow){
ToastUtils.showShort("当前录包上报面板已打开,请勿重复操作")
// ToastUtils.showShort("当前录包上报面板已打开,请勿重复操作")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_bad_case_view_opened)
}else{
//打开被动录包弹窗
CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean, activity, false)
@@ -202,13 +205,16 @@ class MsgBoxTabAdapter(private val activity: Activity) :
val fmInfoMsg = it[position].bean as FMInfoMsg
//时间显示
holder.tvFmTime.text =
"时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
// "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
"${StringUtils.getString(R.string.module_core_time)}${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
//建议操作
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
//建议操作暂无
holder.tvFmAction.text = "建议操作:暂无"
// holder.tvFmAction.text = "建议操作:暂无"
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
//Title
holder.tvFmTitle.text = "暂无建议操作"
// holder.tvFmTitle.text = "暂无建议操作"
holder.tvFmTitle.text = StringUtils.getString(R.string.module_core_not_available_suggested_procedure)
}else{
val receiveFaultLevel = ArrayList<Int>()
fmInfoMsg.fmInfoList!!.forEach { info ->
@@ -224,7 +230,8 @@ class MsgBoxTabAdapter(private val activity: Activity) :
//对faultLevel集合进行排序按照顺序输出建议操作
if(receiveFaultLevel.size > 0){
val faultActionStr: StringBuilder = StringBuilder()
faultActionStr.append("建议操作:")
// faultActionStr.append("建议操作:")
faultActionStr.append(StringUtils.getString(R.string.module_core_suggested_procedure))
receiveFaultLevel.sort()
// receiveFaultLevel.reverse()
//Title
@@ -263,22 +270,27 @@ class MsgBoxTabAdapter(private val activity: Activity) :
}
holder.tvFmAction.text = faultActionStr.toString()
}else{
holder.tvFmAction.text = "建议操作:暂无"
// holder.tvFmAction.text = "建议操作:暂无"
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
}
}else{
holder.tvFmAction.text = "建议操作:暂无"
// holder.tvFmAction.text = "建议操作:暂无"
holder.tvFmAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
//轻度预警样式
holder.ivFmImage.setImageDrawable(getDrawable(R.drawable.icon_fm_mild_warning))
}
}
//故障策略
holder.tvFmFault.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
// holder.tvFmFault.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
holder.tvFmFault.text = "${StringUtils.getString(R.string.module_core_fault_handling_strategy)}${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
//故障原因
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
holder.tvFmReason.text = "故障原因:暂无"
// holder.tvFmReason.text = "故障原因:暂无"
holder.tvFmReason.text = StringUtils.getString(R.string.module_core_failure_cause_not_available)
}else{
val fmFaultReason = StringBuilder()
fmFaultReason.append("故障原因:")
// fmFaultReason.append("故障原因:")
fmFaultReason.append(StringUtils.getString(R.string.module_core_failure_cause))
for((index,info) in fmInfoMsg.fmInfoList!!.withIndex()){
fmFaultReason.append(info.faultName)
if(info.faultId.isNotBlank()){
@@ -294,10 +306,12 @@ class MsgBoxTabAdapter(private val activity: Activity) :
}
//故障后果
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
holder.tvFmResult.text = "故障后果:暂无"
// holder.tvFmResult.text = "故障后果:暂无"
holder.tvFmResult.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
}else{
val fmFaultResult = StringBuilder()
fmFaultResult.append("故障后果:")
// fmFaultResult.append("故障后果:")
fmFaultResult.append(StringUtils.getString(R.string.module_core_consequences_failure))
fmInfoMsg.fmInfoList!!.forEach { info->
if(info.faultResultCount != 0){
info.faultResultList.forEach { result->
@@ -318,17 +332,20 @@ class MsgBoxTabAdapter(private val activity: Activity) :
if(fmFaultResult.endsWith("/")){
holder.tvFmResult.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString()
}else{
holder.tvFmResult.text = "故障后果:暂无"
// holder.tvFmResult.text = "故障后果:暂无"
holder.tvFmResult.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
}
}
//对布局进行展开折叠操作
if(fmInfoMsg.isShow){
holder.tvFmShowStatus.text = "收起"
// holder.tvFmShowStatus.text = "收起"
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
holder.tvFmFault.visibility = View.VISIBLE
holder.tvFmReason.visibility = View.VISIBLE
holder.tvFmResult.visibility = View.VISIBLE
}else{
holder.tvFmShowStatus.text = "展开"
// holder.tvFmShowStatus.text = "展开"
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
holder.tvFmFault.visibility = View.GONE
holder.tvFmReason.visibility = View.GONE
holder.tvFmResult.visibility = View.GONE
@@ -336,13 +353,15 @@ class MsgBoxTabAdapter(private val activity: Activity) :
holder.tvFmShowStatus.setOnClickListener{
if(!fmInfoMsg.isShow){
fmInfoMsg.isShow = true
holder.tvFmShowStatus.text = "收起"
// holder.tvFmShowStatus.text = "收起"
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
holder.tvFmFault.visibility = View.VISIBLE
holder.tvFmReason.visibility = View.VISIBLE
holder.tvFmResult.visibility = View.VISIBLE
}else{
fmInfoMsg.isShow = false
holder.tvFmShowStatus.text = "展开"
// holder.tvFmShowStatus.text = "展开"
holder.tvFmShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
holder.tvFmFault.visibility = View.GONE
holder.tvFmReason.visibility = View.GONE
holder.tvFmResult.visibility = View.GONE
@@ -355,7 +374,8 @@ class MsgBoxTabAdapter(private val activity: Activity) :
data?.let { it ->
val reportMsgBox = it[position]
holder.tvReportTime.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
val reportEntity = (it[position].bean as ReportEntity)
if (reportEntity.resultList.contains(RESULT_AUTOPILOT_DISABLE)
|| reportEntity.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
@@ -378,29 +398,36 @@ class MsgBoxTabAdapter(private val activity: Activity) :
}
holder.tvReportTime.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
var resultStr = "类型:"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
// var resultStr = "类型:"
var resultStr = StringUtils.getString(R.string.module_core_type)
for (result in reportEntity.resultList) {
resultStr =
"${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
}
holder.tvReportType.text = resultStr
holder.tvReportReason.text = "原因:${reportEntity.msg}"
holder.tvReportSrc.text = "消息来源:${reportEntity.src}"
// holder.tvReportReason.text = "原因:${reportEntity.msg}"
holder.tvReportReason.text = "${StringUtils.getString(R.string.module_core_cause1)}${reportEntity.msg}"
// holder.tvReportSrc.text = "消息来源:${reportEntity.src}"
holder.tvReportSrc.text = "${StringUtils.getString(R.string.module_core_message_source)}${reportEntity.src}"
var actionStr = ""
for (action in reportEntity.actionsList) {
actionStr =
"${actionStr}${CallerAutoPilotControlManager.getReportActionDesc(action)}"
}
holder.tvReportAction.text = "建议操作:$actionStr"
// holder.tvReportAction.text = "建议操作:$actionStr"
holder.tvReportAction.text = "${StringUtils.getString(R.string.module_core_suggested_procedure)}$actionStr"
holder.tvReportShowStatus.tag = reportEntity
if(reportEntity.isShow){
holder.tvReportShowStatus.text = "收起"
// holder.tvReportShowStatus.text = "收起"
holder.tvReportShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
holder.tvReportReason.visibility = View.VISIBLE
holder.tvReportSrc.visibility = View.VISIBLE
holder.tvReportAction.visibility = View.VISIBLE
}else{
holder.tvReportShowStatus.text = "展开"
// holder.tvReportShowStatus.text = "展开"
holder.tvReportShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
holder.tvReportReason.visibility = View.GONE
holder.tvReportSrc.visibility = View.GONE
holder.tvReportAction.visibility = View.GONE
@@ -408,13 +435,15 @@ class MsgBoxTabAdapter(private val activity: Activity) :
holder.tvReportShowStatus.setOnClickListener {
if (!reportEntity.isShow) {
reportEntity.isShow = true
holder.tvReportShowStatus.text = "收起"
// holder.tvReportShowStatus.text = "收起"
holder.tvReportShowStatus.text = StringUtils.getString(R.string.module_core_pack_up)
holder.tvReportReason.visibility = View.VISIBLE
holder.tvReportSrc.visibility = View.VISIBLE
holder.tvReportAction.visibility = View.VISIBLE
} else {
reportEntity.isShow = false
holder.tvReportShowStatus.text = "展开"
// holder.tvReportShowStatus.text = "展开"
holder.tvReportShowStatus.text = StringUtils.getString(R.string.module_core_unfold)
holder.tvReportReason.visibility = View.GONE
holder.tvReportSrc.visibility = View.GONE
holder.tvReportAction.visibility = View.GONE
@@ -579,7 +608,8 @@ class MsgBoxTabAdapter(private val activity: Activity) :
holder.tvOTATitle.text = otaMsg.title
holder.tvOTAContent.text = otaMsg.des
holder.tvOTATime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat())
if(otaMsg.type == "成功"){
// if(otaMsg.type == "成功"){
if(otaMsg.type == StringUtils.getString(R.string.module_core_succeed)){
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_success))
}else{
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_fail))

View File

@@ -44,15 +44,18 @@ class ToolDriverRomaView @JvmOverloads constructor(
toolDriverRomaContainer.setOnClickListener {
if (ClickUtils.isClickTooFrequent(this, 2500)) {
ToastUtils.showShort("不要频繁点击哦~")
// ToastUtils.showShort("不要频繁点击哦~")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_dot_often_click)
return@setOnClickListener
}
if (!click) {
ToastUtils.showShort("漫游准备中,请等待")
// ToastUtils.showShort("漫游准备中,请等待")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_roam_starting)
return@setOnClickListener
}
if (!MogoStatusManager.getInstance().isSocketOnLine) {
ToastUtils.showShort("长链状态异常,请检查链接后开启漫游")
// ToastUtils.showShort("长链状态异常,请检查链接后开启漫游")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_long_connection_state_error)
return@setOnClickListener
}
click = false

View File

@@ -48,7 +48,8 @@ class ToolRestartSystemView @JvmOverloads constructor(
*/
private fun showRebootDialog() {
if (!connectStatus) {
ToastUtils.showShort("尚未连接工控机,无法重启系统")
// ToastUtils.showShort("尚未连接工控机,无法重启系统")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_not_sent_reboot_ipc)
return
}
//dialog
@@ -58,12 +59,14 @@ class ToolRestartSystemView @JvmOverloads constructor(
override fun confirm() {
if (CallerAutoPilotStatusListenerManager.getState() == 2) {
//当前处于自动驾驶状态不可进行重启Toast提示
ToastUtils.showShort("请先退出自动驾驶状态")
// ToastUtils.showShort("请先退出自动驾驶状态")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_please_exit_autopilot_state)
} else {
//确认重启
CallerLogger.d("$M_HMI$TAG", "reboot confirm")
CallerAutoPilotControlManager.sendIpcReboot()
ToastUtils.showLong("重启命令已发送")
// ToastUtils.showLong("重启命令已发送")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_send_reboot_success)
//打开冷启动页面
CallerHmiManager.showColdStartWindow()
}

View File

@@ -28,6 +28,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo.adas.common.MessageType
@@ -200,30 +201,36 @@ class ToolStopServiceView @JvmOverloads constructor(
*/
private fun powerOff() {
if (!connectStatus) {
ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
// ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_not_sent_shutdown_ipc)
return
}
if (AppConfigInfo.dockerVersion.isEmpty()) {
ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
// ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_not_sent_shutdown_ipc)
return
}
if (ParseVersionUtils.parseVersion(true, AppConfigInfo.dockerVersion) < 40100) {
ToastUtils.showShort("此域控版本不支持一键停服功能最低支持版本为4.1.0")
// ToastUtils.showShort("此域控版本不支持一键停服功能最低支持版本为4.1.0")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_ipc_version_nonsupport_shutdown_ipc)
return
}
if (CallerAutoPilotStatusListenerManager.getState() == 2) {
//当前处于自动驾驶状态不可进行重启Toast提示
ToastUtils.showShort("请先退出自动驾驶状态")
// ToastUtils.showShort("请先退出自动驾驶状态")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_please_exit_autopilot_state)
return
}
if (isExecutingPowerOff) {
//一键停服命令下发执行中
ToastUtils.showShort("一键停服命令下发中,请勿重复点击")
// ToastUtils.showShort("一键停服命令下发中,请勿重复点击")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_sending_shutdown_ipc)
return
}
if (isPowerOffCountDown) {
//系统停服中
ToastUtils.showShort("系统停服中,请勿重复点击")
// ToastUtils.showShort("系统停服中,请勿重复点击")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_shutdowning_ipc)
return
}
//将是否正在下发一键停服命令标签改为true
@@ -378,7 +385,8 @@ class ToolStopServiceView @JvmOverloads constructor(
if (receivedAck.status == ReceivedAck.Status.NORMAL) {
//一键停服命令回执成功则正常进入停服阶段中1分钟倒计时并且TTS和消息盒子提示
CallerDevaToolsManager.setPowerOffStatus(2)
AIAssist.getInstance(context).speakTTSVoice("请等待1分钟再执行车辆下电")
// AIAssist.getInstance(context).speakTTSVoice("请等待1分钟再执行车辆下电")
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_one_minute_later_power_off))
saveMsgBox(
MsgBoxBean(
MsgBoxType.V2X, V2XMsg(

View File

@@ -2,6 +2,8 @@ package com.mogo.eagle.core.function.hmi.notification
import android.content.Context
import android.util.Log
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.StringUtils
import java.util.concurrent.ConcurrentHashMap
/**
@@ -26,7 +28,8 @@ internal object WarningFloatWindowManager {
} else {
Log.w(TAG, "存在相同的tag延长弹窗时间")
// 存在相同的tag直接创建失败
config.callbacks?.createdResult(false, "存在相同的tag延长弹窗时间", null)
// config.callbacks?.createdResult(false, "存在相同的tag延长弹窗时间", null)
config.callbacks?.createdResult(false, StringUtils.getString(R.string.module_core_have_tag_lengthen_popup_window_time), null)
windowMap[config.floatTag!!]?.resetDownTime()
return false
}

View File

@@ -25,6 +25,7 @@ import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
@@ -51,11 +52,13 @@ class CameraListView : FrameLayout {
GSYVideoOptionBuilder()
}
private val spannableStringBuilder by lazy {
SpannableStringBuilder("当前设备暂无信号,切换其他摄像头 3S")
// SpannableStringBuilder("当前设备暂无信号,切换其他摄像头 3S")
SpannableStringBuilder(StringUtils.getString(R.string.module_core_no_signal_switch_camera))
}
private val spannableStringBuilder2 by lazy {
SpannableStringBuilder("当前路口信号丢失3S 后自动关闭")
// SpannableStringBuilder("当前路口信号丢失3S 后自动关闭")
SpannableStringBuilder(StringUtils.getString(R.string.module_core_alert_intersection_signal_lost_auto_close))
}
private var isCloseStatus = true

View File

@@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.diskcopy.adapter.DiskCopyCalendarAdapter
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import kotlinx.android.synthetic.main.view_disk_copy.view.groupDateSelect
@@ -98,30 +99,37 @@ class DiskCopyView @JvmOverloads constructor(
//开始拷贝数据
val result = CallerAutoPilotControlManager.sendCopyBagCopyDate(currentCopyDate)
if(result){
ToastUtils.showShort("已发起拷贝")
// ToastUtils.showShort("已发起拷贝")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_start_copy)
}else{
ToastUtils.showShort("拷贝命令发送失败")
// ToastUtils.showShort("拷贝命令发送失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_copy_cmd_error)
}
}
2 -> {
//拷贝中
ToastUtils.showShort("正在拷贝中...")
// ToastUtils.showShort("正在拷贝中...")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_copying)
}
3 -> {
//拷贝成功
ToastUtils.showShort("当前日期数据已拷贝成功")
// ToastUtils.showShort("当前日期数据已拷贝成功")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_now_date_copy_success)
}
4 -> {
//剩余空间不足
ToastUtils.showShort("当前硬盘剩余空间不足")
// ToastUtils.showShort("当前硬盘剩余空间不足")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_insufficient_disk_space)
}
5 -> {
//所选日期无法拷贝
ToastUtils.showShort("所选日期无法拷贝")
// ToastUtils.showShort("所选日期无法拷贝")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_choose_date_not_copy)
}
}
}else{
ToastUtils.showShort("请勿连续点击,稍后再试")
// ToastUtils.showShort("请勿连续点击,稍后再试")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_bad_case_do_no_click_continuously)
}
}
//拔出硬盘
@@ -134,13 +142,16 @@ class DiskCopyView @JvmOverloads constructor(
//如果处于未拷贝状态,则调用硬盘安全弹出请求
val result = CallerAutoPilotControlManager.sendCopyBagSafeUnmount()
if(result){
ToastUtils.showShort("硬盘安全弹出命令已发送")
// ToastUtils.showShort("硬盘安全弹出命令已发送")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_disk_safely_ejecting)
}else{
ToastUtils.showShort("硬盘安全弹出命令发送失败")
// ToastUtils.showShort("硬盘安全弹出命令发送失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_disk_safely_ejecting_fail)
}
}
}else{
ToastUtils.showShort("请勿连续点击,稍后再试")
// ToastUtils.showShort("请勿连续点击,稍后再试")
ToastUtils.showShort(R.string.module_mogo_core_function_devatools_bad_case_do_no_click_continuously)
}
}
@@ -148,7 +159,8 @@ class DiskCopyView @JvmOverloads constructor(
viewDiskCopyDate.setOnClickListener {
if(copyStatus == 2){
//数据拷贝中,不可再选择日期
ToastUtils.showShort("数据拷贝中,不可再次选择日期,请耐心等待")
// ToastUtils.showShort("数据拷贝中,不可再次选择日期,请耐心等待")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_data_copying)
}else{
//隐藏当前视图
pbDiskCopyProgress.visibility = View.GONE
@@ -163,52 +175,71 @@ class DiskCopyView @JvmOverloads constructor(
val formatIpc = SimpleDateFormat("yyyyMMdd", Locale.CHINA)
val formatUi = SimpleDateFormat("yyyy.MM.dd",Locale.CHINA)
//添加日历星期标题头
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
calendarList.add(CopyCalendarInfo(true,""))
// calendarList.add(CopyCalendarInfo(true,"日"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_sunday)))
// calendarList.add(CopyCalendarInfo(true,"一"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_monday)))
// calendarList.add(CopyCalendarInfo(true,"二"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_tuesday)))
// calendarList.add(CopyCalendarInfo(true,"三"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_wednesday)))
// calendarList.add(CopyCalendarInfo(true,"四"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_thursday)))
// calendarList.add(CopyCalendarInfo(true,"五"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_friday)))
// calendarList.add(CopyCalendarInfo(true,"六"))
calendarList.add(CopyCalendarInfo(true,StringUtils.getString(R.string.module_core_saturday)))
val calendar: Calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"))
val currentMonth = calendar.get(Calendar.MONTH)
tvCurrentMonth.text = when(currentMonth){
Calendar.JANUARY->{
"一月"
// "一月"
StringUtils.getString(R.string.module_core_january)
}
Calendar.FEBRUARY->{
"二月"
// "二月"
StringUtils.getString(R.string.module_core_february)
}
Calendar.MARCH->{
"三月"
// "三月"
StringUtils.getString(R.string.module_core_march)
}
Calendar.APRIL->{
"四月"
// "四月"
StringUtils.getString(R.string.module_core_april)
}
Calendar.MAY->{
"五月"
// "五月"
StringUtils.getString(R.string.module_core_may)
}
Calendar.JUNE->{
"六月"
// "六月"
StringUtils.getString(R.string.module_core_june)
}
Calendar.JULY->{
"七月"
// "七月"
StringUtils.getString(R.string.module_core_july)
}
Calendar.AUGUST->{
"八月"
// "八月"
StringUtils.getString(R.string.module_core_august)
}
Calendar.SEPTEMBER->{
"九月"
// "九月"
StringUtils.getString(R.string.module_core_september)
}
Calendar.OCTOBER->{
"十月"
// "十月"
StringUtils.getString(R.string.module_core_october)
}
Calendar.NOVEMBER->{
"十一月"
// "十一月"
StringUtils.getString(R.string.module_core_november)
}
Calendar.DECEMBER->{
"十二月"
// "十二月"
StringUtils.getString(R.string.module_core_december)
}
else -> {
""
@@ -380,31 +411,38 @@ class DiskCopyView @JvmOverloads constructor(
return when(currentWeek){
//星期日
Calendar.SUNDAY->{
"周日"
// "周日"
StringUtils.getString(R.string.module_core_sunday1)
}
//星期一
Calendar.MONDAY->{
"周一"
// "周一"
StringUtils.getString(R.string.module_core_monday1)
}
//星期二
Calendar.TUESDAY->{
"周二"
// "周二"
StringUtils.getString(R.string.module_core_tuesday1)
}
//星期三
Calendar.WEDNESDAY->{
"周三"
// "周三"
StringUtils.getString(R.string.module_core_wednesday1)
}
//星期四
Calendar.THURSDAY->{
"周四"
// "周四"
StringUtils.getString(R.string.module_core_thursday1)
}
//星期五
Calendar.FRIDAY->{
"周五"
// "周五"
StringUtils.getString(R.string.module_core_friday1)
}
//星期六
Calendar.SATURDAY->{
"周六"
// "周六"
StringUtils.getString(R.string.module_core_saturday1)
}
else->{
""
@@ -556,7 +594,8 @@ class DiskCopyView @JvmOverloads constructor(
//硬盘是否已安全弹出,是-True,否-False
Logger.i(TAG,"硬盘是否已安全弹出,是-True,否-False="+diskCopy.diskUnmount)
if(diskCopy.diskUnmount){
ToastUtils.showShort("硬盘已安全弹出")
// ToastUtils.showShort("硬盘已安全弹出")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_disk_safely_ejecting)
//隐藏数据落盘辅助工具视图
this@DiskCopyView.visibility = View.GONE
}

View File

@@ -30,9 +30,11 @@ class TerminateCopyDataDialog(context: Context) :
tvCopyTerminateConfirm.setOnClickListener {
val result = CallerAutoPilotControlManager.sendCopyBagAbortCopy()
if(result){
ToastUtils.showShort("终止数据拷贝命令已发送")
// ToastUtils.showShort("终止数据拷贝命令已发送")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_stop_copy)
}else{
ToastUtils.showShort("终止数据拷贝命令发送失败")
// ToastUtils.showShort("终止数据拷贝命令发送失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_stop_copy_fail)
}
dismiss()
}

View File

@@ -13,6 +13,7 @@ import com.mogo.eagle.core.function.api.autopilot.*
import com.mogo.eagle.core.function.api.lookaround.data.*
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.function.call.devatools.*
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.kotlin.*
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
@@ -299,7 +300,8 @@ class M1LookAroundView: SurfaceView, SurfaceHolder.Callback, Runnable, IMoGoChas
delay(5000)
val d = data
if (d == null || !d.isValid()) {
Toast.makeText(Utils.getApp(), "当前MAP版本不支持360环视请升级MAP版本", Toast.LENGTH_SHORT).show()
// Toast.makeText(Utils.getApp(), "当前MAP版本不支持360环视请升级MAP版本", Toast.LENGTH_SHORT).show()
Toast.makeText(Utils.getApp(), R.string.module_core_ipc_version_nonsupport_360_look_around, Toast.LENGTH_SHORT).show()
}
}
}

View File

@@ -91,7 +91,8 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta
return
}
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
// ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_ipc_disconnect_not_use_mofang)
return
}
if (keyCode == KeyEvent.KEYCODE_A) {
@@ -169,7 +170,8 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta
return
}
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
// ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_ipc_disconnect_not_use_mofang)
return
}
if (keyCode == KeyEvent.KEYCODE_A) {
@@ -218,7 +220,8 @@ class MoFangStatusView : LinearLayout, OnMoFangStatusListener, IMoGoAutopilotSta
return
}
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
// ToastUtils.showShort("工控机连接异常,无法执行魔方命令")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_ipc_disconnect_not_use_mofang)
return
}
if (keyCodes.size != 2) {

View File

@@ -37,6 +37,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.DriverMsgBoxBubbleAdapter
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
import com.mogo.eagle.core.utilcode.util.SoundPoolUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo.adas.data.AdasConstants
import com.zhjt.mogo.adas.data.AdasConstants.NodeState
@@ -219,7 +220,8 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
CallerHmiManager.warningV2X(
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
EventTypeEnumNew.TAKE_OVER_EVENT.content,
"识别车辆故障,建议安全停车并查看操作建议",
// "识别车辆故障,建议安全停车并查看操作建议",
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
object : IMoGoWarningStatusListener {
override fun onShow() {
CallerTakeOverManager.invokeTakeOverEvent(true)
@@ -236,7 +238,8 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
//二级
MsgFmData.LEVEL_TWO->{
//语音提示
AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
// AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
//展示消息盒子消息
showData(msgBoxBean)
}

View File

@@ -35,6 +35,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.MsgBoxToastAdapter
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
import com.mogo.eagle.core.utilcode.util.SoundPoolUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import kotlinx.android.synthetic.main.layout_msg_box_bubble.view.llMsgBubbleLayout
import kotlinx.android.synthetic.main.layout_msg_box_bubble.view.rvBubbleList
@@ -210,7 +211,8 @@ class MsgBoxToastView @JvmOverloads constructor(
CallerHmiManager.warningV2X(
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
EventTypeEnumNew.TAKE_OVER_EVENT.content,
"识别车辆故障,建议安全停车并查看操作建议",
// "识别车辆故障,建议安全停车并查看操作建议",
StringUtils.getString(R.string.module_core_warning_vehicle_fault_safe_park),
object : IMoGoWarningStatusListener {
override fun onShow() {
CallerTakeOverManager.invokeTakeOverEvent(true)
@@ -227,7 +229,8 @@ class MsgBoxToastView @JvmOverloads constructor(
//二级
MsgFmData.LEVEL_TWO->{
//语音提示
AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
// AIAssist.getInstance(context).speakTTSVoice("识别车辆异常,建议尽快安全停车,查看操作建议")
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_warning_vehicle_abnormal_safe_park))
//展示消息盒子消息
showData(msgBoxBean)
}

View File

@@ -22,6 +22,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
import com.mogo.eagle.core.widget.RoundCanClickConstraintLayout
@@ -176,9 +177,11 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
data?.let {
val msgBoxBean = it[position].msgBoxBean
val reportEntity = msgBoxBean.bean as ReportEntity
holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
// holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
holder.tvBubbleReportTime.text = "${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
holder.tvBubbleReceiveTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
var resultStr = "类型:"
// var resultStr = "类型:"
var resultStr = StringUtils.getString(R.string.module_core_type)
for (result in reportEntity.resultList){
resultStr = "${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
}
@@ -274,7 +277,8 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
holder.tvBubbleFmTime.text = TimeUtils.millis2String(fmMsg.policyTime!!,getHourMinFormat())
}
if(fmMsg.fmInfoList?.size == 0){
holder.tvBubbleFmFaultAction.text = "建议操作:暂无"
// holder.tvBubbleFmFaultAction.text = "建议操作:暂无"
holder.tvBubbleFmFaultAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
holder.tvBubbleFmFault.text = MsgFmData.getFmPolicyName(fmMsg.policyCode)
}else{
var curFaultLevel = 5 //默认级别遍历数组找出级别最高的level数越小级别越高
@@ -293,7 +297,8 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
//当出现多个建议操作时,按照整车下电重启、请求人工驾驶接管、请求平行驾驶接管、系统重启、联系硬件工程师、
// 联系运维工程师、联系软件工程师优先级递减的顺序,只展示最高优先级的内容
if(curFaultLevel == 5){
holder.tvBubbleFmFaultAction.text = "建议操作:暂无"
// holder.tvBubbleFmFaultAction.text = "建议操作:暂无"
holder.tvBubbleFmFaultAction.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
}else{
holder.tvBubbleFmFaultAction.text = "${faultAction}(${MsgFmData.FaultAction.getFaultActionCode(curFaultLevel)})"
}
@@ -359,7 +364,8 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A
holder.tvOTATitle.text = otaMsg.title
holder.tvOTAContent.text = otaMsg.des
holder.tvOTATime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
if(otaMsg.type == "成功"){
// if(otaMsg.type == "成功"){
if(otaMsg.type == StringUtils.getString(R.string.module_core_succeed)){
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_success))
}else{
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_fail))

View File

@@ -21,6 +21,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -172,12 +173,14 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
holder.tvBagReceiveTime.text =
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
holder.tvBagRecordTime.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
val msgBoxBean = it[position]
val recordBagMsg = msgBoxBean.bean as RecordBagMsg
holder.tvRecordCheck.setOnClickListener {
if(recordBagMsg.isShow){
ToastUtils.showShort("当前录包上报面板已打开,请勿重复操作")
// ToastUtils.showShort("当前录包上报面板已打开,请勿重复操作")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_bad_case_view_opened)
}else{
//打开被动录包弹窗
CallerDevaToolsManager.onReceiveBadCaseRecord(msgBoxBean, activity, false)
@@ -192,19 +195,25 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
val fmInfoMsg = it[position].bean as FMInfoMsg
//时间显示
holder.tvFmTimeOpen.text =
"时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
// "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
"${StringUtils.getString(R.string.module_core_time)}${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
holder.tvFmTimeNormal.text =
"时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
// "时间:${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
"${StringUtils.getString(R.string.module_core_time)}${fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1) }}"
holder.tvFmTime.text =
fmInfoMsg.policyTime?.let { it1 -> TimeUtils.millis2String(it1,getHourMinFormat()) }
//建议操作
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
//建议操作暂无
holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionNormal.text = "建议操作:暂无"
// holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionOpen.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
// holder.tvFmActionNormal.text = "建议操作:暂无"
holder.tvFmActionNormal.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
//Title
holder.tvFmTitleNormal.text = "暂无建议操作"
holder.tvFmTitleOpen.text = "暂无建议操作"
// holder.tvFmTitleNormal.text = "暂无建议操作"
holder.tvFmTitleNormal.text = StringUtils.getString(R.string.module_core_not_available_suggested_procedure)
// holder.tvFmTitleOpen.text = "暂无建议操作"
holder.tvFmTitleOpen.text = StringUtils.getString(R.string.module_core_not_available_suggested_procedure)
}else{
val receiveFaultLevel = ArrayList<Int>()
fmInfoMsg.fmInfoList!!.forEach { info ->
@@ -220,7 +229,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
//对faultLevel集合进行排序按照顺序输出建议操作
if(receiveFaultLevel.size > 0){
val faultActionStr: StringBuilder = StringBuilder()
faultActionStr.append("建议操作:")
// faultActionStr.append("建议操作:")
faultActionStr.append(StringUtils.getString(R.string.module_core_suggested_procedure))
receiveFaultLevel.sort()
// receiveFaultLevel.reverse()
//Title
@@ -264,25 +274,32 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
holder.tvFmActionOpen.text = faultActionStr.toString()
holder.tvFmActionNormal.text = faultActionStr.toString()
}else{
holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionNormal.text = "建议操作:暂无"
// holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionOpen.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
// holder.tvFmActionNormal.text = "建议操作:暂无"
holder.tvFmActionNormal.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
}
}else{
holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionNormal.text = "建议操作:暂无"
// holder.tvFmActionOpen.text = "建议操作:暂无"
holder.tvFmActionOpen.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
// holder.tvFmActionNormal.text = "建议操作:暂无"
holder.tvFmActionNormal.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
//轻度预警样式
holder.ivFmImageNormal.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_normal))
holder.ivFmImageOpen.setImageDrawable(getDrawable(R.drawable.icon_fm_warning_open))
}
}
//故障策略
holder.tvFmFaultOpen.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
// holder.tvFmFaultOpen.text = "故障策略:${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
holder.tvFmFaultOpen.text = "${StringUtils.getString(R.string.module_core_fault_handling_strategy)}${MsgFmData.getFmPolicyName(fmInfoMsg.policyCode)}(${fmInfoMsg.policyCode})"
//故障原因
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
holder.tvFmReasonOpen.text = "故障原因:暂无"
// holder.tvFmReasonOpen.text = "故障原因:暂无"
holder.tvFmReasonOpen.text = StringUtils.getString(R.string.module_core_failure_cause_not_available)
}else{
val fmFaultReason = StringBuilder()
fmFaultReason.append("故障原因:")
// fmFaultReason.append("故障原因:")
fmFaultReason.append(StringUtils.getString(R.string.module_core_failure_cause))
for((index,info) in fmInfoMsg.fmInfoList!!.withIndex()){
fmFaultReason.append(info.faultName)
if(info.faultId.isNotBlank()){
@@ -298,10 +315,12 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
}
//故障后果
if(fmInfoMsg.fmInfoList.isNullOrEmpty()){
holder.tvFmResultOpen.text = "故障后果:暂无"
// holder.tvFmResultOpen.text = "故障后果:暂无"
holder.tvFmResultOpen.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
}else{
val fmFaultResult = StringBuilder()
fmFaultResult.append("故障后果:")
// fmFaultResult.append("故障后果:")
fmFaultResult.append(StringUtils.getString(R.string.module_core_consequences_failure))
fmInfoMsg.fmInfoList!!.forEach { info->
if(info.faultResultCount != 0){
info.faultResultList.forEach { result->
@@ -322,7 +341,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
if(fmFaultResult.endsWith("/")){
holder.tvFmResultOpen.text = fmFaultResult.deleteCharAt(fmFaultResult.lastIndex).toString()
}else{
holder.tvFmResultOpen.text = "故障后果:暂无"
// holder.tvFmResultOpen.text = "故障后果:暂无"
holder.tvFmResultOpen.text = StringUtils.getString(R.string.module_core_consequences_failure_not_available)
}
}
//对布局进行展开折叠操作
@@ -333,7 +353,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvFmStatusSelect.text = "折叠"
// holder.tvFmStatusSelect.text = "折叠"
holder.tvFmStatusSelect.text = StringUtils.getString(R.string.module_core_fold)
holder.ivFmImageNormal.visibility = View.GONE
holder.tvFmTitleNormal.visibility = View.GONE
holder.tvFmTimeNormal.visibility = View.GONE
@@ -352,7 +373,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvFmStatusSelect.text = "展开"
// holder.tvFmStatusSelect.text = "展开"
holder.tvFmStatusSelect.text = StringUtils.getString(R.string.module_core_unfold)
holder.ivFmImageNormal.visibility = View.VISIBLE
holder.tvFmTitleNormal.visibility = View.VISIBLE
holder.tvFmTimeNormal.visibility = View.VISIBLE
@@ -374,7 +396,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvFmStatusSelect.text = "折叠"
// holder.tvFmStatusSelect.text = "折叠"
holder.tvFmStatusSelect.text = StringUtils.getString(R.string.module_core_fold)
holder.ivFmImageNormal.visibility = View.GONE
holder.tvFmTitleNormal.visibility = View.GONE
holder.tvFmTimeNormal.visibility = View.GONE
@@ -394,7 +417,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvFmStatusSelect.text = "展开"
// holder.tvFmStatusSelect.text = "展开"
holder.tvFmStatusSelect.text = StringUtils.getString(R.string.module_core_unfold)
holder.ivFmImageNormal.visibility = View.VISIBLE
holder.tvFmTitleNormal.visibility = View.VISIBLE
holder.tvFmTimeNormal.visibility = View.VISIBLE
@@ -415,9 +439,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
data?.let { it ->
val reportMsgBox = it[position]
holder.tvReportTimeNormal.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
holder.tvReportTimeOpen.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
val reportEntity = (it[position].bean as ReportEntity)
if (reportEntity.resultList.contains(RESULT_AUTOPILOT_DISABLE)
|| reportEntity.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
@@ -446,26 +472,32 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
}
holder.tvReportTimeNormal.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
holder.tvReportTimeOpen.text =
"时间:${TimeUtils.millis2String(it[position].timestamp)}"
// "时间:${TimeUtils.millis2String(it[position].timestamp)}"
"${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].timestamp)}"
holder.tvReportTime.text =
TimeUtils.millis2String(it[position].timestamp, getHourMinFormat())
var resultStr = "类型:"
// var resultStr = "类型:"
var resultStr = StringUtils.getString(R.string.module_core_type)
for (result in reportEntity.resultList) {
resultStr =
"${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
}
holder.tvReportTypeNormal.text = resultStr
holder.tvReportTypeOpen.text = resultStr
holder.tvReportReasonOpen.text = "原因:${reportEntity.msg}"
holder.tvReportSrcOpen.text = "消息来源:${reportEntity.src}"
// holder.tvReportReasonOpen.text = "原因:${reportEntity.msg}"
holder.tvReportReasonOpen.text = "${StringUtils.getString(R.string.module_core_cause1)}${reportEntity.msg}"
// holder.tvReportSrcOpen.text = "消息来源:${reportEntity.src}"
holder.tvReportSrcOpen.text = "${StringUtils.getString(R.string.module_core_message_source)}${reportEntity.src}"
var actionStr = ""
for (action in reportEntity.actionsList) {
actionStr =
"${actionStr}${CallerAutoPilotControlManager.getReportActionDesc(action)}"
}
holder.tvReportActionOpen.text = "建议操作:$actionStr"
// holder.tvReportActionOpen.text = "建议操作:$actionStr"
holder.tvReportActionOpen.text = "${StringUtils.getString(R.string.module_core_suggested_procedure)}$actionStr"
holder.tvStatusSelect.tag = reportEntity
if(reportEntity.isShow){
holder.tvStatusSelect.setCompoundDrawablesWithIntrinsicBounds(
@@ -474,7 +506,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvStatusSelect.text = "折叠"
// holder.tvStatusSelect.text = "折叠"
holder.tvStatusSelect.text = StringUtils.getString(R.string.module_core_fold)
holder.ivReportImageNormal.visibility = View.GONE
holder.tvReportLevelNormal.visibility = View.GONE
holder.tvReportTimeNormal.visibility = View.GONE
@@ -494,7 +527,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvStatusSelect.text = "展开"
// holder.tvStatusSelect.text = "展开"
holder.tvStatusSelect.text = StringUtils.getString(R.string.module_core_unfold)
holder.ivReportImageNormal.visibility = View.VISIBLE
holder.tvReportLevelNormal.visibility = View.VISIBLE
holder.tvReportTimeNormal.visibility = View.VISIBLE
@@ -517,7 +551,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvStatusSelect.text = "折叠"
// holder.tvStatusSelect.text = "折叠"
holder.tvStatusSelect.text = StringUtils.getString(R.string.module_core_fold)
holder.ivReportImageNormal.visibility = View.GONE
holder.tvReportLevelNormal.visibility = View.GONE
holder.tvReportTimeNormal.visibility = View.GONE
@@ -538,7 +573,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvStatusSelect.text = "展开"
// holder.tvStatusSelect.text = "展开"
holder.tvStatusSelect.text = StringUtils.getString(R.string.module_core_unfold)
holder.ivReportImageNormal.visibility = View.VISIBLE
holder.tvReportLevelNormal.visibility = View.VISIBLE
holder.tvReportTimeNormal.visibility = View.VISIBLE
@@ -576,7 +612,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvOperationStatusSelect.text = "折叠"
// holder.tvOperationStatusSelect.text = "折叠"
holder.tvOperationStatusSelect.text = StringUtils.getString(R.string.module_core_fold)
holder.ivOperationImageNormal.visibility = View.GONE
holder.tvOperationTitleNormal.visibility = View.GONE
holder.tvOperationContentNormal.visibility = View.GONE
@@ -591,7 +628,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
null,
null
)
holder.tvOperationStatusSelect.text = "展开"
// holder.tvOperationStatusSelect.text = "展开"
holder.tvOperationStatusSelect.text = StringUtils.getString(R.string.module_core_unfold)
holder.ivOperationImageNormal.visibility = View.VISIBLE
holder.tvOperationTitleNormal.visibility = View.VISIBLE
holder.tvOperationContentNormal.visibility = View.VISIBLE
@@ -745,7 +783,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) :
holder.tvOTATitle.text = otaMsg.title
holder.tvOTAContent.text = otaMsg.des
holder.tvOTATime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat())
if(otaMsg.type == "成功"){
// if(otaMsg.type == "成功"){
if(otaMsg.type == StringUtils.getString(R.string.module_core_succeed)){
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_success))
}else{
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_fail))

View File

@@ -37,6 +37,7 @@ import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
import com.mogo.eagle.core.widget.RoundCanClickConstraintLayout
@@ -101,9 +102,11 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
data?.let {
val msgBoxBean = it[position].msgBoxBean
val reportEntity = msgBoxBean.bean as ReportEntity
holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
// holder.tvBubbleReportTime.text = "时间:${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
holder.tvBubbleReportTime.text = "${StringUtils.getString(R.string.module_core_time)}${TimeUtils.millis2String(it[position].msgBoxBean.timestamp)}"
holder.tvBubbleReceiveTime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat())
var resultStr = "类型:"
// var resultStr = "类型:"
var resultStr = StringUtils.getString(R.string.module_core_type)
for (result in reportEntity.resultList){
resultStr = "${resultStr}${CallerAutoPilotControlManager.getReportResultDesc(result)}"
}
@@ -176,7 +179,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
val otaMsg = it[position].msgBoxBean.bean as OTAMsg
holder.tvOTATitle.text = otaMsg.title
holder.tvOTAContent.text = otaMsg.des
if(otaMsg.type == "成功"){
// if(otaMsg.type == "成功"){
if(otaMsg.type == StringUtils.getString(R.string.module_core_succeed)){
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_success))
}else{
holder.ivOTAImage.setImageDrawable(getDrawable(R.drawable.icon_ota_msg_fail))
@@ -230,7 +234,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
//FM信息
val fmMsg = it[position].msgBoxBean.bean as FMInfoMsg
if(fmMsg.fmInfoList?.size == 0){
holder.tvV2XContent.text = "建议操作:暂无"
// holder.tvV2XContent.text = "建议操作:暂无"
holder.tvV2XContent.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
holder.tvV2XTitle.text = MsgFmData.getFmPolicyName(fmMsg.policyCode)
}else{
var curFaultLevel = 5 //默认级别遍历数组找出级别最高的level数越小级别越高
@@ -249,7 +254,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
//当出现多个建议操作时,按照整车下电重启、请求人工驾驶接管、请求平行驾驶接管、系统重启、联系硬件工程师、
// 联系运维工程师、联系软件工程师优先级递减的顺序,只展示最高优先级的内容
if(curFaultLevel == 5){
holder.tvV2XContent.text = "建议操作:暂无"
// holder.tvV2XContent.text = "建议操作:暂无"
holder.tvV2XContent.text = StringUtils.getString(R.string.module_core_suggested_procedure_not_available)
}else{
holder.tvV2XContent.text = "${faultAction}(${MsgFmData.FaultAction.getFaultActionCode(curFaultLevel)})"
}
@@ -286,7 +292,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
when(operationMsg.type){
0->{
//运营平台还车通知
holder.tvV2XTitle.text = "还车通知"
// holder.tvV2XTitle.text = "还车通知"
holder.tvV2XTitle.text = StringUtils.getString(R.string.module_core_vehicle_return_notice)
holder.ivV2XImage.setImageDrawable(
ContextCompat.getDrawable(
activity,
@@ -295,7 +302,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
}
1->{
//运营平台靠边停车
holder.tvV2XTitle.text = "运营平台"
// holder.tvV2XTitle.text = "运营平台"
holder.tvV2XTitle.text = StringUtils.getString(R.string.module_core_operation_platform)
holder.ivV2XImage.setImageDrawable(
ContextCompat.getDrawable(
activity,
@@ -304,7 +312,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
}
3->{
//车门开启关闭失败
holder.tvV2XTitle.text = "运营平台"
// holder.tvV2XTitle.text = "运营平台"
holder.tvV2XTitle.text = StringUtils.getString(R.string.module_core_operation_platform)
holder.ivV2XImage.setImageDrawable(
ContextCompat.getDrawable(
activity,
@@ -313,7 +322,8 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter<
}
else->{
//普通运营平台
holder.tvV2XTitle.text = "运营平台"
// holder.tvV2XTitle.text = "运营平台"
holder.tvV2XTitle.text = StringUtils.getString(R.string.module_core_operation_platform)
holder.ivV2XImage.setImageDrawable(
ContextCompat.getDrawable(
activity,

View File

@@ -12,6 +12,7 @@ import androidx.annotation.NonNull;
import com.mogo.eagle.core.data.biz.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.util.StringUtils;
public class DispatchCarsDialog extends DispatchBaseDialog {
@@ -99,8 +100,10 @@ public class DispatchCarsDialog extends DispatchBaseDialog {
show();
if(dispatchContent.getType() == 2){
//取消调度
tvAdasDispatchTitle.setText("调度取消确认");
tvAdasDispatchRemindContent.setText("车辆将取消到以下位置的自动驾驶");
// tvAdasDispatchTitle.setText("调度取消确认");
tvAdasDispatchTitle.setText(StringUtils.getString(R.string.module_core_scheduling_cancellation_confirmation));
// tvAdasDispatchRemindContent.setText("车辆将取消到以下位置的自动驾驶");
tvAdasDispatchRemindContent.setText(StringUtils.getString(R.string.module_core_vehicle_cancel_autopilot_target_location));
}
dispatchType = dispatchContent.getType();
handler.sendEmptyMessage(MSG_TYPE_TIMER);

View File

@@ -10,6 +10,8 @@ import android.content.Context;
import com.mogo.commons.voice.AIAssist;
import com.mogo.eagle.core.data.biz.dispatch.DispatchAdasAutoPilotLocReceiverBean;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.utilcode.util.StringUtils;
public class DispatchDialogManager {
@@ -108,7 +110,8 @@ public class DispatchDialogManager {
}
private void voice() {
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("请立即停车!请立即停车!",AIAssist.LEVEL0);
// AIAssist.getInstance(mContext).speakTTSVoiceWithLevel("请立即停车!请立即停车!",AIAssist.LEVEL0);
AIAssist.getInstance(mContext).speakTTSVoiceWithLevel(StringUtils.getString(R.string.module_core_immediate_stop_vehicle),AIAssist.LEVEL0);
}
public void releaseDialog() {

View File

@@ -25,6 +25,7 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
@@ -137,13 +138,20 @@ open class AutomaticExplorationView @JvmOverloads constructor(
private fun initData() {
val dataList = ArrayList<AutoExplorationEntity>(7)
dataList.add(AutoExplorationEntity("当前道路事件分析",2000L,false))
dataList.add(AutoExplorationEntity("前方车辆",2000L,false))
dataList.add(AutoExplorationEntity("两侧车辆",2600L,false))
dataList.add(AutoExplorationEntity("后方车辆",3000L,false))
dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L,false))
dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4300L,false))
dataList.add(AutoExplorationEntity("路侧视频分析",5000L,false))
// dataList.add(AutoExplorationEntity("当前道路事件分析",2000L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_crossing_event_analyse),2000L,false))
// dataList.add(AutoExplorationEntity("前方车辆",2000L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_vehicle_ahead),2000L,false))
// dataList.add(AutoExplorationEntity("两侧车辆",2600L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_vehicle_both_sides),2600L,false))
// dataList.add(AutoExplorationEntity("后方车辆",3000L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_vehicle_behind),3000L,false))
// dataList.add(AutoExplorationEntity("前方路口车辆流速分析",4000L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_analysis_vehicle_flow_ahead),4000L,false))
// dataList.add(AutoExplorationEntity("前方路口行人/非机动车分析",4300L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_pedestrians_ahead),4300L,false))
// dataList.add(AutoExplorationEntity("路侧视频分析",5000L,false))
dataList.add(AutoExplorationEntity(StringUtils.getString(R.string.module_och_sidewalk_video_analysis),5000L,false))
automaticExplorationAdapter?.setListener(object: AutomaticExplorationAdapter.CompleteListener{
override fun onComplete(entity: AutoExplorationEntity) {
var allComplete = true //所有探查项目都探查完毕
@@ -160,7 +168,8 @@ open class AutomaticExplorationView @JvmOverloads constructor(
rotationAnim?.cancel()
//语音播放,只在司机端播放
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
AIAssist.getInstance(context).speakTTSVoice("正为您探查道路情况")
// AIAssist.getInstance(context).speakTTSVoice("正为您探查道路情况")
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_probing_road_condition_for_you))
}
//5秒后关闭弹窗
val hideViewTimer =object: CountDownTimer(EXPLORATION_HIDE_TIME,EXPLORATION_HIDE_TIME){

View File

@@ -32,6 +32,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.BitmapHelper
import com.mogo.eagle.core.utilcode.util.CoordinateUtils
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.widget.media.video.NoticeSimpleSmallVideoPlayer
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
@@ -360,41 +361,50 @@ class NoticeTrafficDialog : BaseFloatDialog, LifecycleObserver {
dataArrayList.clear()
}
val laiYuan = NoticeValue()
laiYuan.key = "事故来源:"
// laiYuan.key = "事故来源:"
laiYuan.key = StringUtils.getString(R.string.module_core_accident_source)
laiYuan.value = info!!.uploadType
dataArrayList.add(laiYuan)
val cTime = NoticeValue()
cTime.key = "事故时间:"
// cTime.key = "事故时间:"
cTime.key = StringUtils.getString(R.string.module_core_accident_time)
cTime.value = DateTimeUtils.getTimeText(
info.dataCreateTime,
DateTimeUtils.MM_Yue_dd_Ri_HH_mm
)
dataArrayList.add(cTime)
val hTime = NoticeValue()
hTime.key = "处理时间:"
// hTime.key = "处理时间:"
hTime.key = StringUtils.getString(R.string.module_core_processing_time)
hTime.value = DateTimeUtils.getTimeText(
info.dataHandleTime,
DateTimeUtils.MM_Yue_dd_Ri_HH_mm
)
dataArrayList.add(hTime)
val reason = NoticeValue()
reason.key = "事故原因:"
// reason.key = "事故原因:"
reason.key = StringUtils.getString(R.string.module_core_accident_cause)
reason.value = info.reason
dataArrayList.add(reason)
val status = NoticeValue()
status.key = "处理状态:"
// status.key = "处理状态:"
status.key = StringUtils.getString(R.string.module_core_treatment_state)
if (info.operaStatus == "1") {
status.value = "待处理"
// status.value = "待处理"
status.value = StringUtils.getString(R.string.module_core_pending)
} else {
status.value = "已处理"
// status.value = "已处理"
status.value = StringUtils.getString(R.string.module_core_processed)
}
dataArrayList.add(status)
val location = NoticeValue()
location.key = "事故地点:"
// location.key = "事故地点:"
location.key = StringUtils.getString(R.string.module_core_accident_spot)
location.value = info.uploadAddress
dataArrayList.add(location)
val style = NoticeValue()
style.key = "事故等级:"
// style.key = "事故等级:"
style.key = StringUtils.getString(R.string.module_core_accident_grade)
style.value = info.troubleTypeName
dataArrayList.add(style)
adapter!!.setData(dataArrayList)

View File

@@ -15,6 +15,7 @@ import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.widget.TypefaceTextView
import com.mogo.eagle.core.utilcode.mogo.thread.WorkThreadHandler
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
/**
@@ -260,17 +261,22 @@ class TrafficLightPromptView @JvmOverloads constructor(
when (user) {
0 -> {
//司机端提示
tvPromptTitle?.text = "即将绿灯"
tvPromptContent?.text = "请准备出发"
// tvPromptTitle?.text = "即将绿灯"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_green_light)
// tvPromptContent?.text = "请准备出发"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_prepare_to_depart)
}
1 -> {
//TAXI乘客端提示
tvPromptContent?.text = "即将绿灯,请准备出发"
// tvPromptContent?.text = "即将绿灯,请准备出发"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_upcoming_green_light_prepare_to_depart)
}
else -> {
//BUS乘客端提示
tvPromptTitle?.text = "即将绿灯,"
tvPromptContent?.text = "请准备出发"
// tvPromptTitle?.text = "即将绿灯,"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_green_light1)
// tvPromptContent?.text = "请准备出发"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_prepare_to_depart)
}
}
}
@@ -278,17 +284,22 @@ class TrafficLightPromptView @JvmOverloads constructor(
when (user) {
0 -> {
//司机端提示
tvPromptTitle?.text = "即将红灯"
tvPromptContent?.text = "请减速慢行"
// tvPromptTitle?.text = "即将红灯"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_red_light)
// tvPromptContent?.text = "请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_warning_slow_down)
}
1 -> {
//TAXI乘客端提示
tvPromptContent?.text = "即将红灯,请减速慢行"
// tvPromptContent?.text = "即将红灯,请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_upcoming_red_light_warning_slow_down)
}
else -> {
//BUS乘客端提示
tvPromptTitle?.text = "即将红灯,"
tvPromptContent?.text = "请减速慢行"
// tvPromptTitle?.text = "即将红灯,"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_red_light1)
// tvPromptContent?.text = "请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_warning_slow_down)
}
}
}
@@ -296,17 +307,22 @@ class TrafficLightPromptView @JvmOverloads constructor(
when (user) {
0 -> {
//司机端提示
tvPromptTitle?.text = "即将黄灯"
tvPromptContent?.text = "请减速慢行"
// tvPromptTitle?.text = "即将黄灯"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_yellow_light)
// tvPromptContent?.text = "请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_warning_slow_down)
}
1 -> {
//TAXI乘客端提示
tvPromptContent?.text = "即将红灯,请减速慢行"
// tvPromptContent?.text = "即将红灯,请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_upcoming_yellow_light_warning_slow_down)
}
else -> {
//BUS乘客端提示
tvPromptTitle?.text = "即将黄灯,"
tvPromptContent?.text = "请减速慢行"
// tvPromptTitle?.text = "即将黄灯,"
tvPromptTitle?.text = StringUtils.getString(R.string.module_core_upcoming_yellow_light1)
// tvPromptContent?.text = "请减速慢行"
tvPromptContent?.text = StringUtils.getString(R.string.module_core_warning_slow_down)
}
}
}

View File

@@ -1227,7 +1227,8 @@ class OperatePanelLayout : LinearLayout {
"01" -> {
//关闭成功
Log.d(TAG, "-- 驾驶位视频流关闭成功 --")
ToastUtils.showShort("驾驶位视频流功能已关闭")
// ToastUtils.showShort("驾驶位视频流功能已关闭")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_drive_seat_video_stream_close)
FunctionBuildConfig.isDriveSeatVideoStream = false
lastTimeOnSendDriveVideo = 0L
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_DRIVE_SEAT_VIDEO_STREAM)?.also { it.isChecked = false }
@@ -1235,7 +1236,8 @@ class OperatePanelLayout : LinearLayout {
"11" -> {
//打开成功
Log.d(TAG, "-- 驾驶位视频流打开成功 --")
ToastUtils.showShort("驾驶位视频流功能已开启")
// ToastUtils.showShort("驾驶位视频流功能已开启")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_drive_seat_video_stream_open)
FunctionBuildConfig.isDriveSeatVideoStream = true
lastTimeOnSendDriveVideo = 0L
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_DRIVE_SEAT_VIDEO_STREAM)?.also { it.isChecked = true }
@@ -1245,7 +1247,8 @@ class OperatePanelLayout : LinearLayout {
"0" -> {
Log.d(TAG, "-- 设备下线 --")
FunctionBuildConfig.isDriveSeatVideoStream = false // 设备下线
ToastUtils.showShort("驾驶位视频流功能因设备下线已关闭")
// ToastUtils.showShort("驾驶位视频流功能因设备下线已关闭")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_drive_seat_video_stream_device_live_close)
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_DRIVE_SEAT_VIDEO_STREAM)?.also {
it.isChecked = false
it.isEnabled = false
@@ -1304,17 +1307,20 @@ class OperatePanelLayout : LinearLayout {
if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()||
CallerHmiManager.isShuttleDriverPerformTask()
) {
ToastUtils.showLong("请先结束当前任务")
// ToastUtils.showLong("请先结束当前任务")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_current_task)
return false
}
if (CallerHmiManager.isTaxiUnmanedDriverTakingOrders()) {
ToastUtils.showLong("请先结束接单状态")
// ToastUtils.showLong("请先结束接单状态")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_receive_order_state)
return false
}
CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(true)
} else {
if (CallerHmiManager.isTaxiUnmanedDriverLineRoutingPerformTask()) {
ToastUtils.showLong("请先结束当前任务")
// ToastUtils.showLong("请先结束当前任务")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_current_task)
return false
}
CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(false)
@@ -1373,13 +1379,19 @@ class OperatePanelLayout : LinearLayout {
val interval = SystemClock.elapsedRealtime() - lastTimeOnSendDriveVideo
if (interval <= TimeUnit.SECONDS.toMillis(10)) {
val seconds = TimeUnit.MILLISECONDS.toSeconds(interval)
ToastUtils.showShort("未收到乘客屏响应,${ if (seconds >= 1) "请${seconds}秒后再试" else "请稍候再试"}")
// ToastUtils.showShort("未收到乘客屏响应,${ if (seconds >= 1) "请${seconds}秒后再试" else "请稍候再试"}")
if (seconds >= 1) {
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_drive_seat_video_stream_device_response_second, seconds)
} else {
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_drive_seat_video_stream_device_response)
}
return false
}
}
lastTimeOnSendDriveVideo = SystemClock.elapsedRealtime()
val isChecked = newValue as? Boolean ?: false
ToastUtils.showShort(if (isChecked) "驾驶位视频流功能开启指令已发送,等待乘客端响应" else "驾驶位视频流功能关闭指令已发送,等待乘客端响应")
// ToastUtils.showShort(if (isChecked) "驾驶位视频流功能开启指令已发送,等待乘客端响应" else "驾驶位视频流功能关闭指令已发送,等待乘客端响应")
ToastUtils.showShort(if (isChecked) R.string.module_mogo_core_function_hmi_send_open_drive_seat_video_stream_cmd else R.string.module_mogo_core_function_hmi_send_close_drive_seat_video_stream_cmd)
clickEventAnalytics("视频流驾驶位开关", isChecked)
val map = HashMap<String, String>()
map["open"] = if (isChecked) "1" else "0"
@@ -2135,13 +2147,16 @@ class OperatePanelLayout : LinearLayout {
val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(FunctionBuildConfig.maxSpeedLimit.toInt())
when {
isSuccess -> {
ToastUtils.showShort("车速设置成功,立即生效")
// ToastUtils.showShort("车速设置成功,立即生效")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_success)
}
else -> {
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
ToastUtils.showShort("设置车速失败,请启动域控制器")
// ToastUtils.showShort("设置车速失败,请启动域控制器")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_fail)
} else {
ToastUtils.showShort("设置车速失败")
// ToastUtils.showShort("设置车速失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_fail_disconnect)
}
}
}
@@ -2154,10 +2169,12 @@ class OperatePanelLayout : LinearLayout {
hmiAction("SOP 变道绕障的目标障碍物速度阈值", FunctionBuildConfig.detouringSpeed)
val isSuccess = CallerAutoPilotControlManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed)
if (isSuccess == true) {
ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功")
// ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_detouring_speed_success)
hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "成功")
} else {
ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败")
// ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_detouring_speed_fail)
hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "失败")
}
clickEventAnalytics("变道速度阈值", true)
@@ -2167,10 +2184,12 @@ class OperatePanelLayout : LinearLayout {
FunctionBuildConfig.overTakeSpeed = preference.extras.getDouble(PreferenceWithSpeedSetting.KEY_BUNDLE_CURRENT_VALUE, FunctionBuildConfig.overTakeSpeed)
val isSuccess = CallerAutoPilotControlManager.sendOvertakeMaxSpeed(FunctionBuildConfig.overTakeSpeed)
if (isSuccess == true) {
ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置成功")
// ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置成功")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_sop_detouring_speed_success)
hmiAction("SOP 超车目标障碍物速度阈值设置", "成功")
} else {
ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败")
// ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_sop_detouring_speed_fail)
hmiAction("SOP 超车目标障碍物速度阈值设置", "失败")
}
clickEventAnalytics("超车速度阈值", true)

View File

@@ -84,7 +84,8 @@ class PreferenceWithSpeedSetting : Preference {
btnOk.isEnabled = false
holder.itemView.isEnabled = false
ll.isSelected = false
ToastUtils.showShort("阈值最大为${max.safeScale()}$unit")
// ToastUtils.showShort("阈值最大为${max.safeScale()}$unit")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_limit_max_value, "${max.safeScale()}$unit")
return@doAfterTextChanged
}
val temp = current.safeScale()
@@ -118,7 +119,8 @@ class PreferenceWithSpeedSetting : Preference {
minus.onClickWidthDuration(100) {
val minusAfter = cur - step
if (minusAfter < min) {
ToastUtils.showShort("阈值最小为${min.safeScale()}$unit")
// ToastUtils.showShort("阈值最小为${min.safeScale()}$unit")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_limit_min_value, "${min.safeScale()}$unit")
return@onClickWidthDuration
}
cur = minusAfter
@@ -140,7 +142,8 @@ class PreferenceWithSpeedSetting : Preference {
add.onClickWidthDuration(100) {
val addAfter = cur + step
if (addAfter > max) {
ToastUtils.showShort("阈值最大为${max.safeScale()}$unit")
// ToastUtils.showShort("阈值最大为${max.safeScale()}$unit")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_limit_max_value, "${max.safeScale()}$unit")
return@onClickWidthDuration
}
holder.itemView.isEnabled = false

View File

@@ -1133,7 +1133,8 @@ internal class DebugSettingView @JvmOverloads constructor(
//重启工控机所有节点
btnIpcReboot.onClick {
CallerAutoPilotControlManager.sendIpcReboot()
ToastUtils.showLong("重启命令已发送")
// ToastUtils.showLong("重启命令已发送")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_send_reboot_success)
}
btnAppReboot.onClick {
killApp()

View File

@@ -39,6 +39,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.zhjt.mogo.adas.data.AdasConstants
@@ -646,7 +647,8 @@ internal class SOPSettingView @JvmOverloads constructor(
tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s"
ivSpeedReduce.setOnClickListener {
if (FunctionBuildConfig.detouringSpeed <= 3) {
ToastUtils.showShort("阈值最小可为3 m/s")
// ToastUtils.showShort("阈值最小可为3 m/s")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_detouring_speed_min_value)
} else {
FunctionBuildConfig.detouringSpeed--
tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s"
@@ -655,7 +657,8 @@ internal class SOPSettingView @JvmOverloads constructor(
}
ivSpeedAdd.setOnClickListener {
if (FunctionBuildConfig.detouringSpeed >= 7) {
ToastUtils.showShort("阈值最大可为7 m/s")
// ToastUtils.showShort("阈值最大可为7 m/s")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_detouring_speed_max_value)
} else {
FunctionBuildConfig.detouringSpeed++
tvSpeed.text = "${FunctionBuildConfig.detouringSpeed} m/s"
@@ -666,10 +669,12 @@ internal class SOPSettingView @JvmOverloads constructor(
val isSuccess =
CallerAutoPilotControlManager.sendDetouringSpeed(FunctionBuildConfig.detouringSpeed.toDouble())
if (isSuccess == true) {
ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功")
// ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置成功")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_detouring_speed_success)
hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "成功")
} else {
ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败")
// ToastUtils.showShort("变道绕障的目标障碍物速度阈值设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_detouring_speed_fail)
hmiAction("SOP 变道绕障的目标障碍物速度阈值设置", "失败")
}
clickEventAnalytics("变道速度阈值",true)
@@ -677,7 +682,8 @@ internal class SOPSettingView @JvmOverloads constructor(
ivSpeedOverTakeReduce.setOnClickListener {
if (FunctionBuildConfig.overTakeSpeed <= 3) {
ToastUtils.showShort("阈值最小可为3 m/s")
// ToastUtils.showShort("阈值最小可为3 m/s")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_detouring_speed_min_value)
} else {
FunctionBuildConfig.overTakeSpeed -= 0.5f
tvOverTakeLimit.text = "${FunctionBuildConfig.overTakeSpeed} m/s"
@@ -686,7 +692,8 @@ internal class SOPSettingView @JvmOverloads constructor(
}
ivSpeedOverTakeAdd.setOnClickListener {
if (FunctionBuildConfig.overTakeSpeed >= 12.5) {
ToastUtils.showShort("阈值最大可为12.5 m/s")
// ToastUtils.showShort("阈值最大可为12.5 m/s")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_over_take_speed_max_value)
} else {
FunctionBuildConfig.overTakeSpeed += 0.5f
tvOverTakeLimit.text = "${FunctionBuildConfig.overTakeSpeed} m/s"
@@ -697,10 +704,12 @@ internal class SOPSettingView @JvmOverloads constructor(
val isSuccess =
CallerAutoPilotControlManager.sendOvertakeMaxSpeed(FunctionBuildConfig.overTakeSpeed.toDouble())
if (isSuccess == true) {
ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置成功")
// ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置成功")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_sop_detouring_speed_success)
hmiAction("SOP 超车目标障碍物速度阈值设置", "成功")
} else {
ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败")
// ToastUtils.showShort("SOP 超车目标障碍物速度阈值设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_send_sop_detouring_speed_fail)
hmiAction("SOP 超车目标障碍物速度阈值设置", "失败")
}
clickEventAnalytics("超车速度阈值",true)
@@ -793,19 +802,22 @@ internal class SOPSettingView @JvmOverloads constructor(
if(!buttonView.isPressed) return@setOnCheckedChangeListener
if (isChecked) {
if (CallerHmiManager.isTaxiUnmanedDriverPerformTask()) {
ToastUtils.showLong("请先结束当前任务")
// ToastUtils.showLong("请先结束当前任务")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_current_task)
buttonView.isChecked = !isChecked
return@setOnCheckedChangeListener
}
if (CallerHmiManager.isTaxiUnmanedDriverTakingOrders()) {
ToastUtils.showLong("请先结束接单状态")
// ToastUtils.showLong("请先结束接单状态")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_receive_order_state)
buttonView.isChecked = !isChecked
return@setOnCheckedChangeListener
}
CallerHmiManager.setTaxiUnmanedDriverLineRoutingVerifyMode(true)
} else {
if (CallerHmiManager.isTaxiUnmanedDriverLineRoutingPerformTask()) {
ToastUtils.showLong("请先结束当前任务")
// ToastUtils.showLong("请先结束当前任务")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_please_stop_current_task)
buttonView.isChecked = !isChecked
return@setOnCheckedChangeListener
}
@@ -929,7 +941,8 @@ internal class SOPSettingView @JvmOverloads constructor(
if (mf != null) {
mfStatusLayout.setClickEnabled(true)
mfStatusLayout.setClickedTextAndTag(
if (mf.isConnected()) "断开魔方连接" else "开始连接魔方",
// if (mf.isConnected()) "断开魔方连接" else "开始连接魔方",
if (mf.isConnected()) StringUtils.getString(R.string.module_core_disconnect_mofang) else StringUtils.getString(R.string.module_core_connect_mofang),
if (mf.isConnected()) 0 else 1
)
mf.registerMoFangStatusListener(TAG, this)
@@ -938,22 +951,26 @@ internal class SOPSettingView @JvmOverloads constructor(
if (tag == 0) {
//断开魔方连接
if (!mf.isConnected()) {
Toast.makeText(context, "尚未建立连接", Toast.LENGTH_SHORT).show()
// Toast.makeText(context, "尚未建立连接", Toast.LENGTH_SHORT).show()
Toast.makeText(context, R.string.module_core_mofang_disconnect, Toast.LENGTH_SHORT).show()
return@setOnClickCallback
}
mfStatusLayout.showLoadingView()
mfStatusLayout.setLoadingViewText("正在断开魔方连接, 请稍候...")
// mfStatusLayout.setLoadingViewText("正在断开魔方连接, 请稍候...")
mfStatusLayout.setLoadingViewText(StringUtils.getString(R.string.module_core_disconnecting_mofang))
mf.disconnect()
}
if (tag == 1) {
//建立魔方连接
if (mf.isConnected()) {
Toast.makeText(context, "已连接,不要重复连接", Toast.LENGTH_SHORT).show()
// Toast.makeText(context, "已连接,不要重复连接", Toast.LENGTH_SHORT).show()
Toast.makeText(context, R.string.module_core_mofang_connected, Toast.LENGTH_SHORT).show()
return@setOnClickCallback
}
mf.connect()
mfStatusLayout.showLoadingView()
mfStatusLayout.setLoadingViewText("正在连接魔方, 请稍候")
// mfStatusLayout.setLoadingViewText("正在连接魔方, 请稍候")
mfStatusLayout.setLoadingViewText(StringUtils.getString(R.string.module_core_connecting_mofang))
}
}
}
@@ -1047,7 +1064,8 @@ internal class SOPSettingView @JvmOverloads constructor(
override fun onMoFangConnected() {
mfStatusLayout?.also {
it.hideLoadingView()
it.setClickedTextAndTag("断开魔方连接", 0)
// it.setClickedTextAndTag("断开魔方连接", 0)
it.setClickedTextAndTag(StringUtils.getString(R.string.module_core_disconnect_mofang), 0)
mfTest?.isEnabled = true
mfTest?.isChecked = CallerDevaToolsManager.mofang()?.isEnableTest() ?: false
}
@@ -1056,7 +1074,8 @@ internal class SOPSettingView @JvmOverloads constructor(
override fun onMoFangDisconnected() {
mfStatusLayout?.also {
it.hideLoadingView()
it.setClickedTextAndTag("开始连接魔方", 1)
// it.setClickedTextAndTag("开始连接魔方", 1)
it.setClickedTextAndTag(StringUtils.getString(R.string.module_core_connect_mofang), 1)
mfTest?.isEnabled = false
}
}

View File

@@ -30,6 +30,7 @@ import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
import com.mogo.eagle.core.utilcode.kotlin.PX
import com.mogo.eagle.core.utilcode.rv.divider.CommonDividerItemDecoration
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo.adas.data.AdasConstants
import me.jessyan.autosize.utils.AutoSizeUtils
@@ -51,7 +52,8 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
it.add(StatusSummaryEntity(1))
it.add(StatusSummaryEntity(2))
it.add(StatusSummaryEntity(3))
it.add(StatusSummaryEntity(4, "域控未连接", true))
// it.add(StatusSummaryEntity(4, "域控未连接", true))
it.add(StatusSummaryEntity(4, StringUtils.getString(R.string.module_core_ipc_disconnect), true))
it.add(StatusSummaryEntity(5, CallerAutopilotCarConfigListenerManager.getCertFileResult(), CallerCloudCertManager.getRootCrtF().isNullOrEmpty()))
}
}
@@ -114,7 +116,9 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
super.onServerStatusChanged(isStarted)
UiThreadHandler.post({
if (data.size < 1) return@post
data[0].desc = "司机屏Server启动${if (isStarted) "正常" else "异常"}"
// data[0].desc = "司机屏Server启动${if (isStarted) "正常" else "异常"}"
data[0].desc = "${StringUtils.getString(R.string.module_core_driver_server_start)}${
if (isStarted) StringUtils.getString(R.string.module_core_normal) else StringUtils.getString(R.string.module_core_error)}"
data[0].isException = !isStarted
adapter?.notifyItemChanged(0)
}, UiThreadHandler.MODE.QUEUE)
@@ -124,7 +128,8 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
super.gpsStatus(status)
UiThreadHandler.post({
if (data.size < 2) return@post
data[1].desc = "GPS${if (status) "正常" else "异常"}"
// data[1].desc = "GPS${if (status) "正常" else "异常"}"
data[1].desc = "GPS${if (status) StringUtils.getString(R.string.module_core_normal) else StringUtils.getString(R.string.module_core_error)}"
data[1].isException = !status
adapter?.notifyItemChanged(1)
}, UiThreadHandler.MODE.QUEUE)
@@ -137,7 +142,9 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
if (StatusDescriptor.CLOUD_SOCKET == descriptor) {
UiThreadHandler.post({
if (data.size < 3) return@post
data[2].desc = "云Socket连接${if (isTrue) "正常" else "异常"}"
// data[2].desc = "云Socket连接${if (isTrue) "正常" else "异常"}"
data[2].desc = "${StringUtils.getString(R.string.module_core_cloud_socket_connect)}${
if (isTrue) StringUtils.getString(R.string.module_core_normal) else StringUtils.getString(R.string.module_core_error)}"
data[2].isException = !isTrue
adapter?.notifyItemChanged(2)
}, UiThreadHandler.MODE.QUEUE)
@@ -148,7 +155,9 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
super.tracingStatus(status) // 发送事件前限制了频率
UiThreadHandler.post({
if (data.size < 4) return@post
data[3].desc = "寻迹算路${if (status) "正常" else "异常"}"
// data[3].desc = "寻迹算路${if (status) "正常" else "异常"}"
data[3].desc = "${StringUtils.getString(R.string.module_core_trail_tracking_route_calculation)}${
if (status) StringUtils.getString(R.string.module_core_normal) else StringUtils.getString(R.string.module_core_error)}"
data[3].isException = !status
adapter?.notifyItemChanged(3)
}, UiThreadHandler.MODE.QUEUE)
@@ -159,43 +168,53 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
var pair: Pair<String, Boolean>? = null
when (status) {
AdasConstants.IpcConnectionStatus.DISCONNECTED -> {
pair = Pair("域控未连接", true)
// pair = Pair("域控未连接", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_disconnect), true)
}
AdasConstants.IpcConnectionStatus.CONNECTED -> {
pair = Pair("域控已连接", false)
// pair = Pair("域控已连接", false)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_connected), false)
}
AdasConstants.IpcConnectionStatus.CONNECTING -> {
pair = Pair("域控连接中", true)
// pair = Pair("域控连接中", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_connecting), true)
}
AdasConstants.IpcConnectionStatus.RECONNECTING_TIMER, AdasConstants.IpcConnectionStatus.RECONNECTING_NETWORK -> {
pair = Pair("域控重连中", true)
// pair = Pair("域控重连中", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_reconnecting), true)
}
AdasConstants.IpcConnectionStatus.CONNECT_EXCEPTION -> {
pair = Pair("域控连接异常", true)
// pair = Pair("域控连接异常", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_connect_error), true)
}
AdasConstants.IpcConnectionStatus.ILLEGAL_ADDRESS -> {
pair = Pair("非法域控地址", true)
// pair = Pair("非法域控地址", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_illegal_address), true)
}
AdasConstants.IpcConnectionStatus.SEARCH_ADDRESS -> {
pair = Pair("正在搜索域控地址", true)
// pair = Pair("正在搜索域控地址", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_search_address), true)
}
AdasConstants.IpcConnectionStatus.NOT_FOUND_ADDRESS -> {
pair = Pair("找不到可用的域控地址", true)
// pair = Pair("找不到可用的域控地址", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_not_found_address), true)
}
AdasConstants.IpcConnectionStatus.HEARTBEAT_TIMEOUT -> {
pair = Pair("域控心跳超时", true)
// pair = Pair("域控心跳超时", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_heartbeat_timeout), true)
}
AdasConstants.IpcConnectionStatus.SERVER_DISCONNECTED -> {
pair = Pair("域控主动断开连接", true)
// pair = Pair("域控主动断开连接", true)
pair = Pair(StringUtils.getString(R.string.module_core_ipc_server_disconnected), true)
}
else -> {}
@@ -211,11 +230,13 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
override fun authCrtFile(device: String, root: String) {
super.authCrtFile(device, root)
UiThreadHandler.post({
if (CallerAutopilotCarConfigListenerManager.getCertFileResult() != "未开启认证") {
// if (CallerAutopilotCarConfigListenerManager.getCertFileResult() != "未开启认证") {
if (CallerAutopilotCarConfigListenerManager.getCertFileResult() != StringUtils.getString(R.string.module_core_authentication_not_enabled)) {
return@post
}
if (data.size < 6) return@post
data[5].desc = "本机证书已下载"
// data[5].desc = "本机证书已下载"
data[5].desc = StringUtils.getString(R.string.module_core_local_cert_downloaded)
data[5].isException = false
adapter?.notifyItemChanged(5)
}, UiThreadHandler.MODE.QUEUE)
@@ -225,7 +246,8 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
super.authCrtError(errorMsg)
UiThreadHandler.post({
if (data.size < 6) return@post
data[5].desc = "本机证书下载异常:$errorMsg"
// data[5].desc = "本机证书下载异常:$errorMsg"
data[5].desc = "${StringUtils.getString(R.string.module_core_local_cert_download_failed)}$errorMsg"
data[5].isException = true
adapter?.notifyItemChanged(5)
}, UiThreadHandler.MODE.QUEUE)
@@ -240,7 +262,8 @@ class StatusSummaryView @JvmOverloads constructor(context: Context, attrs: Attri
UiThreadHandler.post({
if (data.size < 6) return@post
data[5].desc = msg
data[5].isException = !msg.contains("成功校验")
// data[5].isException = !msg.contains("成功校验")
data[5].isException = !msg.contains(StringUtils.getString(R.string.module_core_check_success))
adapter?.notifyItemChanged(5)
}, UiThreadHandler.MODE.QUEUE)
}

View File

@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo
import com.mogo.eagle.core.data.enums.SidePattern
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
import com.mogo.eagle.core.function.hmi.ui.setting.SopView.Companion.sopView
@@ -117,7 +118,8 @@ class ToolsView private constructor() {
toolsView?.showAdUpgradeStatus(ipcUpgradeStateInfo)
ipcUpgradeStateInfo.status.let {
if (AdUpgradeStateHelper.isUpgradeSuccess(it)) {
ToastUtils.showLong("升级成功")
// ToastUtils.showLong("升级成功")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_ipc_upgrade_success)
AdUpgradeStateHelper.setConfirmUpgrade(false)
}
}

View File

@@ -59,7 +59,8 @@ class AdUpgradeDialog(context: Context, images: List<String>, padSn: String, rel
//确认升级
CallerDevaToolsManager.upgradeConfirm(images, padSn, releaseId)
AdUpgradeStateHelper.setConfirmUpgrade(true)
ToastUtils.showLong("最新版本下载中...")
// ToastUtils.showLong("最新版本下载中...")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_ipc_upgrade_dow)
dismiss()
}
upgradeCancel?.setOnClickListener {

View File

@@ -28,6 +28,7 @@ import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.StringUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.service_biz.BizConfig
@@ -82,7 +83,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
when {
speed > 60 -> {
// 设置失败键盘不消失,让用户直接修改
ToastUtils.showShort("超过最大限速值60设置失败")
// ToastUtils.showShort("超过最大限速值60设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_beyond_max_value)
}
else -> {
keyBoardUtil?.hideKeyboard()
@@ -93,10 +95,12 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
when {
isSuccess -> {
etInputSpeed.setText(speedLimit.toString())
ToastUtils.showShort("车速设置成功,立即生效")
// ToastUtils.showShort("车速设置成功,立即生效")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_success)
}
else -> {
ToastUtils.showShort("设置车速失败,请启动域控制器")
// ToastUtils.showShort("设置车速失败,请启动域控制器")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_fail)
}
}
}
@@ -113,11 +117,13 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
speedLimit = inputContent.toInt()
if(speedLimit>60){
speedLimit = 60
ToastUtils.showShort("最大限速60")
// ToastUtils.showShort("最大限速60")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_max_value)
}
}
}catch (t: Exception){
ToastUtils.showShort("最大限速60")
// ToastUtils.showShort("最大限速60")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_max_value)
speedLimit = 60
}
@@ -175,7 +181,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
// tvAcceleration.text = "加速度 $maxAcceleration m/s²"
// }
clSpeedSet.visibility = View.VISIBLE
tvAcceleration.text = "每次调整车速±5km/h,点击确定生效"
// tvAcceleration.text = "每次调整车速±5km/h,点击确定生效"
tvAcceleration.text = StringUtils.getString(R.string.module_core_speed_adjust_step_5km)
if (speedLimit > 0) {
etInputSpeed.setText(speedLimit.toString())
}else{
@@ -200,7 +207,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
svLayout.fullScroll(View.FOCUS_DOWN)
}
if (!CallerAutoPilotStatusListenerManager.isConnect()) {
ToastUtils.showShort("设置车速失败,请启动域控制器")
// ToastUtils.showShort("设置车速失败,请启动域控制器")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_fail)
keyBoardUtil?.hideKeyboard()
return@setOnTouchListener true
} else {
@@ -216,7 +224,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
speedLimit = 0
etInputSpeed.setText(speedLimit.toString())
} else{
ToastUtils.showShort("车速不能再减了")
// ToastUtils.showShort("车速不能再减了")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_not_minus)
}
try{
etInputSpeed.setSelection(speedLimit.toString().length)
@@ -231,7 +240,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
speedLimit = 60
etInputSpeed.setText(speedLimit.toString())
} else{
ToastUtils.showShort("车速不能再加了")
// ToastUtils.showShort("车速不能再加了")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_not_add)
}
try{
etInputSpeed.setSelection(speedLimit.toString().length)
@@ -242,7 +252,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
tvSureModify.setOnClickListener {
if(speedLimit>60){
// 设置失败键盘不消失,让用户直接修改
ToastUtils.showShort("超过最大限速值60设置失败")
// ToastUtils.showShort("超过最大限速值60设置失败")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_speed_beyond_max_value)
return@setOnClickListener
}
val isSuccess = CallerAutoPilotControlManager.setAutoPilotSpeed(speedLimit)
@@ -250,10 +261,12 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
isSuccess -> {
//速度显示
etInputSpeed.setText(speedLimit.toString())
ToastUtils.showShort("车速设置成功,立即生效")
// ToastUtils.showShort("车速设置成功,立即生效")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_success)
}
else -> {
ToastUtils.showShort("设置车速失败,请启动域控制器")
// ToastUtils.showShort("设置车速失败,请启动域控制器")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_set_auto_pilot_speed_fail)
}
}
try {
@@ -267,7 +280,8 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
if (CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
|| CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING
) {
ToastUtils.showShort("请稍后退出")
// ToastUtils.showShort("请稍后退出")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_please_out_later)
return@onClick
}
EventBus.getDefault().post(EventLogout(EventLogout.LOGOUT_TYPE))

View File

@@ -76,9 +76,11 @@ class ModifyBindingCarDialog(context: Context) : BaseFloatDialog(context, TAG),
private fun modifyBindingCar() {
CallerDevaToolsManager.modifyCarInfo {
if (it.code == 200) {
TipToast.shortTip("修改绑定成功")
// TipToast.shortTip("修改绑定成功")
TipToast.shortTip(R.string.module_core_change_bind_success)
} else {
TipToast.shortTip("修改绑定失败")
// TipToast.shortTip("修改绑定失败")
TipToast.shortTip(R.string.module_core_change_bind_failed)
}
}
dismiss()

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