[singapore]
[用户信息展示]
This commit is contained in:
yangyakun
2026-04-15 20:14:43 +08:00
parent c09d05faad
commit b234343dab
34 changed files with 1086 additions and 71 deletions

View File

@@ -35,6 +35,11 @@ class WorkOrderManager{
* 展示接管记录页面
*/
fun showTakeOverRecordView(context: Context){
if(hideFloat!=null){
hideFloat?.invoke()
hideFloat = null
return
}
val takeOverRecordView = TakeOverRecordView(context)
takeOverRecordView.setOnClickListener(object: TakeOverRecordView.ClickListener{
override fun onClose() {

View File

@@ -65,11 +65,11 @@ import org.json.JSONObject
import system_master.SsmInfo
import system_master.SystemStatusInfo
private fun String.parsePlateNo(): String {
fun String.parsePlateNo(): String {
return " " + substring(0, 2) + " " + substring(2) + " "
}
private fun String.parsePhoneNo(): String {
fun String.parsePhoneNo(): String {
return take(3) + "****" + takeLast(4)
}

View File

@@ -0,0 +1,51 @@
package com.mogo.eagle.core.function.hmi.bone.unmanned
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.kotlin.onClick
import kotlinx.android.synthetic.main.unmanned_view_tool_logout.view.tvSignOut
import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManager
/**
* 退出登录
*/
class UnmannedOperationPanelView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
companion object {
const val TAG = "UnmannedToolStopServiceView"
}
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_view_operation_panel, this, true)
initView()
}
private fun initView() {
onClick {
if(CallerHmiManager.getOperatePanelShowing()){
CallerHmiManager.toggleOperatePanel(false)
}else {
CallerHmiManager.toggleOperatePanel(true)
}
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
}

View File

@@ -0,0 +1,47 @@
package com.mogo.eagle.core.function.hmi.bone.unmanned
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.kotlin.onClick
import kotlinx.android.synthetic.main.unmanned_view_tool_logout.view.tvSignOut
import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManager
/**
* 退出登录
*/
class UnmannedTakeOverView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
companion object {
const val TAG = "UnmannedToolStopServiceView"
}
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_view_take_over, this, true)
initView()
}
private fun initView() {
onClick {
CallerDevaToolsManager.showTakeOverRecordView(it.context)
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
}

View File

@@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.kotlin.onClick
import kotlinx.android.synthetic.main.unmanned_view_tool_logout.view.tvSignOut
@@ -11,7 +12,7 @@ import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManag
/**
* 一件停服
* 退出登录
*/
class UnmannedToolLogoutView @JvmOverloads constructor(
context: Context,
@@ -29,8 +30,8 @@ class UnmannedToolLogoutView @JvmOverloads constructor(
}
private fun initView() {
//一键停服
tvSignOut.onClick {
//退出登录
onClick {
CallerOchBizFunctionCall4EagleManager.logout()
}

View File

@@ -0,0 +1,318 @@
package com.mogo.eagle.core.function.hmi.bone.unmanned
import android.content.Context
import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout.GONE
import androidx.constraintlayout.widget.ConstraintLayout.VISIBLE
import androidx.lifecycle.LifecycleObserver
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.api.datacenter.IDataCenterBizListener
import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener
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.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.datacenter.CallerDataCenterBizListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.devatools.CallerOTAManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.bone.tab.parsePlateNo
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
import com.mogo.eagle.core.function.hmi.ui.tools.OfflineMapDialog
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog
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_HMI
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.map.MogoData
import com.zhjt.mogo_core_function_devatools.ota.OTAUpgradeConfig
import kotlinx.android.synthetic.main.dialog_version_info.acivCloseDialog
import kotlinx.android.synthetic.main.dialog_version_info.tvADMapVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvHDMapVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvADVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvCarNo
import kotlinx.android.synthetic.main.dialog_version_info.tvGridMapVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvHDMapUpdate
import kotlinx.android.synthetic.main.dialog_version_info.tvPADUpdate
import kotlinx.android.synthetic.main.dialog_version_info.tvPADVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvSlamMapVersionName
import kotlinx.android.synthetic.main.dialog_version_info.tvSnInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import org.json.JSONObject
import system_master.SsmInfo
import system_master.SystemStatusInfo
/**
* @author XuXinChao
* @description 工控机确认升级对话框
* @since: 2022/1/13
*/
class UnmannedVersionInfoDialog(context: Context) :
BaseFloatDialog(context,TAG), LifecycleObserver, IMoGoCheckAutoPilotBtnListener,
IMoGoAutopilotStatusListener, IDataCenterBizListener {
companion object {
private const val TAG = "UnmannedVersionInfoDialog"
private var adUpgradeDialog: UnmannedVersionInfoDialog? = null
fun show(context: Context?) {
context?.let {
if (adUpgradeDialog == null) {
adUpgradeDialog = UnmannedVersionInfoDialog(it)
}
adUpgradeDialog?.let { dialog ->
if (dialog.isShowing) {
return
}
dialog.show()
}
}
}
}
@Volatile
private var isHDCached = false
init {
setContentView(R.layout.dialog_version_info)
setCanceledOnTouchOutside(true)
initView()
initListener()
}
private fun initView() {
CallerHmiListenerManager.addListener(TAG,this)
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerDataCenterBizListener.addListener(TAG, this)
showCurrentPadVersion()
showCurrentAdVersion()
updateAdHdMapVersion()
updateGridMapVersion()
updateSlamMapVersion()
tvSnInfo.text = SharedPrefsMgr.getInstance().sn
GlobalScope.launch(Dispatchers.IO){
MogoData.mogoMapData.get()?.isCityDataCached {
updateHDDataCacheStatus(it)
}
}
}
private fun initListener(){
acivCloseDialog.setOnClickListener {
dismiss()
}
//鹰眼版本 检查更新
tvPADUpdate.setOnClickListener {
HmiActionLog.hmiAction(
"${SceneConstant.M_HMI}${TAG}",
"pad version view clicked"
)
val provider = CallerDevaToolsManager.upgradeProvider()
if (provider?.isDownloading() == true) {
// ToastUtils.showShort("正在下载最新版本,请稍候再试...")
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_downloading_new_version)
return@setOnClickListener
}
CallerDevaToolsManager.queryAppUpgrade { upgradeStatus, errorInfo ->
if (!upgradeStatus && !errorInfo.isNullOrEmpty()) {
ToastUtils.showShort(errorInfo)
}
}
}
//域控OTA升级 检查更新
tvHDMapVersionName.setOnClickListener {
HmiActionLog.hmiAction(
"${SceneConstant.M_HMI}${TAG}",
"ad version view clicked"
)
if(OTAUpgradeConfig.supportOTA){
//查询OTA状态
OTAUpgradeConfig.isQuery = true
OTAUpgradeConfig.promptedUpgrade.remove(OTAUpgradeConfig.otaToken)
CallerAutoPilotControlManager.sendSsmFuncOtaStatusQuery(OTAUpgradeConfig.otaToken)
//查询OTA2.0升级
val query = JSONObject()
query.put("cmd","PAD_QUERY_UPGRADE_STATUS")
query.put("token", OTAUpgradeConfig.token)
CallerAutoPilotControlManager.sendOtaPadMsgQuery(query.toString())
CallerOTAManager.invokeOtaPadMsgQuery()
}else{
// ToastUtils.showLong("当前SSM节点未成功启动或当前版本不支持OTA升级")
ToastUtils.showLong(R.string.module_mogo_core_function_hmi_ssm_not_start)
}
}
tvHDMapVersionName.text = DebugConfig.getMapVersion()
//高精地图 检查更新
tvHDMapUpdate.setOnClickListener {
HmiActionLog.hmiAction(
"${SceneConstant.M_HMI}${TAG}",
mapOf("isHDCached" to isHDCached)
)
if (isHDCached) { // 已缓存
ToastUtils.showShort(context.resources.getString(R.string.offline_had_downloaded))
} else {// 未缓存
if (!NetworkUtils.isConnected(context)) {
ToastUtils.showShort(context.resources.getString(R.string.offline_update_tip))
return@setOnClickListener
}
if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode
if ((CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude <= 0.0 && CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude <= 0.0)) {// 未拿到高精的经纬度
ToastUtils.showShort(context.resources.getString(R.string.location_try_again))
} else { // 拿到了高精的经纬度
OfflineMapDialog(context).show()
}
} else {// 拿到高德的cityCode
OfflineMapDialog(context).show()
}
}
}
}
private fun showCurrentPadVersion() {
tvPADVersionName.text = AppUtils.getAppVersionName()
}
private fun showCurrentAdVersion() {
UiThreadHandler.post {
if(AppConfigInfo.mapShowName.isNotEmpty()){
tvADVersionName.text = AppConfigInfo.mapShowName
}else{
if(CallerAutoPilotStatusListenerManager.getDockerVersion().isNullOrEmpty()){
tvADVersionName.text = ""
}else{
tvADVersionName.text = CallerAutoPilotStatusListenerManager.getDockerVersion()
}
}
}
}
/**
* 更新域控高精地图版本
*/
private fun updateAdHdMapVersion() {
if (AppConfigInfo.adHdMapVersion.isNotEmpty()) {
UiThreadHandler.post {
if(tvADMapVersionName.text.contains(AppConfigInfo.adHdMapVersion)){
return@post
}
CallerLogger.i(SceneConstant.M_HMI + TAG, "updateAdHdMapVersion, adHdMapVersion:${AppConfigInfo.adHdMapVersion} , text:${tvADMapVersionName.text}")
tvADMapVersionName.text = AppConfigInfo.adHdMapVersion
}
}
}
/**
* 更新工控机栅格地图版本
*/
private fun updateGridMapVersion(){
if(AppConfigInfo.gridMapVersion.isNotEmpty()){
UiThreadHandler.post{
if(tvGridMapVersionName.text.contains(AppConfigInfo.gridMapVersion)){
return@post
}
CallerLogger.i(SceneConstant.M_HMI + TAG, "updateGridMapVersion, gridMapVersion:${AppConfigInfo.gridMapVersion}")
tvGridMapVersionName.text = AppConfigInfo.gridMapVersion
tvGridMapVersionName.visibility = View.VISIBLE
}
}else{
UiThreadHandler.post{
tvGridMapVersionName.visibility = View.GONE
}
}
}
/**
* 更新工控机激光Slam地图版本
*/
private fun updateSlamMapVersion(){
if(AppConfigInfo.slamMapVersion.isNotEmpty()){
UiThreadHandler.post{
if(tvSlamMapVersionName.text.contains(AppConfigInfo.slamMapVersion)){
return@post
}
CallerLogger.i(SceneConstant.M_HMI + TAG, "updateSlamMapVersion, slamMapVersion:${AppConfigInfo.slamMapVersion}")
tvSlamMapVersionName.text = AppConfigInfo.slamMapVersion
tvSlamMapVersionName.visibility = View.VISIBLE
}
}else{
UiThreadHandler.post{
tvSlamMapVersionName.visibility = View.GONE
}
}
}
override fun onAutopilotDockerInfo(dockerVersion: String) {
super.onAutopilotDockerInfo(dockerVersion)
showCurrentAdVersion()
}
override fun updateHDDataCacheStatus(isCached: Boolean) {
isHDCached = isCached
}
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {
CallerLogger.i(SceneConstant.M_HMI + TAG, "hdMapVer=" + status.hdMapVer)
updateAdHdMapVersion()
updateGridMapVersion()
updateSlamMapVersion()
}
/**
* 定频SSM接口
* 1hz hq m1 MAP350开始支持其他车型MAP360开始支持
* 定频SSM接入后 onStatusQueryResp 状态查询应答接口将弃用
* @param statusInf 数据
*/
override fun onSystemStatus(statusInf: SsmInfo.SsmStatusInf) {
CallerLogger.i(SceneConstant.M_HMI + TAG, "hdMapVer=" + statusInf.hdMapVer)
updateAdHdMapVersion()
updateGridMapVersion()
updateSlamMapVersion()
}
override fun invokeCarNo(no: String?) {
super.invokeCarNo(no)
UiThreadHandler.post {
if (!no.isNullOrEmpty()) {
if (tvCarNo.text.isNotEmpty() && tvCarNo.text == no) {
CallerLogger.i("$M_HMI${TAG}", "已存在车牌号")
return@post
}
tvCarNo.visibility = VISIBLE
tvCarNo.text = no.parsePlateNo()
} else {
tvCarNo.visibility = GONE
tvCarNo.text = ""
}
}
}
override fun dismiss() {
super.dismiss()
CallerHmiListenerManager.removeListener(TAG)
CallerAutoPilotStatusListenerManager.removeListener(TAG)
CallerDataCenterBizListener.removeListener(TAG)
adUpgradeDialog = null
}
}

View File

@@ -0,0 +1,43 @@
package com.mogo.eagle.core.function.hmi.bone.unmanned
import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.kotlin.onClick
/**
* 退出登录
*/
class UnmannedVersionInfoView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr) {
companion object {
const val TAG = "UnmannedToolStopServiceView"
}
init {
LayoutInflater.from(context).inflate(R.layout.unmanned_view_version_info, this, true)
initView()
}
private fun initView() {
onClick {
UnmannedVersionInfoDialog.show(context)
}
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
}
}

View File

@@ -90,6 +90,7 @@ import me.jessyan.autosize.utils.AutoSizeUtils
import java.lang.ref.WeakReference
import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicReference
import androidx.core.view.isVisible
/**
* @author xiaoyuzhou
@@ -489,6 +490,15 @@ class MoGoHmiProvider : IMoGoHmiProvider {
CallerHmiViewControlListenerManager.invokeGreenWaveDismiss()
}
override fun getOperatePanelShowing(): Boolean {
operatePanel.get()?.get()?.let {
if (it.isVisible) {
return true
}
}
return false
}
override fun toggleOperatePanel(show: Boolean) {
val activity = AppStateManager.currentActivity()
if (activity == null) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<corners android:radius="@dimen/dp_15" />
<solid android:color="@color/color_2EACFF" />
</shape>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_20"/>
<solid android:color="@color/color_3D000000" />
</shape>

View File

@@ -0,0 +1,345 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/dp_1400"
android:layout_height="@dimen/dp_880"
android:background="@drawable/bg_bone_dialog"
app:roundLayoutRadius="@dimen/dp_50">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/acivCloseDialog"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:padding="@dimen/dp_22"
android:layout_marginTop="@dimen/dp_28"
android:layout_marginEnd="@dimen/dp_28"
android:src="@drawable/bia_version_dialog_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/aciv_version_head_start"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:layout_marginTop="@dimen/dp_70"
android:layout_marginEnd="@dimen/dp_10"
android:src="@drawable/icon_show_version_info"
app:layout_constraintEnd_toStartOf="@+id/actv_version_head_tail"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_version_head_tail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:text="@string/tab_version_info"
android:textColor="@color/white"
android:textSize="@dimen/dp_45"
app:layout_constraintBottom_toBottomOf="@+id/aciv_version_head_start"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/aciv_version_head_start"
app:layout_constraintTop_toTopOf="@+id/aciv_version_head_start" />
<TextView
android:id="@+id/tvCarNoPos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_120"
android:layout_marginTop="@dimen/dp_49"
android:text="@string/tab_car_no"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/aciv_version_head_start" />
<TextView
android:id="@+id/tvCarNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:gravity="center"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="123456789"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/tvCarNoPos"
app:layout_constraintLeft_toRightOf="@+id/tvCarNoPos"
app:layout_constraintTop_toTopOf="@+id/tvCarNoPos"
tools:visibility="visible" />
<TextView
android:id="@+id/tvSnPos"
android:layout_width="@dimen/dp_152"
android:layout_height="@dimen/dp_53"
android:layout_marginStart="@dimen/dp_120"
android:layout_marginTop="@dimen/dp_20"
android:text="@string/tab_sn"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvCarNoPos" />
<TextView
android:id="@+id/tvSnInfo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="123456789"
app:layout_constraintBottom_toBottomOf="@+id/tvSnPos"
app:layout_constraintLeft_toRightOf="@+id/tvSnPos"
app:layout_constraintTop_toTopOf="@+id/tvSnPos" />
<View
app:layout_constraintTop_toTopOf="@+id/tvPadVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvPadVersion"
app:layout_constraintEnd_toStartOf="@+id/tvPadVersion"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_2"
android:background="@drawable/app_can_upload_bg"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"/>
<TextView
android:id="@+id/tvPadVersion"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:layout_marginStart="@dimen/dp_120"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center"
android:text="@string/tab_version_pad_info"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvSnPos" />
<TextView
android:id="@+id/tvPADVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="123456\"
app:layout_constraintTop_toTopOf="@+id/tvPadVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvPadVersion"
app:layout_constraintStart_toEndOf="@+id/tvPadVersion"
app:layout_constraintEnd_toStartOf="@+id/tvPADUpdate"
/>
<TextView
android:id="@+id/tvPADUpdate"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:layout_marginEnd="@dimen/dp_93"
android:text="@string/tab_version_update"
android:textColor="@color/color_2EACFF"
android:textSize="@dimen/dp_32"
app:layout_constraintBottom_toBottomOf="@+id/tvPadVersion"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintRight_toRightOf="@+id/tvCarExit"
app:layout_constraintTop_toTopOf="@+id/tvPadVersion" />
<View
app:layout_constraintTop_toTopOf="@+id/tvADVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvADVersion"
app:layout_constraintEnd_toStartOf="@+id/tvADVersion"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_2"
android:background="@drawable/app_can_upload_bg"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"/>
<TextView
android:id="@+id/tvADVersion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:text="@string/tab_version_ad_info"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintLeft_toLeftOf="@+id/tvPadVersion"
app:layout_constraintTop_toBottomOf="@+id/tvPadVersion" />
<TextView
android:id="@+id/tvADVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="1234560987"
app:layout_constraintTop_toTopOf="@+id/tvADVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvADVersion"
app:layout_constraintStart_toEndOf="@+id/tvADVersion"
app:layout_constraintEnd_toStartOf="@+id/tvADUpdate"
/>
<TextView
android:id="@+id/tvADUpdate"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:layout_marginEnd="@dimen/dp_93"
android:text="@string/tab_version_update"
android:textColor="@color/color_2EACFF"
android:textSize="@dimen/dp_32"
app:layout_constraintBottom_toBottomOf="@+id/tvADVersion"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/tvADVersion" />
<View
app:layout_constraintTop_toTopOf="@+id/tvHDMapVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvHDMapVersion"
app:layout_constraintEnd_toStartOf="@+id/tvHDMapVersion"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_2"
android:background="@drawable/app_can_upload_bg"
android:layout_width="@dimen/dp_15"
android:layout_height="@dimen/dp_15"/>
<TextView
android:id="@+id/tvHDMapVersion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:text="@string/tab_version_hdmap_info"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintLeft_toLeftOf="@+id/tvADVersion"
app:layout_constraintTop_toBottomOf="@+id/tvADVersionName" />
<TextView
android:id="@+id/tvHDMapVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="1234560987"
app:layout_constraintTop_toTopOf="@+id/tvHDMapVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvHDMapVersion"
app:layout_constraintStart_toEndOf="@+id/tvHDMapVersion"
app:layout_constraintEnd_toStartOf="@+id/tvHDMapUpdate"
/>
<TextView
android:id="@+id/tvHDMapUpdate"
android:layout_width="wrap_content"
android:layout_height="@dimen/dp_45"
android:layout_marginEnd="@dimen/dp_93"
android:text="@string/tab_version_update"
android:textColor="@color/color_2EACFF"
android:textSize="@dimen/dp_32"
app:layout_constraintBottom_toBottomOf="@+id/tvHDMapVersion"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@+id/tvHDMapVersion" />
<TextView
android:id="@+id/tvADMapVersion"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:text="@string/tab_version_admap_info"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
app:layout_constraintLeft_toLeftOf="@+id/tvHDMapVersion"
app:layout_constraintRight_toRightOf="@id/tvCarExit"
app:layout_constraintTop_toBottomOf="@+id/tvHDMapVersion" />
<TextView
android:id="@+id/tvADMapVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="1234560987"
app:layout_constraintTop_toTopOf="@+id/tvADMapVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvADMapVersion"
app:layout_constraintStart_toEndOf="@+id/tvADMapVersion"
app:layout_constraintEnd_toStartOf="@+id/tvHDMapUpdate"
/>
<TextView
android:id="@+id/tvGridMapVersion"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:text="@string/tab_version_grid_map_info"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="@+id/tvADMapVersion"
app:layout_constraintRight_toRightOf="@id/tvCarExit"
app:layout_constraintTop_toBottomOf="@+id/tvADMapVersion" />
<TextView
android:id="@+id/tvGridMapVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="1234560987"
app:layout_constraintTop_toTopOf="@+id/tvGridMapVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvGridMapVersion"
app:layout_constraintStart_toEndOf="@+id/tvGridMapVersion"
app:layout_constraintEnd_toStartOf="@+id/tvHDMapUpdate"
/>
<TextView
android:id="@+id/tvSlamMapVersion"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:text="@string/tab_version_slam_map_info"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
android:textStyle="bold"
app:layout_constraintLeft_toLeftOf="@+id/tvGridMapVersion"
app:layout_constraintRight_toRightOf="@id/tvCarExit"
app:layout_constraintTop_toBottomOf="@+id/tvGridMapVersion" />
<TextView
android:id="@+id/tvSlamMapVersionName"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_10"
android:gravity="start"
android:maxLines="3"
android:textColor="@color/white"
android:textSize="@dimen/dp_36"
tools:text="1234560987"
app:layout_constraintTop_toTopOf="@+id/tvSlamMapVersion"
app:layout_constraintBottom_toBottomOf="@+id/tvSlamMapVersion"
app:layout_constraintStart_toEndOf="@+id/tvSlamMapVersion"
app:layout_constraintEnd_toStartOf="@+id/tvHDMapUpdate"
/>
</com.mogo.eagle.core.widget.RoundConstraintLayout>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCheckSystem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
>
<ImageView
android:id="@+id/viewCheckShutDown"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:contentDescription="@string/take_over_record"
android:scaleType="fitXY"
android:src="@drawable/icon_toolkit_item_operation_panel"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_toolkit_item_operation_panel" />
<TextView
android:id="@+id/tvSignOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/debug_sop"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/sp_40"
app:layout_constraintBottom_toBottomOf="@id/viewCheckShutDown"
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
</merge>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCheckSystem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
>
<ImageView
android:id="@+id/viewCheckShutDown"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:contentDescription="@string/take_over_record"
android:scaleType="fitXY"
android:src="@drawable/icon_toolkit_item_take_over_history"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_toolkit_item_take_over_history" />
<TextView
android:id="@+id/tvSignOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/take_over_record"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/sp_40"
app:layout_constraintBottom_toBottomOf="@id/viewCheckShutDown"
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
</merge>

View File

@@ -1,35 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCheckSystem"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/viewCheckShutDown"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:contentDescription="@string/check_system_shut_down"
android:scaleType="fitXY"
android:src="@drawable/icon_toolkit_item_stop_service"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_toolkit_item_stop_service_background" />
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
>
<TextView
android:id="@+id/tvSignOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:layout_width="@dimen/dp_400"
android:layout_height="@dimen/dp_100"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/check_system_logout"
android:textColor="@color/color_FFFFFF"
android:textColor="@color/color_FF2EACFF"
android:textSize="@dimen/sp_40"
android:background="@drawable/app_sign_out_bg"
app:layout_constraintBottom_toBottomOf="@id/viewCheckShutDown"
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
</androidx.constraintlayout.widget.ConstraintLayout>
</merge>

View File

@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCheckSystem"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
<ImageView
android:id="@+id/viewCheckShutDown"
@@ -82,4 +83,4 @@
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
</androidx.constraintlayout.widget.ConstraintLayout>
</merge>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clCheckSystem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout"
>
<ImageView
android:id="@+id/viewCheckShutDown"
android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_100"
android:contentDescription="@string/tab_version_info"
android:scaleType="fitXY"
android:src="@drawable/icon_show_version_info"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/icon_show_version_info" />
<TextView
android:id="@+id/tvSignOut"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_10"
android:ellipsize="end"
android:gravity="center"
android:maxLines="1"
android:text="@string/tab_version_info"
android:textColor="@color/color_FFFFFF"
android:textSize="@dimen/sp_40"
app:layout_constraintBottom_toBottomOf="@id/viewCheckShutDown"
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
</merge>

View File

@@ -6,9 +6,9 @@
<string name="tab_tool_kit">More</string>
<string name="tab_car_login_info">Login Info</string>
<string name="tab_car_exit">Exit</string>
<string name="tab_car_no">Vehicle Binding</string>
<string name="tab_car_no">Vehicle Binding:</string>
<string name="tab_version_info">Version Info</string>
<string name="tab_sn">Device SN</string>
<string name="tab_sn">Device SN:</string>
<string name="tab_version_pad_info">PAD:</string>
<string name="tab_version_ad_info">AD:</string>
<string name="tab_version_hdmap_info">HD MAP:</string>

View File

@@ -46,6 +46,7 @@
<color name="color_D945D3FF">#D945D3FF</color>
<color name="color_D93261B6">#D93261B6</color>
<color name="color_FFFFCD3D">#FFCD3D</color>
<color name="color_3D000000">#3D000000</color>
<color name="background_wtf">#FF999900</color>
<color name="background_error">#FFCC0000</color>

View File

@@ -6,9 +6,9 @@
<string name="tab_tool_kit">更多内容</string>
<string name="tab_car_login_info">登陆信息</string>
<string name="tab_car_exit">退出</string>
<string name="tab_car_no">车辆绑定</string>
<string name="tab_car_no">车辆绑定:</string>
<string name="tab_version_info">版本信息</string>
<string name="tab_sn">设备SN</string>
<string name="tab_sn">设备SN:</string>
<string name="tab_version_pad_info">PAD</string>
<string name="tab_version_ad_info">AD</string>
<string name="tab_version_hdmap_info">HD MAP</string>