diff --git a/core/function-impl/mogo-core-function-devatools-rviz/build.gradle b/core/function-impl/mogo-core-function-devatools-rviz/build.gradle
index cd6be6e0b5..19d058e590 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/build.gradle
+++ b/core/function-impl/mogo-core-function-devatools-rviz/build.gradle
@@ -88,5 +88,7 @@ dependencies {
implementation("org.connectbot:jbcrypt:1.0.2")
//----------------SSH end---------------------
implementation 'org.conscrypt:conscrypt-android:2.5.2'
+
+ implementation 'com.belerweb:pinyin4j:2.5.1'
}
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/AndroidManifest.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/AndroidManifest.xml
index 7d1e9d6a3e..d8a81d16c5 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/AndroidManifest.xml
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/AndroidManifest.xml
@@ -22,6 +22,16 @@
android:theme="@style/Theme.AppCompat.Light.NoActionBar"
android:windowSoftInputMode="adjustPan" />
+
+
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/dialog/SelectAutopilotLineDialog.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/dialog/SelectAutopilotLineDialog.kt
index 9ae4f5d385..6407cbcabd 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/dialog/SelectAutopilotLineDialog.kt
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/dialog/SelectAutopilotLineDialog.kt
@@ -75,8 +75,8 @@ class SelectAutopilotLineDialog(context: Context) : Dialog(context), LifecycleOw
val divider = DividerItemDecoration(context, linearLayoutManager.orientation)
rvLineList.addItemDecoration(divider)
val params: WindowManager.LayoutParams = window!!.attributes
- params.width = WindowUtils.dip2px(context,context.resources.getDimension(R.dimen.dp_280))
- params.height = WindowUtils.dip2px(context,context.resources.getDimension(R.dimen.dp_250))
+ params.width = WindowUtils.dip2px(context,context.resources.getDimension(R.dimen.dp_1200))
+ params.height = WindowUtils.dip2px(context,context.resources.getDimension(R.dimen.dp_1000))
window?.attributes = params
window?.setBackgroundDrawable(null)
initEvent()
@@ -108,28 +108,28 @@ class SelectAutopilotLineDialog(context: Context) : Dialog(context), LifecycleOw
// 处理Taxi
// 处理BUS包含:JV、KW、FT、SW
-// CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode?.let {
-// TrajectoryApiClient.queryTrajectoryList(
-// this,
-// VehicleConfigData.getCarType().name,
-// it,
-// object :
-// NetworkCallback> {
-// override fun onSuccess(data: ArrayList) {
-// setSelectLineData(data)
-// tvLoading.hide()
-// }
-//
-// override fun onError(msg: String) {
-// ToastUtils.showLong("获取 Bus 站点列表异常,异常原因:${msg}")
-// tvLoading.show("获取 Bus 站点列表异常")
-// }
-// }
-// )
-// } ?: let {
-// ToastUtils.showLong("获取 Bus 站点列表异常,获取当前未知失败,请开启定位权限")
-// tvLoading.show("获取 Bus 站点列表异常,请开启定位权限")
-// }
+ CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().cityCode?.let {
+ TrajectoryApiClient.queryTrajectoryList(
+ this,
+ VehicleConfigData.getCarType().name,
+ it,
+ object :
+ NetworkCallback> {
+ override fun onSuccess(data: ArrayList) {
+ setSelectLineData(data)
+ tvLoading.hide()
+ }
+
+ override fun onError(msg: String) {
+ ToastUtils.showLong("获取 Bus 站点列表异常,异常原因:${msg}")
+ tvLoading.show("获取 Bus 站点列表异常")
+ }
+ }
+ )
+ } ?: let {
+ ToastUtils.showLong("获取 Bus 站点列表异常,获取当前未知失败,请开启定位权限")
+ tvLoading.show("获取 Bus 站点列表异常,请开启定位权限")
+ }
}
//取消
@@ -186,6 +186,7 @@ class SelectAutopilotLineDialog(context: Context) : Dialog(context), LifecycleOw
}
override fun dismiss() {
+ mLifecycleRegistry.currentState = Lifecycle.State.DESTROYED
scopeQueryTrajectoryList.cancel()
mActivity = null
super.dismiss()
@@ -198,7 +199,7 @@ class SelectAutopilotLineDialog(context: Context) : Dialog(context), LifecycleOw
}
override fun getLifecycle(): Lifecycle {
- return lifecycle
+ return mLifecycleRegistry
}
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/MisHost.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/MisHost.kt
index 957293edbb..51f2142473 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/MisHost.kt
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/MisHost.kt
@@ -5,7 +5,7 @@ import com.mogo.eagle.core.data.EnvConfig
object MisHost {
private const val HOST_QA = "https://eagle-qa.zhidaozhixing.com/"
- private const val HOST_RELEASE = "https://eagle-mis-v6.zhidaozhixing.com/"
+ private const val HOST_RELEASE = "https://eagle-mis.zhidaozhixing.com/"
private const val LOGIN_HOST_QA =
"https://carlife-test.zhidaohulian.com/qa/eagle/login/index.html?deviceId="
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiClient.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiClient.kt
index 584d18a470..38e9079bf7 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiClient.kt
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiClient.kt
@@ -17,119 +17,119 @@ object TrajectoryApiClient {
private val apiService: TrajectoryApiService =
NetworkManager.getInstance().createService(TrajectoryApiService::class.java, baseUrl)
-// /**
-// * 查询 Bus&Taxi 有轨迹的QA线路列表
-// */
-// fun queryTrajectoryList(
-// owner: LifecycleOwner,
-// carType: String,
-// cityCode: String,
-// callback: NetworkCallback>
-// ) {
-// val reqBody = TrajectoryLisReq()
-// reqBody.page = 1
-// reqBody.pageSize = 1000
-// reqBody.cityCode = cityCode
-//
-// val observable = if (carType == "TAXI") {
-// apiService.queryTaxiTrajectoryList(reqBody)
-// } else {
-// apiService.queryBusTrajectoryList(reqBody)
-// }
-//
-// NetworkManager.getInstance()
-// .sendRequest(
-// observable,
-// owner,
-// object :
-// NetworkManager.NetworkCallback>> {
-// override fun onSuccess(response: BaseResponse>?) {
-// Log.d(TAG, "查询 $carType 有轨迹的QA线路列表:$response")
-// // 处理网络请求成功的响应
-// response?.result?.let { callback.onSuccess(it) }
-// }
-//
-// override fun onError(throwable: String) {
-// Log.e(TAG, "查询 $carType 有轨迹的QA线路列表:$throwable")
-// // 处理网络请求失败的情况
-// callback.onError(throwable)
-// }
-// }
-// )
-// }
-//
-//
-// /**
-// * 查询 Bus&Taxi 线路对应的站点
-// */
-// fun querySiteList(
-// owner: LifecycleOwner,
-// carType: String,
-// lineId: Int,
-// callback: NetworkCallback>
-// ) {
-// val observable = if (carType == "TAXI") {
-// apiService.queryTaxiSiteList(lineId)
-// } else {
-// apiService.queryBusSiteList(lineId)
-// }
-//
-// NetworkManager.getInstance()
-// .sendRequest(
-// observable,
-// owner,
-// object :
-// NetworkManager.NetworkCallback>> {
-// override fun onSuccess(response: BaseResponse>?) {
-// Log.d(TAG, "查询 $carType 线路对应的站点:$response")
-// // 处理网络请求成功的响应
-// response?.result?.let { callback.onSuccess(it) }
-// }
-//
-// override fun onError(throwable: String) {
-// Log.e(TAG, "查询 $carType 线路对应的站点:$throwable")
-// // 处理网络请求失败的情况
-// callback.onError(throwable)
-// }
-// }
-// )
-// }
-//
-// /**
-// * 查询 Bus&Taxi 线路对应的轨迹
-// */
-// fun queryTrajectoryInfo(
-// owner: LifecycleOwner,
-// carType: String,
-// reqBody: TrajectoryInfoReq,
-// callback: NetworkCallback
-// ) {
-//
-// val observable = if (carType == "TAXI") {
-// apiService.queryTaxiTrajectoryInfo(reqBody)
-// } else {
-// apiService.queryBusTrajectoryInfo(reqBody)
-// }
-//
-// NetworkManager.getInstance()
-// .sendRequest(
-// observable,
-// owner,
-// object :
-// NetworkManager.NetworkCallback> {
-// override fun onSuccess(response: BaseResponse?) {
-// Log.d(TAG, "查询 $carType 线路对应的轨迹:$response")
-// // 处理网络请求成功的响应
-// response?.result?.let { callback.onSuccess(it) }
-// }
-//
-// override fun onError(throwable: String) {
-// Log.e(TAG, "查询 $carType 线路对应的轨迹:$throwable")
-// // 处理网络请求失败的情况
-// callback.onError(throwable)
-// }
-// }
-// )
-// }
+ /**
+ * 查询 Bus&Taxi 有轨迹的QA线路列表
+ */
+ fun queryTrajectoryList(
+ owner: LifecycleOwner,
+ carType: String,
+ cityCode: String,
+ callback: NetworkCallback>
+ ) {
+ val reqBody = TrajectoryLisReq()
+ reqBody.page = 1
+ reqBody.pageSize = 1000
+ reqBody.cityCode = cityCode
+
+ val observable = if (carType == "TAXI") {
+ apiService.queryTaxiTrajectoryList(reqBody)
+ } else {
+ apiService.queryBusTrajectoryList(reqBody)
+ }
+
+ NetworkManager.getInstance()
+ .sendRequest(
+ observable,
+ owner,
+ object :
+ NetworkManager.NetworkCallback>> {
+ override fun onSuccess(response: BaseResponse>?) {
+ Log.d(TAG, "查询 $carType 有轨迹的QA线路列表:$response")
+ // 处理网络请求成功的响应
+ response?.result?.let { callback.onSuccess(it) }
+ }
+
+ override fun onError(throwable: String) {
+ Log.e(TAG, "查询 $carType 有轨迹的QA线路列表:$throwable")
+ // 处理网络请求失败的情况
+ callback.onError(throwable)
+ }
+ }
+ )
+ }
+
+
+ /**
+ * 查询 Bus&Taxi 线路对应的站点
+ */
+ fun querySiteList(
+ owner: LifecycleOwner,
+ carType: String,
+ lineId: Int,
+ callback: NetworkCallback>
+ ) {
+ val observable = if (carType == "TAXI") {
+ apiService.queryTaxiSiteList(lineId)
+ } else {
+ apiService.queryBusSiteList(lineId)
+ }
+
+ NetworkManager.getInstance()
+ .sendRequest(
+ observable,
+ owner,
+ object :
+ NetworkManager.NetworkCallback>> {
+ override fun onSuccess(response: BaseResponse>?) {
+ Log.d(TAG, "查询 $carType 线路对应的站点:$response")
+ // 处理网络请求成功的响应
+ response?.result?.let { callback.onSuccess(it) }
+ }
+
+ override fun onError(throwable: String) {
+ Log.e(TAG, "查询 $carType 线路对应的站点:$throwable")
+ // 处理网络请求失败的情况
+ callback.onError(throwable)
+ }
+ }
+ )
+ }
+
+ /**
+ * 查询 Bus&Taxi 线路对应的轨迹
+ */
+ fun queryTrajectoryInfo(
+ owner: LifecycleOwner,
+ carType: String,
+ reqBody: TrajectoryInfoReq,
+ callback: NetworkCallback
+ ) {
+
+ val observable = if (carType == "TAXI") {
+ apiService.queryTaxiTrajectoryInfo(reqBody)
+ } else {
+ apiService.queryBusTrajectoryInfo(reqBody)
+ }
+
+ NetworkManager.getInstance()
+ .sendRequest(
+ observable,
+ owner,
+ object :
+ NetworkManager.NetworkCallback> {
+ override fun onSuccess(response: BaseResponse?) {
+ Log.d(TAG, "查询 $carType 线路对应的轨迹:$response")
+ // 处理网络请求成功的响应
+ response?.result?.let { callback.onSuccess(it) }
+ }
+
+ override fun onError(throwable: String) {
+ Log.e(TAG, "查询 $carType 线路对应的轨迹:$throwable")
+ // 处理网络请求失败的情况
+ callback.onError(throwable)
+ }
+ }
+ )
+ }
}
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiService.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiService.kt
index 8539593853..51ab7c1cd3 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiService.kt
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/net/TrajectoryApiService.kt
@@ -1,12 +1,11 @@
package com.mogo.module.common.net.mis.trajectory.net
-
-import com.mogo.eagle.core.data.BaseResponse
import com.zhjt.mogo_core_function_devatools.rviz.bean.TrajectoryInfo
import com.zhjt.mogo_core_function_devatools.rviz.bean.TrajectoryInfoReq
import com.zhjt.mogo_core_function_devatools.rviz.bean.TrajectoryLisReq
import com.zhjt.mogo_core_function_devatools.rviz.bean.TrajectoryListInfo
import com.zhjt.mogo_core_function_devatools.rviz.bean.TrajectorySiteInfo
+import com.zhjt.mogo_core_function_devatools.rviz.net.BaseResponse
import io.reactivex.Observable
import retrofit2.http.Body
import retrofit2.http.GET
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/activity/AutopilotCheckAct.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/activity/AutopilotCheckAct.kt
new file mode 100644
index 0000000000..fd67ac96d6
--- /dev/null
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/activity/AutopilotCheckAct.kt
@@ -0,0 +1,16 @@
+package com.zhjt.mogo_core_function_devatools.rviz.ui.activity
+
+import android.os.Bundle
+import com.zhjt.mogo_core_function_devatools.rviz.R
+import com.zhjt.mogo_core_function_devatools.rviz.common.base.BaseActivity
+import kotlinx.android.synthetic.main.layout_autopilot_check.viewCheckAutopilot
+
+class AutopilotCheckAct: BaseActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?){
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.layout_autopilot_check)
+ viewCheckAutopilot.setActivity(this)
+ }
+
+}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/views/CheckAutopilotView.kt b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/views/CheckAutopilotView.kt
index 71c16da4fe..cbee28f7a8 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/views/CheckAutopilotView.kt
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/ui/views/CheckAutopilotView.kt
@@ -21,6 +21,7 @@ import androidx.lifecycle.Observer
import androidx.recyclerview.widget.RecyclerView
import chassis.Chassis
import chassis.VehicleStateOuterClass
+import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters
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.ThreadUtils
@@ -39,10 +40,12 @@ import com.zhjt.mogo_core_function_devatools.rviz.dialog.SelectAutopilotLineDial
import com.zhjt.mogo_core_function_devatools.rviz.dialog.adapter.ConsoleAdapter
import com.zhjt.mogo_core_function_devatools.rviz.net.NetworkCallback
import com.zhjt.mogo_core_function_devatools.rviz.net.TrajectoryApiClient
+import com.zhjt.mogo_core_function_devatools.rviz.utils.PinYinUtil
import com.zhjt.mogo_core_function_devatools.rviz.widgets.ros.TelematicsSubscriberEventKey
import com.zhjt.mogo_core_function_devatools.rviz.widgets.ros.TopicSubscriberEventKey
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.cancel
import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
import java.util.LinkedList
@@ -58,430 +61,432 @@ class CheckAutopilotView @JvmOverloads constructor(
}
-// private val scopeUploadReportInfo = CoroutineScope(Dispatchers.Main)
-//
-// private val mLifecycleRegistry = LifecycleRegistry(this)
-// private var reportMsgInfoSubscriber: CommSubscriber? =
-// null
-// private var reportMsgErrorSubscriber: CommSubscriber? =
-// null
-//
-// // 当前选择的自动驾驶路线信息
-// var mTrajectoryListInfo: TrajectoryListInfo? = null
-// var mTrajectorySiteInfo: List? = null
-// var mTrajectoryInfo: TrajectoryInfo? = null
-//
-// private var selectAutopilotLineDialog: SelectAutopilotLineDialog? = null
-// private var mActivity: Activity? = null
-//
-//
-// /**
-// * 传给自动驾驶
-// * 1、先下载轨迹信息
-// * @see TelematicsControlApi.sendTrajectoryDownloadReq
-// * 2、再启动自动驾驶
-// * @see TelematicsControlApi.requestEnterAutoPilot
-// */
-// val mTrajectoryLine = MessagePad.Line.newBuilder()
-//
-// private val consoleAdapter =
-// ConsoleAdapter()//控制台适配器
-// private val consoleList = LinkedList()
-//
-// private var trajectoryListInfo: TrajectoryListInfo? = null
-//
-// private var currentAutopilotStatus: Int = 0 //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中,7:平行驾驶中
-//
-// @Volatile
-// private var speedLimit: Int = 1
-//
-// //Warning
-// // 自动驾驶效果受影响:
-// // 自动驾驶部分功能受严重影响,演示模式可以考虑强行启动,非演示模式下建议停止自动驾驶,联系人员排查问题。
-// //例如定位偏移,camera无数据,算法非常严重的丢帧,属于自动驾驶可以启动,但是效果受影响。
-// private val RESULT_AUTOPILOT_INFERIOR = "RESULT_AUTOPILOT_INFERIOR"
-//
-// // 存在不确定因素
-// // 一般为过渡状态,存在不确定因素,有可能对自动驾驶有微弱影响,需要在pad端显示为黄色告警。
-// //如果偶尔上报该result可忽略,如果频繁上报需联系人员进行排查。 目前仅有RTK无法确认状态事件
-// private val RESULT_SHOW_WARNING = "RESULT_SHOW_WARNING"
-//
-// // 远程驾驶效果受影响
-// // 远程驾驶部分功能受影响。例如网络高延迟
-// private val RESULT_REMOTEPILOT_INFERIOR = "RESULT_REMOTEPILOT_INFERIOR"
-//
-// //Error
-// // 无法启动自动驾驶
-// private val RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE"
-//
-// // 自动驾驶系统启动失败
-// // 自动驾驶系统启动过程中出错,pad可能无法连接,云端监控可能无法上报
-// private val RESULT_AUTOPILOT_SYSTEM_UNSTARTED = "RESULT_AUTOPILOT_SYSTEM_UNSTARTED"
-//
-// // 自动驾驶效果受影响
-// //自动驾驶部分功能受严重影响,演示模式可以考虑强行启动,非演示模式下建议停止自动驾驶,联系人员排查问题。
-// //例如定位偏移,camera无数据,算法非常严重的丢帧,属于自动驾驶可以启动,但是效果受影响。
-// private val RESULT_REMOTEPILOT_DISABLE = "RESULT_REMOTEPILOT_DISABLE"
-//
-// /**
-// * 获取控制台上报数据列表
-// */
-// fun getConsoleList(): List {
-// return consoleList
-// }
-//
-// fun getTrajectoryListInfo(): TrajectoryListInfo? {
-// return trajectoryListInfo
-// }
-//
-// fun getTrackContrail(): TrackContrail? {
-// return mTrajectoryInfo?.trackContrail
-// }
-//
-// fun setActivity(activity: Activity) {
-// mActivity = activity
-// }
-//
-// // 订阅工控机日志
-// private val consoleObserver: Observer =
-// Observer { mogoReportMessage: MogoReportMsg.MogoReportMessage ->
-// if (consoleList.size > 1000) {
-// consoleList.removeLast()
-// }
-// if (mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
-// || mogoReportMessage.resultList.contains(RESULT_SHOW_WARNING)
-// || mogoReportMessage.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)
-// || mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_DISABLE)
-// || mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
-// || mogoReportMessage.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
-// ) {
-// // 处理底盘超时
-//// if (
-//// !mogoReportMessage.resultList.equals(RESULT_AUTOPILOT_DISABLE)
-//// || !mogoReportMessage.resultList.equals(RESULT_REMOTEPILOT_INFERIOR)
-//// || !mogoReportMessage.resultList.equals(RESULT_AUTOPILOT_INFERIOR)
-//// ) {
-//// btnControlAutoPilot.isChecked = false
-//// Log.e(TAG, "进入自动驾驶--失败")
-//// }
-//
-// consoleList.addFirst(
-// ReportEntity(
-// TimeUtils.getNowString(),
-// mogoReportMessage.code,
-// mogoReportMessage.msg
-// )
-// )
-// }
-// if (consoleList.size > 0) {
-// consoleAdapter.setData(consoleList)
-// }
-// }
-//
-// //订阅到站
-// private val arrivalObserver: Observer = Observer {
-// it.let {
-// Log.i("arrivalObserver", "CheckAuto页面收到到站回调")
-// Log.i("arrivalObserver", "latitude=" + it.endLocation.latitude)
-// Log.i("arrivalObserver", "longitude=" + it.endLocation.longitude)
-// //取消自动驾驶
-// CallerAutoPilotControlManager.cancelAutoPilot()
-// //吐司提示
-// ToastUtils.showShort("您已到达站点")
-// }
-// }
-//
-// //订阅工控机日志监控
-// private val reportObserver: Observer = Observer {
-// it.let {
-// //掉自驾
-// when (it.code) {
-// "EMAP_EXIT_AUTOPILOT_FOR_PLANNING",//因planning掉帧强退自动驾驶
-// "EMAP_EXIT_AUTOPILOT_FOR_LOCATION",//因location掉帧强退自动驾驶
-// "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS",//因底盘消息掉帧强退自动驾驶
-// "EXIT_AUTOPILOT_FOR_DISTANCE",//因planning起点距离当前过远强退自动驾驶
-// "EXIT_AUTOPILOT_FOR_BRAKE",//制动踏板干预而强退自动驾驶
-// "EXIT_AUTOPILOT_FOR_ACCEL",//加速踏板干预而强退自动驾驶
-// "EXIT_AUTOPILOT_FOR_STEER",//方向盘干预而强退自动驾驶
-// "EXIT_AUTOPILOT_FOR_GEAR_SWITCH",//档位切换干预而强退自动驾驶
-// "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS_NO_RESPONSE",//底盘不响应请求而强退自动驾驶
-// "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS_UNKNOWN",//底盘退出原因未知而强退自动驾驶
-// "IRECORDER_TASK_AUTO"//自动录包任务创建
-// -> {
-// //当司机或外界原因导致自动驾驶退出,需要在页面将状态同步显示出来,并将按钮设置为「启动自动驾驶」
-// ThreadUtils.runOnUiThread {
-// ToastUtils.showShort("自动驾驶退出")
-// btnControlAutoPilot.isEnabled = true
-// btnControlAutoPilot.isChecked = false
-// }
+ private val scopeUploadReportInfo = CoroutineScope(Dispatchers.Main)
+
+ private val mLifecycleRegistry = LifecycleRegistry(this)
+
+
+ // 当前选择的自动驾驶路线信息
+ var mTrajectoryListInfo: TrajectoryListInfo? = null
+ var mTrajectorySiteInfo: List? = null
+ var mTrajectoryInfo: TrajectoryInfo? = null
+
+ private var selectAutopilotLineDialog: SelectAutopilotLineDialog? = null
+ private var mActivity: Activity? = null
+
+
+ /**
+ * 传给自动驾驶
+ * 1、先下载轨迹信息
+ * @see TelematicsControlApi.sendTrajectoryDownloadReq
+ * 2、再启动自动驾驶
+ * @see TelematicsControlApi.requestEnterAutoPilot
+ */
+ val mTrajectoryLine = MessagePad.Line.newBuilder()
+
+ private val consoleAdapter =
+ ConsoleAdapter()//控制台适配器
+ private val consoleList = LinkedList()
+
+ private var trajectoryListInfo: TrajectoryListInfo? = null
+
+ private var currentAutopilotStatus: Int = 0 //自动驾驶状态 0代表不可自动驾驶,1代表可自动驾驶,2代表自动驾驶中,7:平行驾驶中
+
+ @Volatile
+ private var speedLimit: Int = 1
+
+ //Warning
+ // 自动驾驶效果受影响:
+ // 自动驾驶部分功能受严重影响,演示模式可以考虑强行启动,非演示模式下建议停止自动驾驶,联系人员排查问题。
+ //例如定位偏移,camera无数据,算法非常严重的丢帧,属于自动驾驶可以启动,但是效果受影响。
+ private val RESULT_AUTOPILOT_INFERIOR = "RESULT_AUTOPILOT_INFERIOR"
+
+ // 存在不确定因素
+ // 一般为过渡状态,存在不确定因素,有可能对自动驾驶有微弱影响,需要在pad端显示为黄色告警。
+ //如果偶尔上报该result可忽略,如果频繁上报需联系人员进行排查。 目前仅有RTK无法确认状态事件
+ private val RESULT_SHOW_WARNING = "RESULT_SHOW_WARNING"
+
+ // 远程驾驶效果受影响
+ // 远程驾驶部分功能受影响。例如网络高延迟
+ private val RESULT_REMOTEPILOT_INFERIOR = "RESULT_REMOTEPILOT_INFERIOR"
+
+ //Error
+ // 无法启动自动驾驶
+ private val RESULT_AUTOPILOT_DISABLE = "RESULT_AUTOPILOT_DISABLE"
+
+ // 自动驾驶系统启动失败
+ // 自动驾驶系统启动过程中出错,pad可能无法连接,云端监控可能无法上报
+ private val RESULT_AUTOPILOT_SYSTEM_UNSTARTED = "RESULT_AUTOPILOT_SYSTEM_UNSTARTED"
+
+ // 自动驾驶效果受影响
+ //自动驾驶部分功能受严重影响,演示模式可以考虑强行启动,非演示模式下建议停止自动驾驶,联系人员排查问题。
+ //例如定位偏移,camera无数据,算法非常严重的丢帧,属于自动驾驶可以启动,但是效果受影响。
+ private val RESULT_REMOTEPILOT_DISABLE = "RESULT_REMOTEPILOT_DISABLE"
+
+ /**
+ * 获取控制台上报数据列表
+ */
+ fun getConsoleList(): List {
+ return consoleList
+ }
+
+ fun getTrajectoryListInfo(): TrajectoryListInfo? {
+ return trajectoryListInfo
+ }
+
+ fun getTrackContrail(): TrackContrail? {
+ return mTrajectoryInfo?.trackContrail
+ }
+
+ fun setActivity(activity: Activity) {
+ mActivity = activity
+ }
+
+ // 订阅工控机日志
+ private val consoleObserver: Observer =
+ Observer { mogoReportMessage: MogoReportMsg.MogoReportMessage ->
+ if (consoleList.size > 1000) {
+ consoleList.removeLast()
+ }
+ if (mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
+ || mogoReportMessage.resultList.contains(RESULT_SHOW_WARNING)
+ || mogoReportMessage.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)
+ || mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_DISABLE)
+ || mogoReportMessage.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
+ || mogoReportMessage.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
+ ) {
+ // 处理底盘超时
+// if (
+// !mogoReportMessage.resultList.equals(RESULT_AUTOPILOT_DISABLE)
+// || !mogoReportMessage.resultList.equals(RESULT_REMOTEPILOT_INFERIOR)
+// || !mogoReportMessage.resultList.equals(RESULT_AUTOPILOT_INFERIOR)
+// ) {
+// btnControlAutoPilot.isChecked = false
+// Log.e(TAG, "进入自动驾驶--失败")
// }
-// }
-// }
-// }
-//
-// //自动驾驶状态
-// private val autopilotStateObserver: Observer = Observer {
-// it.let {
-// if (currentAutopilotStatus != it.state) {
-// currentAutopilotStatus = it.state
-// ThreadUtils.runOnUiThread {
-// when (it.state) {
-// 0 -> {
-// btnAutoPilotStatus.text = "不可自驾"
-// }
-//
-// 1 -> {
-// btnAutoPilotStatus.text = "可自动驾驶"
-// }
-//
-// 2 -> {
-// btnAutoPilotStatus.text = "自动驾驶中"
-// }
-//
-// 7 -> {
-// btnAutoPilotStatus.text = "平行驾驶中"
-// }
-// }
-// }
-// }
-// }
-// }
-//
-// //车机基础信息应答
-// private val carConfigObserver: Observer = Observer {
-// it.let {
-// ThreadUtils.runOnUiThread {
-// speedLimit = (it.speedLimit * 3.6).toInt()
-// etInputSpeed.setText(speedLimit.toString())
-// }
-// }
-// }
-//
-// //自车状态(底盘),车灯、转向灯等
-// private val vehicleStateObserver: Observer = Observer {
-// ThreadUtils.runOnUiThread {
-// when (it.gear) {
-// Chassis.GearPosition.GEAR_P -> {
-// tvGearP.setTextColor(ContextCompat.getColor(context, R.color.white))
-// tvGearR.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearN.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearD.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// }
-//
-// Chassis.GearPosition.GEAR_R -> {
-// tvGearP.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearR.setTextColor(ContextCompat.getColor(context, R.color.white))
-// tvGearN.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearD.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// }
-//
-// Chassis.GearPosition.GEAR_N -> {
-// tvGearP.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearR.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearN.setTextColor(ContextCompat.getColor(context, R.color.white))
-// tvGearD.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// }
-//
-// Chassis.GearPosition.GEAR_D -> {
-// tvGearP.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearR.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearN.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearD.setTextColor(ContextCompat.getColor(context, R.color.white))
-// }
-//
-// else -> {
-// tvGearP.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearR.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearN.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// tvGearD.setTextColor(
-// ContextCompat.getColor(
-// context,
-// R.color.p_default_txt_color
-// )
-// )
-// }
-// }
-// }
-// }
-//
-// init {
-// LayoutInflater.from(context).inflate(R.layout.view_check_autopilot, this, true)
-// initView(context, attrs!!)
-// mLifecycleRegistry.currentState = Lifecycle.State.CREATED
-// }
-//
-// private lateinit var tvAutoDriveLineSelect: TextView
-// private lateinit var tvSpeedTitle: TextView
-// private lateinit var ivSpeedReduce: ImageView
-// private lateinit var etInputSpeed: AppCompatEditText
-// private lateinit var ivSpeedAdd: ImageView
-// private lateinit var tvSureModify: AppCompatTextView
-// private lateinit var tvGearP: TextView
-// private lateinit var tvGearR: TextView
-// private lateinit var tvGearN: TextView
-// private lateinit var tvGearD: TextView
-// private lateinit var btnAutoPilotStatus: Button
-// private lateinit var btnControlAutoPilot: ToggleButton
-// private lateinit var rvReportConsole: RecyclerView
-//
-//
-// private fun initView(context: Context, attrs: AttributeSet) {
-// tvAutoDriveLineSelect = findViewById(R.id.tvAutoDriveLineSelect)
-// tvSpeedTitle = findViewById(R.id.tvSpeedTitle)
-// ivSpeedReduce = findViewById(R.id.ivSpeedReduce)
-// etInputSpeed = findViewById(R.id.etInputSpeed)
-// ivSpeedAdd = findViewById(R.id.ivSpeedAdd)
-// tvSureModify = findViewById(R.id.tvSureModify)
-// tvGearP = findViewById(R.id.tvGearP)
-// tvGearR = findViewById(R.id.tvGearR)
-// tvGearN = findViewById(R.id.tvGearN)
-// tvGearD = findViewById(R.id.tvGearD)
-// btnAutoPilotStatus = findViewById(R.id.btnAutoPilotStatus)
-// btnControlAutoPilot = findViewById(R.id.btnControlAutoPilot)
-// rvReportConsole = findViewById(R.id.rvReportConsole)
-//
-//
-//
-//
-// initSpeedView()
-// consoleAdapter.setData(consoleList)
-// rvReportConsole.adapter = consoleAdapter
-// initAutopilotLineData()
-//
-// // 启动自动驾驶
-// btnControlAutoPilot.setOnClickListener {
-// if (currentAutopilotStatus != 0) {
-// if (currentAutopilotStatus != 2) {
-// mTrajectoryListInfo?.let { trajectoryListInfo ->
-// mTrajectorySiteInfo?.let { trajectorySiteInfo ->
-// if (trajectorySiteInfo.isEmpty()) {
-// if (btnControlAutoPilot.isChecked) {
-// ToastUtils.showShort("该路线缺少站点信息")
-// }
-// btnControlAutoPilot.isChecked = false
-// return@setOnClickListener
-// }
-// val routeInfo = MessagePad.RouteInfo.newBuilder()
-// routeInfo.routeID = trajectoryListInfo.lineId
-// routeInfo.routeName = trajectoryListInfo.lineName
-//
-// routeInfo.vehicleType =
-// if (VehicleConfigData.getCarType() == VehicleType.TAXI) {
-// 9
-// } else {
-// 10
-// }
-// routeInfo.isSpeakVoice = false
-//
-// val startSite = trajectorySiteInfo[0]
-// val endSite = trajectorySiteInfo[trajectorySiteInfo.size - 1]
-//
-// routeInfo.startName =
-// PinYinUtil.getPinYinHeadChar(startSite.name) // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM)
-// routeInfo.endName =
-// PinYinUtil.getPinYinHeadChar(endSite.name) // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM)
-//
-// val startLoc = routeInfo.startLocationBuilder
-// startLoc.latitude = startSite.wgs84Lat
-// startLoc.longitude = startSite.wgs84Lon
-//
-// val endLoc = routeInfo.endLocationBuilder
-// endLoc.latitude = endSite.wgs84Lat
-// endLoc.longitude = endSite.wgs84Lon
-//
-// routeInfo.startLocation = startLoc.build()
-// routeInfo.endLocation = endLoc.build()
-//
-// //传入站点列表
-// for(site in trajectorySiteInfo){
-// val locBuilder = MessagePad.Location.newBuilder()
-// locBuilder.latitude = site.wgs84Lat
-// locBuilder.longitude = site.wgs84Lon
-// routeInfo.addWayPoints(locBuilder.build())
-// }
-//
-// // 初始化选择的自动驾驶路线信息
-// routeInfo.line = initTrajectoryLine(trajectoryListInfo)
-//
-// // 模拟强制进入
-// //if (TelematicsControlApi.instance.requestEnterAutoPilotSimulate(true)) {
-// // 启动自动驾驶
-// if (TelematicsControlApi.instance.requestEnterAutoPilot(routeInfo.build())) {
+
+ consoleList.addFirst(
+ ReportEntity(
+ TimeUtils.getNowString(),
+ mogoReportMessage.src,
+ mogoReportMessage.level,
+ mogoReportMessage.msg,
+ mogoReportMessage.code,
+ mogoReportMessage.resultList,
+ mogoReportMessage.actionsList,
+ true
+ )
+ )
+ }
+ if (consoleList.size > 0) {
+ consoleAdapter.setData(consoleList)
+ }
+ }
+
+ //订阅到站
+ private val arrivalObserver: Observer = Observer {
+ it.let {
+ Log.i("arrivalObserver", "CheckAuto页面收到到站回调")
+ Log.i("arrivalObserver", "latitude=" + it.endLocation.latitude)
+ Log.i("arrivalObserver", "longitude=" + it.endLocation.longitude)
+ //取消自动驾驶
+ CallerAutoPilotControlManager.cancelAutoPilot()
+ //吐司提示
+ ToastUtils.showShort("您已到达站点")
+ }
+ }
+
+ //订阅工控机日志监控
+ private val reportObserver: Observer = Observer {
+ it.let {
+ //掉自驾
+ when (it.code) {
+ "EMAP_EXIT_AUTOPILOT_FOR_PLANNING",//因planning掉帧强退自动驾驶
+ "EMAP_EXIT_AUTOPILOT_FOR_LOCATION",//因location掉帧强退自动驾驶
+ "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS",//因底盘消息掉帧强退自动驾驶
+ "EXIT_AUTOPILOT_FOR_DISTANCE",//因planning起点距离当前过远强退自动驾驶
+ "EXIT_AUTOPILOT_FOR_BRAKE",//制动踏板干预而强退自动驾驶
+ "EXIT_AUTOPILOT_FOR_ACCEL",//加速踏板干预而强退自动驾驶
+ "EXIT_AUTOPILOT_FOR_STEER",//方向盘干预而强退自动驾驶
+ "EXIT_AUTOPILOT_FOR_GEAR_SWITCH",//档位切换干预而强退自动驾驶
+ "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS_NO_RESPONSE",//底盘不响应请求而强退自动驾驶
+ "EMAP_EXIT_AUTOPILOT_FOR_CHASSIS_UNKNOWN",//底盘退出原因未知而强退自动驾驶
+ "IRECORDER_TASK_AUTO"//自动录包任务创建
+ -> {
+ //当司机或外界原因导致自动驾驶退出,需要在页面将状态同步显示出来,并将按钮设置为「启动自动驾驶」
+ ThreadUtils.runOnUiThread {
+ ToastUtils.showShort("自动驾驶退出")
+ btnControlAutoPilot.isEnabled = true
+ btnControlAutoPilot.isChecked = false
+ }
+ }
+ }
+ }
+ }
+
+ //自动驾驶状态
+ private val autopilotStateObserver: Observer = Observer {
+ it.let {
+ if (currentAutopilotStatus != it.state) {
+ currentAutopilotStatus = it.state
+ ThreadUtils.runOnUiThread {
+ when (it.state) {
+ 0 -> {
+ btnAutoPilotStatus.text = "不可自驾"
+ }
+
+ 1 -> {
+ btnAutoPilotStatus.text = "可自动驾驶"
+ }
+
+ 2 -> {
+ btnAutoPilotStatus.text = "自动驾驶中"
+ }
+
+ 7 -> {
+ btnAutoPilotStatus.text = "平行驾驶中"
+ }
+ }
+ }
+ }
+ }
+ }
+
+ //车机基础信息应答
+ private val carConfigObserver: Observer = Observer {
+ it.let {
+ ThreadUtils.runOnUiThread {
+ speedLimit = (it.speedLimit * 3.6).toInt()
+ etInputSpeed.setText(speedLimit.toString())
+ }
+ }
+ }
+
+ //自车状态(底盘),车灯、转向灯等
+ private val vehicleStateObserver: Observer = Observer {
+ ThreadUtils.runOnUiThread {
+ when (it.gear) {
+ Chassis.GearPosition.GEAR_P -> {
+ tvGearP.setTextColor(ContextCompat.getColor(context, R.color.white))
+ tvGearR.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearN.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearD.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ }
+
+ Chassis.GearPosition.GEAR_R -> {
+ tvGearP.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearR.setTextColor(ContextCompat.getColor(context, R.color.white))
+ tvGearN.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearD.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ }
+
+ Chassis.GearPosition.GEAR_N -> {
+ tvGearP.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearR.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearN.setTextColor(ContextCompat.getColor(context, R.color.white))
+ tvGearD.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ }
+
+ Chassis.GearPosition.GEAR_D -> {
+ tvGearP.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearR.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearN.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearD.setTextColor(ContextCompat.getColor(context, R.color.white))
+ }
+
+ else -> {
+ tvGearP.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearR.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearN.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ tvGearD.setTextColor(
+ ContextCompat.getColor(
+ context,
+ R.color.p_default_txt_color
+ )
+ )
+ }
+ }
+ }
+ }
+
+ init {
+ LayoutInflater.from(context).inflate(R.layout.view_check_autopilot, this, true)
+ initView(context, attrs!!)
+ mLifecycleRegistry.currentState = Lifecycle.State.CREATED
+ }
+
+ private lateinit var tvAutoDriveLineSelect: TextView
+ private lateinit var tvSpeedTitle: TextView
+ private lateinit var ivSpeedReduce: ImageView
+ private lateinit var etInputSpeed: AppCompatEditText
+ private lateinit var ivSpeedAdd: ImageView
+ private lateinit var tvSureModify: AppCompatTextView
+ private lateinit var tvGearP: TextView
+ private lateinit var tvGearR: TextView
+ private lateinit var tvGearN: TextView
+ private lateinit var tvGearD: TextView
+ private lateinit var btnAutoPilotStatus: Button
+ private lateinit var btnControlAutoPilot: ToggleButton
+ private lateinit var rvReportConsole: RecyclerView
+
+
+ private fun initView(context: Context, attrs: AttributeSet) {
+ tvAutoDriveLineSelect = findViewById(R.id.tvAutoDriveLineSelect)
+ tvSpeedTitle = findViewById(R.id.tvSpeedTitle)
+ ivSpeedReduce = findViewById(R.id.ivSpeedReduce)
+ etInputSpeed = findViewById(R.id.etInputSpeed)
+ ivSpeedAdd = findViewById(R.id.ivSpeedAdd)
+ tvSureModify = findViewById(R.id.tvSureModify)
+ tvGearP = findViewById(R.id.tvGearP)
+ tvGearR = findViewById(R.id.tvGearR)
+ tvGearN = findViewById(R.id.tvGearN)
+ tvGearD = findViewById(R.id.tvGearD)
+ btnAutoPilotStatus = findViewById(R.id.btnAutoPilotStatus)
+ btnControlAutoPilot = findViewById(R.id.btnControlAutoPilot)
+ rvReportConsole = findViewById(R.id.rvReportConsole)
+
+
+
+
+// initSpeedView() TODO
+ consoleAdapter.setData(consoleList)
+ rvReportConsole.adapter = consoleAdapter
+ initAutopilotLineData()
+
+ // 启动自动驾驶
+ btnControlAutoPilot.setOnClickListener {
+ if (currentAutopilotStatus != 0) {
+ if (currentAutopilotStatus != 2) {
+ mTrajectoryListInfo?.let { trajectoryListInfo ->
+ mTrajectorySiteInfo?.let { trajectorySiteInfo ->
+ if (trajectorySiteInfo.isEmpty()) {
+ if (btnControlAutoPilot.isChecked) {
+ ToastUtils.showShort("该路线缺少站点信息")
+ }
+ btnControlAutoPilot.isChecked = false
+ return@setOnClickListener
+ }
+ val routeInfo = MessagePad.RouteInfo.newBuilder()
+ routeInfo.routeID = trajectoryListInfo.lineId
+ routeInfo.routeName = trajectoryListInfo.lineName
+
+ routeInfo.vehicleType =
+ if (VehicleConfigData.getCarType() == VehicleType.TAXI) {
+ 9
+ } else {
+ 10
+ }
+ routeInfo.isSpeakVoice = false
+
+ val startSite = trajectorySiteInfo[0]
+ val endSite = trajectorySiteInfo[trajectorySiteInfo.size - 1]
+
+ routeInfo.startName =
+ PinYinUtil.getPinYinHeadChar(startSite.name) // 起点名称拼音首字母大写:科学城B区2号门(KXCBQ2HM)
+ routeInfo.endName =
+ PinYinUtil.getPinYinHeadChar(endSite.name) // 终点名称拼音首字母大写:科学城C区三号门(KXCCQSHM)
+
+ val startLoc = routeInfo.startLocationBuilder
+ startLoc.latitude = startSite.wgs84Lat
+ startLoc.longitude = startSite.wgs84Lon
+
+ val endLoc = routeInfo.endLocationBuilder
+ endLoc.latitude = endSite.wgs84Lat
+ endLoc.longitude = endSite.wgs84Lon
+
+ routeInfo.startLocation = startLoc.build()
+ routeInfo.endLocation = endLoc.build()
+
+ //传入站点列表
+ for(site in trajectorySiteInfo){
+ val locBuilder = MessagePad.Location.newBuilder()
+ locBuilder.latitude = site.wgs84Lat
+ locBuilder.longitude = site.wgs84Lon
+ routeInfo.addWayPoints(locBuilder.build())
+ }
+
+ // 初始化选择的自动驾驶路线信息
+ routeInfo.line = initTrajectoryLine(trajectoryListInfo)
+
+ // 模拟强制进入
+ //if (TelematicsControlApi.instance.requestEnterAutoPilotSimulate(true)) {
+ // 启动自动驾驶 TODO
+// if (CallerAutoPilotControlManager.startAutoPilot(currentAutopilot)) {
// btnControlAutoPilot.isChecked = true
// Log.d(TAG, "自动驾驶命令下发成功")
// ToastUtils.showShort("自动驾驶命令下发成功")
@@ -490,252 +495,215 @@ class CheckAutopilotView @JvmOverloads constructor(
// Log.e(TAG, "自动驾驶命令下发失败")
// ToastUtils.showShort("自动驾驶命令下发失败")
// }
-// } ?: let {
-// btnControlAutoPilot.isChecked = false
-// Log.e(TAG, "进入自动驾驶--失败")
-// Log.e(TAG, "站点信息异常,请选择要测试的驾驶路线!!!")
-// ToastUtils.showShort("进入自动驾驶--失败")
-// }
-// } ?: let {
-// btnControlAutoPilot.isChecked = false
-// Log.e(TAG, "进入自动驾驶--失败")
-// Log.e(TAG, "未选择自动驾驶路线,请选择要测试的驾驶路线!!!")
-// ToastUtils.showShort("进入自动驾驶--失败")
-// }
-// } else {
-// // 模拟强制退出
-// //if (TelematicsControlApi.instance.requestEnterAutoPilotSimulate(false)) {
-// // 正常流程退出自动驾驶
-// CallerAutoPilotControlManager.cancelAutoPilot()
-// }
-// } else {
-// btnControlAutoPilot.isChecked = false
-// ToastUtils.showShort("车辆未就绪,请稍后再试")
-// }
-// }
-//
-// }
-//
-// /**
-// * 自动驾驶车速设置
-// */
-// //TODO
-//
-// /**
-// * 初始化轨迹信息
-// */
-// private fun initTrajectoryLine(trajectoryListInfo: TrajectoryListInfo): MessagePad.Line {
-// // 给自动驾驶用于进行循迹路线加载
-// mTrajectoryInfo?.trackContrail?.let {
-// mTrajectoryLine.lineId = trajectoryListInfo.lineId.toLong()
-// mTrajectoryLine.lineName =trajectoryListInfo.lineName
-// mTrajectoryLine.trajMd5 = it.csvFileMd5
-// mTrajectoryLine.trajUrl = it.csvFileUrl
-// mTrajectoryLine.stopMd5 = it.txtFileMd5
-// mTrajectoryLine.stopUrl = it.txtFileUrl
-// mTrajectoryLine.timestamp = it.contrailSaveTime
-// mTrajectoryLine.vehicleModel =
-// VehicleConfigData.getCarBrand() + VehicleConfigData.getCarModel()
-// } ?: let {
-// btnControlAutoPilot.isChecked = false
-// Log.e(TAG, "循迹路线未配置! 请登录运营管理平台配置!")
-// ToastUtils.showShort("循迹路线未配置!请登录运营管理平台配置!")
-// }
-// mTrajectoryInfo?.dbqpContrail?.let {
-// mTrajectoryLine.trajUrlDpqp = it.csvFileUrl
-// mTrajectoryLine.trajMd5Dpqp = it.csvFileMd5
-// mTrajectoryLine.stopUrlDpqp = it.txtFileUrl
-// mTrajectoryLine.stopMd5Dpqp = it.txtFileMd5
-// mTrajectoryLine.timestampDpqp = it.contrailSaveTime
-// } ?: let {
-// Log.e(TAG, "dbqp路线未配置!请登录运营管理平台配置!")
-// //ToastUtils.show("dbqp路线未配置!请登录运营管理平台配置!")
-// }
-//
-// return mTrajectoryLine.build()
-// }
-//
-// /**
-// * 初始化路线选择器
-// */
-// private fun initAutopilotLineData() {
-// // 循迹路线选择
-// tvAutoDriveLineSelect.setOnClickListener {
-// //弹出路线选择弹窗
-// if (selectAutopilotLineDialog == null) {
-// selectAutopilotLineDialog = SelectAutopilotLineDialog(context)
-// }
-// mActivity?.let { activity ->
-// selectAutopilotLineDialog?.setListener(object :
-// SelectAutopilotLineDialog.ClickListener {
-// override fun onClick(info: TrajectoryListInfo) {
-// Log.d(TAG, "选中路线:${info}")
-// info.let {
-// mTrajectoryListInfo = it
-// tvAutoDriveLineSelect.text = it.lineName
-// checkAutoLine(it)
-// }
-// }
-// })
-// selectAutopilotLineDialog?.showSelectLineDialog(activity)
-// }
-// }
-// }
-//
-// /**
-// * 调用接口获取选中的路线信息
-// */
-// private fun checkAutoLine(trajectoryListInfo: TrajectoryListInfo) {
-// val trajectoryInfoReq = TrajectoryInfoReq(
-// VehicleConfigData.getCarBrand(),
-// VehicleConfigData.getCarModel(),
-// trajectoryListInfo.lineId
-// )
-// Log.d(
-// TAG,
-// "调用接口获取选中的路线信息 checkAutoLine,trajectoryInfoReq:${trajectoryInfoReq}"
-// )
-// // 处理Taxi
-// // 处理BUS包含:JV、KW、FT、SW
-// TrajectoryApiClient.querySiteList(
-// this,
-// VehicleConfigData.getCarType().name,
-// trajectoryListInfo.lineId,
-// object : NetworkCallback> {
-// override fun onSuccess(data: ArrayList) {
-// mTrajectorySiteInfo = data
-// if (data.size > 0) {
-// btnControlAutoPilot.isEnabled = true
-// } else {
-// btnControlAutoPilot.isEnabled = false
-// ToastUtils.showShort("该路线缺少站点信息")
-// }
-// }
-//
-// override fun onError(msg: String) {
-// Log.e(
-// TAG,
-// "获取 ${VehicleConfigData.getCarType().name} 站点详情异常,异常原因:网络异常"
+ } ?: let {
+ btnControlAutoPilot.isChecked = false
+ Log.e(TAG, "进入自动驾驶--失败")
+ Log.e(TAG, "站点信息异常,请选择要测试的驾驶路线!!!")
+ ToastUtils.showShort("进入自动驾驶--失败")
+ }
+ } ?: let {
+ btnControlAutoPilot.isChecked = false
+ Log.e(TAG, "进入自动驾驶--失败")
+ Log.e(TAG, "未选择自动驾驶路线,请选择要测试的驾驶路线!!!")
+ ToastUtils.showShort("进入自动驾驶--失败")
+ }
+ } else {
+ // 模拟强制退出
+ //if (TelematicsControlApi.instance.requestEnterAutoPilotSimulate(false)) {
+ // 正常流程退出自动驾驶
+ CallerAutoPilotControlManager.cancelAutoPilot()
+ }
+ } else {
+ btnControlAutoPilot.isChecked = false
+ ToastUtils.showShort("车辆未就绪,请稍后再试")
+ }
+ }
+
+ }
+
+ /**
+ * 自动驾驶车速设置
+ */
+ //TODO
+
+ /**
+ * 初始化轨迹信息
+ */
+ private fun initTrajectoryLine(trajectoryListInfo: TrajectoryListInfo): MessagePad.Line {
+ // 给自动驾驶用于进行循迹路线加载
+ mTrajectoryInfo?.trackContrail?.let {
+ mTrajectoryLine.lineId = trajectoryListInfo.lineId.toLong()
+ mTrajectoryLine.lineName =trajectoryListInfo.lineName
+ mTrajectoryLine.trajMd5 = it.csvFileMd5
+ mTrajectoryLine.trajUrl = it.csvFileUrl
+ mTrajectoryLine.stopMd5 = it.txtFileMd5
+ mTrajectoryLine.stopUrl = it.txtFileUrl
+ mTrajectoryLine.timestamp = it.contrailSaveTime
+ mTrajectoryLine.vehicleModel =
+ VehicleConfigData.getCarBrand() + VehicleConfigData.getCarModel()
+ } ?: let {
+ btnControlAutoPilot.isChecked = false
+ Log.e(TAG, "循迹路线未配置! 请登录运营管理平台配置!")
+ ToastUtils.showShort("循迹路线未配置!请登录运营管理平台配置!")
+ }
+ mTrajectoryInfo?.dbqpContrail?.let {
+ mTrajectoryLine.trajUrlDpqp = it.csvFileUrl
+ mTrajectoryLine.trajMd5Dpqp = it.csvFileMd5
+ mTrajectoryLine.stopUrlDpqp = it.txtFileUrl
+ mTrajectoryLine.stopMd5Dpqp = it.txtFileMd5
+ mTrajectoryLine.timestampDpqp = it.contrailSaveTime
+ } ?: let {
+ Log.e(TAG, "dbqp路线未配置!请登录运营管理平台配置!")
+ //ToastUtils.show("dbqp路线未配置!请登录运营管理平台配置!")
+ }
+
+ return mTrajectoryLine.build()
+ }
+
+ /**
+ * 初始化路线选择器
+ */
+ private fun initAutopilotLineData() {
+ // 循迹路线选择
+ tvAutoDriveLineSelect.setOnClickListener {
+ //弹出路线选择弹窗
+ if (selectAutopilotLineDialog == null) {
+ selectAutopilotLineDialog = SelectAutopilotLineDialog(context)
+ }
+ mActivity?.let { activity ->
+ selectAutopilotLineDialog?.setListener(object :
+ SelectAutopilotLineDialog.ClickListener {
+ override fun onClick(info: TrajectoryListInfo) {
+ Log.d(TAG, "选中路线:${info}")
+ info.let {
+ mTrajectoryListInfo = it
+ tvAutoDriveLineSelect.text = it.lineName
+ checkAutoLine(it)
+ }
+ }
+ })
+ selectAutopilotLineDialog?.showSelectLineDialog(activity)
+ }
+ }
+ }
+
+ /**
+ * 调用接口获取选中的路线信息
+ */
+ private fun checkAutoLine(trajectoryListInfo: TrajectoryListInfo) {
+ val trajectoryInfoReq = TrajectoryInfoReq(
+ VehicleConfigData.getCarBrand(),
+ VehicleConfigData.getCarModel(),
+ trajectoryListInfo.lineId
+ )
+ Log.d(
+ TAG,
+ "调用接口获取选中的路线信息 checkAutoLine,trajectoryInfoReq:${trajectoryInfoReq}"
+ )
+ // 处理Taxi
+ // 处理BUS包含:JV、KW、FT、SW
+ TrajectoryApiClient.querySiteList(
+ this,
+ VehicleConfigData.getCarType().name,
+ trajectoryListInfo.lineId,
+ object : NetworkCallback> {
+ override fun onSuccess(data: ArrayList) {
+ mTrajectorySiteInfo = data
+ if (data.size > 0) {
+ btnControlAutoPilot.isEnabled = true
+ } else {
+ btnControlAutoPilot.isEnabled = false
+ ToastUtils.showShort("该路线缺少站点信息")
+ }
+ }
+
+ override fun onError(msg: String) {
+ Log.e(
+ TAG,
+ "获取 ${VehicleConfigData.getCarType().name} 站点详情异常,异常原因:网络异常"
+ )
+ ToastUtils.showShort("获取 ${VehicleConfigData.getCarType().name} 站点详情异常,异常原因:网络异常")
+ }
+ }
+ )
+ TrajectoryApiClient.queryTrajectoryInfo(
+ this,
+ VehicleConfigData.getCarType().name,
+ trajectoryInfoReq,
+ object : NetworkCallback {
+ override fun onSuccess(data: TrajectoryInfo) {
+ mTrajectoryInfo = data
+
+ // 先发给自动驾驶下载路线 TODO
+// CallerAutoPilotControlManager.sendTrajectoryDownloadReq(
+// mAutoPilotLine
// )
-// ToastUtils.showShort("获取 ${VehicleConfigData.getCarType().name} 站点详情异常,异常原因:网络异常")
-// }
-// }
-// )
-// TrajectoryApiClient.queryTrajectoryInfo(
-// this,
-// VehicleConfigData.getCarType().name,
-// trajectoryInfoReq,
-// object : NetworkCallback {
-// override fun onSuccess(data: TrajectoryInfo) {
-// mTrajectoryInfo = data
-//
-// // 先发给自动驾驶下载路线
-// TelematicsControlApi.instance.sendTrajectoryDownloadReq(
-// initTrajectoryLine(
-// trajectoryListInfo
-// )
-// )
-// }
-//
-// override fun onError(msg: String) {
-// Log.e(
-// TAG,
-// "查询 ${VehicleConfigData.getCarType().name} 线路对应的轨迹 异常,异常原因:网络异常"
-// )
-// ToastUtils.showShort("查询 ${VehicleConfigData.getCarType().name} 线路对应的轨迹 异常,异常原因:网络异常")
-// }
-// }
-// )
-// }
-//
-//
-// override fun onAttachedToWindow() {
-// super.onAttachedToWindow()
-// mLifecycleRegistry.currentState = Lifecycle.State.STARTED
-// postDelayed({
-// //订阅工控机异常上报
-// reportMsgInfoSubscriber =
-// CommSubscriber(
-// ConfigFactory.getInstance().topicConfig.autopilotInfoReportMsgInfo.topicPath,
-// ConfigFactory.getInstance().topicConfig.autopilotInfoReportMsgInfo.msgType,
-// MogoReportMsg.MogoReportMessage.parser(),
-// TopicSubscriberEventKey.REPORT_MSG_SUBSCRIBER
-// )
-// TopicSubscriberServiceManager.instance.addTopicSubscriber(
-// reportMsgInfoSubscriber!!.getTopicPath(),
-// reportMsgInfoSubscriber!!
-// )
-//
-// reportMsgErrorSubscriber =
-// CommSubscriber(
-// ConfigFactory.getInstance().topicConfig.autopilotInfoReportMsgError.topicPath,
-// ConfigFactory.getInstance().topicConfig.autopilotInfoReportMsgError.msgType,
-// MogoReportMsg.MogoReportMessage.parser(),
-// TopicSubscriberEventKey.REPORT_MSG_SUBSCRIBER
-// )
-// TopicSubscriberServiceManager.instance.addTopicSubscriber(
-// reportMsgErrorSubscriber!!.getTopicPath(),
-// reportMsgErrorSubscriber!!
-// )
-// }, 2000)
-//
-// // 订阅数据
-// FlowBus.with(TopicSubscriberEventKey.REPORT_MSG_SUBSCRIBER)
-// .register(this) {
-// consoleObserver.onChanged(it)
-// }
-//
-// //订阅到站提醒
-// FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Arrival_Notification)
-// .register(this) {
-// arrivalObserver.onChanged(it)
-// }
-//
-// //订阅工控机日志监控
-// FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Mogo_Report_Message)
-// .register(this) {
-// reportObserver.onChanged(it)
-// }
-//
-// //订阅自动驾驶状态
-// FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Autopilot_State)
-// .register(this) {
-// autopilotStateObserver.onChanged(it)
-// }
-//
-// //订阅车机基础信息
-// FlowBus.withStick(TelematicsSubscriberEventKey.Subscribe_CarConfig_Resp)
-// .register(this) {
-// carConfigObserver.onChanged(it)
-// }
-//
-// //订阅自车状态(底盘),车灯、转向灯等
-// FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Vehicle_State)
-// .register(this) {
-// vehicleStateObserver.onChanged(it)
-// }
-// }
-//
-// override fun onDetachedFromWindow() {
-// super.onDetachedFromWindow()
-// scopeUploadReportInfo.cancel()
-//
-// mLifecycleRegistry.currentState = Lifecycle.State.DESTROYED
-//
-// reportMsgInfoSubscriber?.let {
-// TopicSubscriberServiceManager.instance.removeTopicSubscriber(
-// reportMsgInfoSubscriber!!.getTopicPath(),
-// )
-// }
-// reportMsgErrorSubscriber?.let {
-// TopicSubscriberServiceManager.instance.removeTopicSubscriber(
-// reportMsgErrorSubscriber!!.getTopicPath(),
-// )
-// }
-// }
+ }
+
+ override fun onError(msg: String) {
+ Log.e(
+ TAG,
+ "查询 ${VehicleConfigData.getCarType().name} 线路对应的轨迹 异常,异常原因:网络异常"
+ )
+ ToastUtils.showShort("查询 ${VehicleConfigData.getCarType().name} 线路对应的轨迹 异常,异常原因:网络异常")
+ }
+ }
+ )
+ }
+
+
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ mLifecycleRegistry.currentState = Lifecycle.State.STARTED
+ //订阅工控机异常上报 TODO
+
+ //reportMsgErrorSubscriber TODO
+
+ // 订阅数据
+ FlowBus.with(TopicSubscriberEventKey.REPORT_MSG_SUBSCRIBER)
+ .register(this) {
+ consoleObserver.onChanged(it)
+ }
+
+ //订阅到站提醒
+ FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Arrival_Notification)
+ .register(this) {
+ arrivalObserver.onChanged(it)
+ }
+
+ //订阅工控机日志监控
+ FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Mogo_Report_Message)
+ .register(this) {
+ reportObserver.onChanged(it)
+ }
+
+ //订阅自动驾驶状态
+ FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Autopilot_State)
+ .register(this) {
+ autopilotStateObserver.onChanged(it)
+ }
+
+ //订阅车机基础信息
+ FlowBus.withStick(TelematicsSubscriberEventKey.Subscribe_CarConfig_Resp)
+ .register(this) {
+ carConfigObserver.onChanged(it)
+ }
+
+ //订阅自车状态(底盘),车灯、转向灯等
+ FlowBus.with(TelematicsSubscriberEventKey.Subscribe_Vehicle_State)
+ .register(this) {
+ vehicleStateObserver.onChanged(it)
+ }
+ }
+
+ override fun onDetachedFromWindow() {
+ super.onDetachedFromWindow()
+ scopeUploadReportInfo.cancel()
+ mLifecycleRegistry.currentState = Lifecycle.State.DESTROYED
+ }
override fun getLifecycle(): Lifecycle {
- return lifecycle
+ return mLifecycleRegistry
}
}
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/utils/PinYinUtil.java b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/utils/PinYinUtil.java
new file mode 100644
index 0000000000..264c1c28c8
--- /dev/null
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/java/com/zhjt/mogo_core_function_devatools/rviz/utils/PinYinUtil.java
@@ -0,0 +1,31 @@
+package com.zhjt.mogo_core_function_devatools.rviz.utils;
+
+import net.sourceforge.pinyin4j.PinyinHelper;
+
+/**
+ * @author: wangmingjun
+ * @date: 2021/11/26
+ */
+public class PinYinUtil {
+ /**
+ * 得到中文字符串首字母
+ * @param str 需要转化的中文字符串
+ * @return 大写首字母缩写的字符串
+ */
+ public static String getPinYinHeadChar(String str) {
+ str = str.replaceAll("[\\p{P}‘’“”|+=¥$<>^~~]", "");
+ StringBuilder convert = new StringBuilder();
+ for (int j = 0; j < str.length(); j++) {
+ char word = str.charAt(j);
+ String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
+ if (pinyinArray != null) {
+ convert.append(pinyinArray[0].charAt(0));
+ } else {
+ if (!"".equals(String.valueOf(word).trim())){
+ convert.append(word);
+ }
+ }
+ }
+ return convert.toString().trim().toUpperCase();
+ }
+}
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/dialog_select_autopilot_line.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/dialog_select_autopilot_line.xml
index 716d097698..fef58e1458 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/dialog_select_autopilot_line.xml
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/dialog_select_autopilot_line.xml
@@ -9,10 +9,10 @@
android:id="@+id/tvSelectLineTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_margin="@dimen/dp_15"
+ android:layout_margin="@dimen/dp_30"
android:text="请选择自动驾驶路线"
android:textColor="#FFFFFFFF"
- android:textSize="@dimen/sp_18"
+ android:textSize="@dimen/sp_36"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -33,8 +33,8 @@
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_autopilot_line.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_autopilot_line.xml
index 889bf9af4b..5ddb6a64a7 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_autopilot_line.xml
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_autopilot_line.xml
@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
- android:textSize="@dimen/sp_16"
+ android:textSize="@dimen/sp_32"
android:gravity="center_horizontal"
android:padding="@dimen/dp_10"
>
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_console.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_console.xml
index e064003f1d..a92461ce8c 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_console.xml
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/item_console.xml
@@ -14,13 +14,13 @@
android:layout_marginEnd="@dimen/dp_5"
android:gravity="start"
android:textColor="@color/white"
- android:textSize="@dimen/sp_12"
+ android:textSize="@dimen/sp_30"
tools:text="ReportMsg" />
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/layout_autopilot_check.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/layout_autopilot_check.xml
new file mode 100644
index 0000000000..04293193ab
--- /dev/null
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/layout_autopilot_check.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/view_check_autopilot.xml b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/view_check_autopilot.xml
index a25781430d..2f9b4e1eb8 100644
--- a/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/view_check_autopilot.xml
+++ b/core/function-impl/mogo-core-function-devatools-rviz/src/main/res/layout/view_check_autopilot.xml
@@ -17,12 +17,12 @@
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toTopOf="@id/ivSpeedReduce"
android:text="请选择自动驾驶路线"
- android:padding="@dimen/dp_5"
- android:textSize="@dimen/sp_18"
+ android:padding="@dimen/dp_10"
+ android:textSize="@dimen/sp_36"
android:textColor="@color/white"
android:gravity="center_horizontal"
- android:layout_margin="@dimen/dp_10"
+ android:layout_margin="@dimen/dp_20"
/>
+ android:layout_marginStart="@dimen/dp_20" />
-
+ app:layout_constraintBottom_toBottomOf="parent"
+ android:layout_marginTop="@dimen/dp_200"
+ android:layout_marginBottom="@dimen/dp_200"
+ >
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
-