Merge branch 'tmp_6.7.0_arrow' into dev_robotaxi-d_240912_6.7.0
@@ -107,7 +107,7 @@
|
||||
app:layout_goneMarginEnd="40dp"
|
||||
app:layout_goneMarginTop="@dimen/dp_236" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
app:layout_goneMarginEnd="40dp"
|
||||
app:layout_goneMarginTop="@dimen/dp_236" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_129"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
@@ -164,35 +164,33 @@
|
||||
android:id="@+id/roadV2NEventWindowView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_45"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:visibility="gone"/>
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--自动探查-->
|
||||
<com.mogo.och.common.module.wigets.rodedata.OchAutomaticExplorationView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:explorationUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
app:explorationUser="driver"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--红绿灯提醒-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.notice.traffic.TrafficLightPromptView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_350"
|
||||
android:layout_marginRight="@dimen/dp_50"
|
||||
app:promptUser="driver"
|
||||
android:visibility="gone"
|
||||
/>
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:promptUser="driver" />
|
||||
|
||||
<!-- 地图marker点击触发路侧直播 -->
|
||||
<com.mogo.eagle.core.function.hmi.ui.camera.RoadCrossLiveView
|
||||
@@ -246,13 +244,12 @@
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.FusionTrafficLightView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/hmi_traffic_light_layout_margin_top"
|
||||
android:visibility="gone"
|
||||
app:fusionLightUser="driver"
|
||||
/>
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<!--接管提示-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.TakeOverView
|
||||
@@ -278,12 +275,12 @@
|
||||
|
||||
<com.mogo.och.common.module.wigets.map.switchvisual.VisualViewDirver
|
||||
android:id="@+id/vvd_change_angle"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/toolsView"
|
||||
android:layout_marginBottom="@dimen/dp_48"
|
||||
android:layout_marginStart="@dimen/dp_618"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_618"
|
||||
android:layout_marginBottom="@dimen/dp_48"
|
||||
app:layout_constraintBottom_toTopOf="@+id/toolsView"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
|
||||
<com.mogo.och.common.module.wigets.map.orderstatus.OrderStatusView
|
||||
@@ -338,12 +335,12 @@
|
||||
|
||||
<com.mogo.och.common.module.wigets.map.drawline.LineView
|
||||
android:id="@+id/lineView"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@id/rtv_switch"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_142"
|
||||
android:layout_marginStart="-11dp"
|
||||
android:layout_marginBottom="@dimen/dp_17"
|
||||
android:layout_width="@dimen/dp_142"
|
||||
android:layout_height="@dimen/dp_142"/>
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@id/rtv_switch" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -424,14 +421,14 @@
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/aciv_show_guid"
|
||||
app:layout_constraintStart_toStartOf="@+id/smallMapView"
|
||||
app:layout_constraintEnd_toEndOf="@+id/smallMapView"
|
||||
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
|
||||
android:layout_width="@dimen/dp_209"
|
||||
android:layout_height="@dimen/dp_91"
|
||||
android:layout_marginBottom="-32dp"
|
||||
android:src="@drawable/taxi_overmap_tag"
|
||||
android:visibility="gone"
|
||||
android:layout_marginBottom="-32dp"
|
||||
android:layout_width="@dimen/dp_209"
|
||||
android:layout_height="@dimen/dp_91"/>
|
||||
app:layout_constraintBottom_toTopOf="@+id/smallMapView"
|
||||
app:layout_constraintEnd_toEndOf="@+id/smallMapView"
|
||||
app:layout_constraintStart_toStartOf="@+id/smallMapView" />
|
||||
|
||||
<com.mogo.eagle.core.function.smp.view.SmallMapView
|
||||
android:id="@+id/smallMapView"
|
||||
@@ -456,4 +453,12 @@
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.BoneContainerView
|
||||
android:id="@+id/boneContainerView"
|
||||
android:layout_width="@dimen/dp_1046"
|
||||
android:layout_height="match_parent"
|
||||
android:elevation="100dp"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -255,7 +255,7 @@
|
||||
app:layout_constraintBottom_toTopOf="@id/aciv_xiaozhi_normal"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_156"
|
||||
android:layout_marginEnd="@dimen/dp_30"
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewLimitingVelocity"/>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_129"
|
||||
android:layout_marginTop="@dimen/dp_71"
|
||||
@@ -459,5 +459,12 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
/>
|
||||
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.BoneContainerView
|
||||
android:id="@+id/boneContainerView"
|
||||
android:layout_width="@dimen/dp_1046"
|
||||
android:layout_height="match_parent"
|
||||
android:elevation="100dp"
|
||||
android:visibility="visible"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -266,7 +266,7 @@
|
||||
android:layout_marginBottom="-80dp"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.GreenWaveView
|
||||
android:layout_width="@dimen/dp_580"
|
||||
android:layout_height="@dimen/dp_156"
|
||||
android:layout_marginEnd="@dimen/dp_30"
|
||||
|
||||
@@ -8,7 +8,7 @@ apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
|
||||
apply from: rootProject.file('gradle/bytex/bytex.gradle')
|
||||
//apply from: rootProject.file('gradle/bytex/bytex.gradle')
|
||||
|
||||
Properties properties = new Properties()
|
||||
properties.load(project.rootProject.file("gradle.properties").newDataInputStream())
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
project.android.productFlavors {
|
||||
bailing {
|
||||
dimension "role"
|
||||
applicationId "com.mogo.launcher.rk.passenger"
|
||||
externalNativeBuild {
|
||||
ndk {
|
||||
// 设置支持的SO库架构
|
||||
@@ -9,11 +10,11 @@ project.android.productFlavors {
|
||||
}
|
||||
|
||||
manifestPlaceholders = [
|
||||
CHANNEL_VALUE_BODY : "Driver",
|
||||
CHANNEL_VALUE_BODY : "Passenger",
|
||||
]
|
||||
|
||||
// ①标识
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_BODY', "\"Driver\""
|
||||
buildConfigField 'String', 'APP_IDENTITY_MODE_BODY', "\"Passenger\""
|
||||
|
||||
}
|
||||
}
|
||||
@@ -63,7 +63,7 @@ object ConfigStartUp {
|
||||
// 这里影响当前Activity的身份信息,多进程,主进程为司机端,:passenger 进程为乘客端
|
||||
// TODO emArrow isMultiDisplay暂时不启用,仅测试3588,在B2 2024车预研
|
||||
if (DebugConfig.isMultiDisplay()) {
|
||||
if(ProcessUtils.getCurrentProcessName().contains(":passenger")){
|
||||
if(ProcessUtils.getCurrentProcessName().contains("passenger")){
|
||||
FunctionBuildConfig.appIdentityMode = "Product_Passenger_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
|
||||
}else{
|
||||
FunctionBuildConfig.appIdentityMode = "Product_Driver_${BuildConfig.APP_IDENTITY_MODE_TAIL}"
|
||||
@@ -125,9 +125,6 @@ object ConfigStartUp {
|
||||
//白天模式
|
||||
FunctionBuildConfig.skinMode = 1
|
||||
}
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
|
||||
}
|
||||
|
||||
val mapParams = MapParams.init()
|
||||
mapParams.setDebugMode(false)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<item name="android:windowExitAnimation">@null</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowBackground">@color/app_window_background</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
<item name="android:windowAnimationStyle">@style/Animation</item>
|
||||
</style>
|
||||
|
||||
@@ -20,6 +20,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_AD
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_ROUTE
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_STATUS
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_STATUS_QUERY_RESP
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_SYSTEM_STATUS
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_TRAJECTORY
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_V2N_EVENT
|
||||
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_CODE_ADAS_VEHICLE
|
||||
@@ -444,9 +445,16 @@ class MoGoAdasListenerImpl : OnAdasListener {
|
||||
} else {
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ssmAutoPilotReady = false
|
||||
}
|
||||
|
||||
invokeAutopilotStatusRespByQuery(statusInfo)
|
||||
}
|
||||
|
||||
@ChainLog(
|
||||
linkChainLog = CHAIN_TYPE_SOCKET_AUTOPILOT,
|
||||
linkCode = CHAIN_SOURCE_ADAS,
|
||||
nodeAliasCode = CHAIN_CODE_ADAS_SYSTEM_STATUS,
|
||||
paramIndexes = [0, 1]
|
||||
)
|
||||
override fun onSystemStatus(header: MessagePad.Header?, statusInf: SsmInfo.SsmStatusInf?) {
|
||||
if (statusInf != null && statusInf.hasAutoPilotReady()) {
|
||||
CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().ssmAutoPilotReady =
|
||||
|
||||
@@ -166,6 +166,8 @@ class FSMStatus(var state: FSMStateCode, var desc: String = ""): Status(), IAuto
|
||||
}
|
||||
|
||||
override fun isException(): Boolean = state == FSMStateCode.ExistError
|
||||
|
||||
fun hasFSMModule(): Boolean = (state == FSMStateCode.ExistNormal) || (state == FSMStateCode.ExistError)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -36,12 +36,12 @@ internal class StatusView(private val model: StatusModel, ctx: Context): Constra
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
val adapter = model.status.value?.let { data -> StatusAdapter(context, data.second.filter { (it !is IAutopilotPreLaunchStatus) || (it is FSMStatus)}) }?.also { adapter -> rv.adapter = adapter }
|
||||
val adapter = model.status.value?.let { data -> StatusAdapter(context, data.second.filter { it !is IAutopilotPreLaunchStatus }) }?.also { adapter -> rv.adapter = adapter }
|
||||
adapter?.let { _ ->
|
||||
observer?.also { model.status.removeObserver(it) }
|
||||
model.status.observeForever(Observer<Pair<Status?, ArrayList<Status>>> { data ->
|
||||
val old = adapter.data
|
||||
val update = data.second.filter { (it !is IAutopilotPreLaunchStatus) || (it is FSMStatus) }
|
||||
val update = data.second.filter { it !is IAutopilotPreLaunchStatus }
|
||||
val result = DiffUtil.calculateDiff(StatusDiffCallback(old, update))
|
||||
adapter.data = update
|
||||
result.dispatchUpdatesTo(adapter)
|
||||
|
||||
@@ -69,6 +69,7 @@ dependencies {
|
||||
// releaseImplementation rootProject.ext.dependencies.releaseleakcanary
|
||||
implementation rootProject.ext.dependencies.arouter
|
||||
implementation project(path: ':core:function-impl:mogo-core-function-map')
|
||||
implementation project(':core:function-impl:mogo-core-function-devatools')
|
||||
kapt rootProject.ext.dependencies.aroutercompiler
|
||||
|
||||
implementation rootProject.ext.dependencies.android_start_up
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone
|
||||
|
||||
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
|
||||
|
||||
class BoneContainerView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_bone_container, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone
|
||||
|
||||
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.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import kotlinx.android.synthetic.main.view_bone_tab.view.carInfoTabView
|
||||
import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchCarInfo
|
||||
import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchMore
|
||||
import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchMsgBox
|
||||
import kotlinx.android.synthetic.main.view_bone_tab.view.tabSwitchReport
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
class BoneTabLayout @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
companion object{
|
||||
private const val TAG = "BoneTabLayout"
|
||||
}
|
||||
|
||||
private enum class TabType {
|
||||
NONE,
|
||||
CAR_INFO,
|
||||
MSG_INFO,
|
||||
REPORT_INFO,
|
||||
MORE_INFO
|
||||
}
|
||||
|
||||
private var tabType by Delegates.observable(TabType.NONE) { _, oldValue, newValue ->
|
||||
CallerLogger.i("$M_HMI$TAG", "tabType old:$oldValue , new:$newValue")
|
||||
if (oldValue != newValue) {
|
||||
updateTab(oldValue, false)
|
||||
updateTab(newValue, true)
|
||||
} else {
|
||||
updateTab(oldValue, false)
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_bone_tab, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
tabSwitchCarInfo.setOnClickListener {
|
||||
updateTabType(TabType.CAR_INFO)
|
||||
}
|
||||
tabSwitchMsgBox.setOnClickListener {
|
||||
updateTabType(TabType.MSG_INFO)
|
||||
}
|
||||
tabSwitchReport.setOnClickListener {
|
||||
updateTabType(TabType.REPORT_INFO)
|
||||
}
|
||||
tabSwitchMore.setOnClickListener {
|
||||
updateTabType(TabType.MORE_INFO)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateTabType(changeType: TabType) {
|
||||
tabType = if (tabType == changeType) {
|
||||
TabType.NONE
|
||||
} else {
|
||||
changeType
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateTab(tabType: TabType, check: Boolean) {
|
||||
CallerLogger.i("$M_HMI$TAG", "updateTab tabType:$tabType , check:$check")
|
||||
when (tabType) {
|
||||
TabType.CAR_INFO -> {
|
||||
tabSwitchCarInfo.switchTab(check)
|
||||
carInfoTabView.visibility = if (check) VISIBLE else GONE
|
||||
}
|
||||
|
||||
TabType.MSG_INFO -> {
|
||||
tabSwitchMsgBox.switchTab(check)
|
||||
if (check) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
TabType.REPORT_INFO -> {
|
||||
tabSwitchReport.switchTab(check)
|
||||
if (check) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
TabType.MORE_INFO -> {
|
||||
tabSwitchMore.switchTab(check)
|
||||
if (check) {
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.bone.status.StartAutoPilotStatusView
|
||||
import kotlinx.android.synthetic.main.view_bone_top_status.view.topStatusContainer
|
||||
|
||||
class BoneTopStatusLayout @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr),
|
||||
StartAutoPilotStatusView.IStartAutoPilotStatusChanged {
|
||||
|
||||
companion object {
|
||||
const val TAG = "BoneTopStatusLayout"
|
||||
}
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_bone_top_status, this, true)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
StartAutoPilotStatusView.addStatusChangedListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
StartAutoPilotStatusView.removeStatusChangedListener(TAG)
|
||||
}
|
||||
|
||||
override fun onStatusError() {
|
||||
super.onStatusError()
|
||||
context?.also {
|
||||
topStatusContainer.background = ContextCompat.getDrawable(
|
||||
it, R.drawable.bg_top_status_layout_error
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onStatusNormal() {
|
||||
super.onStatusNormal()
|
||||
context?.also {
|
||||
topStatusContainer.background =
|
||||
ContextCompat.getDrawable(it, R.drawable.bg_top_status_layout_normal)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import kotlinx.android.synthetic.main.view_tab_switch.view.ivTabClick
|
||||
import kotlinx.android.synthetic.main.view_tab_switch.view.ivTabClickBg
|
||||
import kotlinx.android.synthetic.main.view_tab_switch.view.ivTabDefault
|
||||
|
||||
class TabSwitchView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private var tabDefaultRes = -1
|
||||
private var tabClickRes = -1
|
||||
private var tabClickBgRes = -1
|
||||
|
||||
private var isCheck = false
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_tab_switch, this, true)
|
||||
try {
|
||||
val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TabSwitch)
|
||||
tabDefaultRes = typedArray.getResourceId(R.styleable.TabSwitch_defaultRes, -1)
|
||||
tabClickRes = typedArray.getResourceId(R.styleable.TabSwitch_clickRes, -1)
|
||||
tabClickBgRes = typedArray.getResourceId(R.styleable.TabSwitch_clickBgRes, -1)
|
||||
typedArray.recycle()
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
ivTabDefault.setImageResource(tabDefaultRes)
|
||||
ivTabClick.setImageResource(tabClickRes)
|
||||
ivTabClickBg.setImageResource(tabClickBgRes)
|
||||
}
|
||||
|
||||
fun switchTab(isCheck: Boolean) {
|
||||
if (isCheck != this.isCheck) {
|
||||
this.isCheck = isCheck
|
||||
notifyView()
|
||||
}
|
||||
}
|
||||
|
||||
private fun notifyView() {
|
||||
if (isCheck) {
|
||||
ivTabClick.visibility = View.VISIBLE
|
||||
ivTabClickBg.visibility = View.VISIBLE
|
||||
} else {
|
||||
ivTabClick.visibility = View.GONE
|
||||
ivTabClickBg.visibility = View.GONE
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone.status
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import chassis.Chassis
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo_core_function_devatools.status.StatusManager
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.AcceleratorStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.BrakeStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.DoubleFlashStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStateCode
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.FSMStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.GearStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.IAutopilotPreLaunchStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.SpeedStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.Status
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.SteerStatus
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.fSMStatusLayout
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.iv_accelerator
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.iv_brake
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.iv_double_flash
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.iv_steer
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.tv_gear
|
||||
import kotlinx.android.synthetic.main.view_start_autopilot_status.view.withoutFSMStatusLayout
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.atomic.AtomicBoolean
|
||||
|
||||
/**
|
||||
* 自动驾驶相关的状态展示view
|
||||
* 1, 有 FSM 模块:展示 FSM 的当前状态,启动自驾时人工干预主要由 FSM 拦截,非自驾/自驾 状态都展示异常
|
||||
* 2,无 FSM 模块:展示 启动前 档位/方向盘/油门/刹车/双闪 等状态,人工干预由鹰眼判断拦截,鹰眼数据源为 CanAdapter,
|
||||
* 如果当前在自动驾驶状态 则不显示人工干预异常状态
|
||||
*/
|
||||
class StartAutoPilotStatusView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), StatusManager.IStatusListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "StartAutoPilotStatusView"
|
||||
private val statusChangedListeners by lazy { ConcurrentHashMap<String, IStartAutoPilotStatusChanged>() }
|
||||
fun addStatusChangedListener(tag: String, listener: IStartAutoPilotStatusChanged) {
|
||||
if (statusChangedListeners.containsKey(tag)) {
|
||||
statusChangedListeners.remove(tag)
|
||||
}
|
||||
statusChangedListeners[tag] = listener
|
||||
}
|
||||
|
||||
fun removeStatusChangedListener(tag: String) {
|
||||
statusChangedListeners.remove(tag)
|
||||
}
|
||||
}
|
||||
|
||||
private val hasFSM by lazy { AtomicBoolean(false) }
|
||||
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_start_autopilot_status, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
// 默认展示 有 FSM 的情况,未知状态
|
||||
changeStatusContainer(true)
|
||||
handleFSM(FSMStatus(FSMStateCode.UnKnown, "未知"))
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据是否有 FSM 切换展示的容器
|
||||
*/
|
||||
private fun changeStatusContainer(hasFSMModule: Boolean) {
|
||||
CallerLogger.i(TAG, "changeStatusContainer 切换展示,hasFSM=$hasFSMModule")
|
||||
if (hasFSMModule) {
|
||||
fSMStatusLayout?.visibility = View.VISIBLE
|
||||
withoutFSMStatusLayout?.visibility = View.GONE
|
||||
} else {
|
||||
fSMStatusLayout?.visibility = View.GONE
|
||||
withoutFSMStatusLayout?.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleFSM(status: FSMStatus) {
|
||||
Logger.d(TAG, "--- handleFSM ---:${status.isException()}")
|
||||
val lastHasFSM = hasFSM.get()
|
||||
val newHasFSM = status.hasFSMModule()
|
||||
hasFSM.set(newHasFSM)
|
||||
if (lastHasFSM != newHasFSM) {
|
||||
changeStatusContainer(status.hasFSMModule())
|
||||
}
|
||||
|
||||
when (status.state) {
|
||||
FSMStateCode.UnKnown -> {
|
||||
fSMStatusLayout?.setOnClickListener(null)
|
||||
fSMStatusLayout?.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_fsm_status_bg_unknown
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
FSMStateCode.NotExist -> {
|
||||
fSMStatusLayout?.setOnClickListener(null)
|
||||
fSMStatusLayout?.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_fsm_status_bg_unknown
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
FSMStateCode.ExistNormal -> {
|
||||
fSMStatusLayout?.setOnClickListener(null)
|
||||
fSMStatusLayout?.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_fsm_status_bg_normal
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
FSMStateCode.ExistError -> {
|
||||
// TODO
|
||||
fSMStatusLayout?.onClick {
|
||||
ToastUtils.showLong("onClick")
|
||||
}
|
||||
fSMStatusLayout?.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_fsm_status_bg_error
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
notifyStatus(status.isException())
|
||||
}
|
||||
|
||||
private fun handleWithoutFSM(status: Status) {
|
||||
val isError =
|
||||
status.isException() && CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().state != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING
|
||||
Logger.d(TAG, "--- handleWithoutFSM ---: $isError")
|
||||
when (status) {
|
||||
is GearStatus -> {
|
||||
val position = try {
|
||||
Chassis.GearPosition.valueOf(status.value)
|
||||
} catch (ignore: Throwable) {
|
||||
Chassis.GearPosition.GEAR_NONE
|
||||
}
|
||||
if (tv_gear?.isEnabled == true) {
|
||||
tv_gear?.isEnabled = false
|
||||
}
|
||||
|
||||
when (position) {
|
||||
Chassis.GearPosition.GEAR_N -> {
|
||||
tv_gear.isEnabled = isError
|
||||
tv_gear.text = "N"
|
||||
}
|
||||
|
||||
Chassis.GearPosition.GEAR_R -> {
|
||||
tv_gear.isEnabled = isError
|
||||
tv_gear.text = "R"
|
||||
}
|
||||
|
||||
Chassis.GearPosition.GEAR_P -> {
|
||||
tv_gear.isEnabled = isError
|
||||
tv_gear.text = "P"
|
||||
}
|
||||
|
||||
Chassis.GearPosition.GEAR_D -> {
|
||||
tv_gear.isEnabled = isError
|
||||
tv_gear.text = "D"
|
||||
}
|
||||
|
||||
Chassis.GearPosition.GEAR_NONE -> {
|
||||
tv_gear.isEnabled = false
|
||||
tv_gear.text = ""
|
||||
}
|
||||
|
||||
else -> {}
|
||||
}
|
||||
}
|
||||
|
||||
is AcceleratorStatus -> {
|
||||
iv_accelerator?.isSelected = isError
|
||||
}
|
||||
|
||||
is BrakeStatus -> {
|
||||
iv_brake?.isSelected = isError
|
||||
}
|
||||
|
||||
is DoubleFlashStatus -> {
|
||||
iv_double_flash?.isSelected = isError
|
||||
}
|
||||
|
||||
is SteerStatus -> {
|
||||
iv_steer?.isSelected = isError
|
||||
}
|
||||
|
||||
is SpeedStatus -> {
|
||||
// TODO
|
||||
}
|
||||
|
||||
else -> {
|
||||
Logger.d(TAG, "other state: $status")
|
||||
}
|
||||
}
|
||||
notifyStatus(isError)
|
||||
}
|
||||
|
||||
private fun notifyStatus(isError: Boolean) {
|
||||
statusChangedListeners.values.forEach { itx ->
|
||||
if (isError) {
|
||||
itx.onStatusError()
|
||||
} else {
|
||||
itx.onStatusNormal()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
StatusManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
StatusManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* @param changed: 变化的数据
|
||||
* @param all: 所有状态数据
|
||||
*/
|
||||
override fun onStatusChanged(changed: List<Status>, all: List<Status>) {
|
||||
changed.filter { it is IAutopilotPreLaunchStatus }.forEach { status ->
|
||||
when (status) {
|
||||
is FSMStatus -> {
|
||||
handleFSM(status)
|
||||
}
|
||||
|
||||
else -> {
|
||||
handleWithoutFSM(status)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
interface IStartAutoPilotStatusChanged {
|
||||
fun onStatusNormal() {}
|
||||
fun onStatusError() {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone.tab
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener
|
||||
import com.mogo.eagle.core.function.api.hmi.autopilot.IMoGoCheckAutoPilotBtnListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
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.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.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.map.MogoData
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvADMapVersion
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvADVersion
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvCarExit
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvCarLoginInfo
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvCarNo
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvHDMapUpdate
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvPADUpdate
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvPadVersion
|
||||
import kotlinx.android.synthetic.main.view_car_info_tab.view.tvSnInfo
|
||||
import mogo.telematics.pad.MessagePad
|
||||
import system_master.SsmInfo
|
||||
import system_master.SystemStatusInfo
|
||||
|
||||
private fun String.parsePlateNo(): String {
|
||||
return substring(0, 2) + " " + substring(2)
|
||||
}
|
||||
|
||||
private fun String.parsePhoneNo(): String {
|
||||
return take(3) + "****" + takeLast(4)
|
||||
}
|
||||
|
||||
class CarInfoTabView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoCheckAutoPilotBtnListener,
|
||||
IMoGoAutopilotStatusListener, IMoGoDevaToolsListener, IMoGoAutopilotCarConfigListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "CarInfoTabView"
|
||||
}
|
||||
|
||||
|
||||
private var loginOut: (() -> Unit)? = null
|
||||
|
||||
@Volatile
|
||||
private var isHDCached = false
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_car_info_tab, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerHmiListenerManager.addListener(TAG, this)
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
|
||||
CallerDevaToolsListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerHmiListenerManager.removeListener(TAG)
|
||||
CallerAutoPilotStatusListenerManager.removeListener(TAG)
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
showCurrentPadVersion()
|
||||
showCurrentAdVersion()
|
||||
updateAdHdMapVersion()
|
||||
|
||||
tvSnInfo.text = SharedPrefsMgr.getInstance().sn
|
||||
|
||||
if (AppConfigInfo.plateNumber.isNotEmpty()) {
|
||||
val plateNo = AppConfigInfo.plateNumber
|
||||
tvCarNo.text = plateNo.parsePlateNo()
|
||||
}
|
||||
|
||||
tvCarExit.setOnClickListener {
|
||||
loginOut?.invoke()
|
||||
}
|
||||
|
||||
//鹰眼版本 检查更新
|
||||
tvPADUpdate.setOnClickListener {
|
||||
HmiActionLog.hmiAction(
|
||||
"${SceneConstant.M_HMI}${TAG}",
|
||||
"pad version view clicked"
|
||||
)
|
||||
val provider = CallerDevaToolsManager.upgradeProvider()
|
||||
if (provider?.isDownloading() == true) {
|
||||
ToastUtils.showShort("正在下载最新版本,请稍候再试...")
|
||||
return@setOnClickListener
|
||||
}
|
||||
CallerDevaToolsManager.queryAppUpgrade()
|
||||
}
|
||||
|
||||
//高精地图 检查更新
|
||||
tvHDMapUpdate.setOnClickListener {
|
||||
HmiActionLog.hmiAction(
|
||||
"${SceneConstant.M_HMI}${TAG}",
|
||||
mapOf("isHDCached" to isHDCached)
|
||||
)
|
||||
if (isHDCached) { // 已缓存
|
||||
ToastUtils.showShort(resources.getString(R.string.offline_had_downloaded))
|
||||
} else {// 未缓存
|
||||
if (CallerMapUIServiceManager.getCityCode().isNullOrEmpty()) {// 未拿到高德的cityCode
|
||||
if ((CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().longitude <= 0.0 && CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84().latitude <= 0.0)) {// 未拿到高精的经纬度
|
||||
ToastUtils.showShort(resources.getString(R.string.location_try_again))
|
||||
} else { // 拿到了高精的经纬度
|
||||
val dialog = OfflineMapDialog(context)
|
||||
dialog.location =
|
||||
CallerChassisLocationWGS84ListenerManager.getChassisLocationWGS84()
|
||||
dialog.show()
|
||||
}
|
||||
} else {// 拿到高德的cityCode
|
||||
OfflineMapDialog(context).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MogoData.mogoMapData.get()?.isCityDataCached {
|
||||
updateHDDataCacheStatus(it)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showCurrentPadVersion() {
|
||||
tvPadVersion.text = tvPadVersion.text.toString() + AppUtils.getAppVersionName()
|
||||
}
|
||||
|
||||
fun setLoginInfo(loginNo: String) {
|
||||
if (loginNo.isNotEmpty()) {
|
||||
tvCarLoginInfo.text = loginNo.parsePhoneNo()
|
||||
} else {
|
||||
tvCarLoginInfo.text = ""
|
||||
}
|
||||
}
|
||||
|
||||
fun setCarNo(carNo: String) {
|
||||
// 监听工控的车牌信息,防止调试跳过无车牌内容(链接先后顺序不一致也会导致数据显示异常)
|
||||
if (carNo.isNotEmpty()) {
|
||||
if (tvCarNo.text.isNotEmpty() && tvCarNo.text == carNo) {
|
||||
CallerLogger.i("$M_HMI$TAG", "已存在车牌号")
|
||||
return
|
||||
}
|
||||
tvCarNo.visibility = VISIBLE
|
||||
tvCarNo.text = carNo.parsePlateNo()
|
||||
} else {
|
||||
tvCarNo.visibility = GONE
|
||||
tvCarNo.text = ""
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
|
||||
super.onAutopilotCarConfig(carConfigResp)
|
||||
carConfigResp.plateNumber?.let {
|
||||
if (tvCarNo.text.isNotEmpty() && tvCarNo.text == it) {
|
||||
return
|
||||
}
|
||||
tvCarNo.visibility = VISIBLE
|
||||
tvCarNo.text = it.parsePlateNo()
|
||||
}
|
||||
}
|
||||
|
||||
fun loginOut(loginOut: (() -> Unit)) {
|
||||
this.loginOut = loginOut
|
||||
}
|
||||
|
||||
override fun updateHDDataCacheStatus(isCached: Boolean) {
|
||||
isHDCached = isCached
|
||||
}
|
||||
|
||||
private fun showCurrentAdVersion() {
|
||||
UiThreadHandler.post {
|
||||
CallerAutoPilotStatusListenerManager.getDockerVersion()?.let {
|
||||
tvADVersion.text = tvADVersion.text.toString() + it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotDockerInfo(dockerVersion: String) {
|
||||
super.onAutopilotDockerInfo(dockerVersion)
|
||||
showCurrentAdVersion()
|
||||
}
|
||||
|
||||
private fun updateAdHdMapVersion() {
|
||||
if (AppConfigInfo.adHdMapVersion.isNotEmpty()) {
|
||||
tvADMapVersion.text = tvADMapVersion.text.toString() + AppConfigInfo.adHdMapVersion
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {
|
||||
CallerLogger.i(SceneConstant.M_HMI + TAG, "hdMapVer=" + status.hdMapVer)
|
||||
//hdMapVer返回示例:/home/mogo/autopilot/share/hadmap_engine/data/hadmap_data/db.sqlite|bj|2.2.7|对bus路线上的junction进行修改,对原609场景修改为6091、6092、6201、 6202四种细分场景,并对通往园区路口改为619
|
||||
if (status.hdMapVer != null && status.hdMapVer.isNotEmpty()) {
|
||||
//对地图版本进行截取
|
||||
val city = status.hdMapVer.substringAfter(".sqlite|").substringBefore("|")
|
||||
val version = status.hdMapVer.substringAfter("$city|").substringBefore("|")
|
||||
AppConfigInfo.adHdMapVersion = "${city}_${version}"
|
||||
updateAdHdMapVersion()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 定频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)
|
||||
//hdMapVer返回示例:/home/mogo/autopilot/share/hadmap_engine/data/hadmap_data/db.sqlite|bj|2.2.7|对bus路线上的junction进行修改,对原609场景修改为6091、6092、6201、 6202四种细分场景,并对通往园区路口改为619
|
||||
if (statusInf.hdMapVer != null && statusInf.hdMapVer.isNotEmpty()) {
|
||||
//对地图版本进行截取
|
||||
val city = statusInf.hdMapVer.substringAfter(".sqlite|").substringBefore("|")
|
||||
val version = statusInf.hdMapVer.substringAfter("$city|").substringBefore("|")
|
||||
AppConfigInfo.adHdMapVersion = "${city}_${version}"
|
||||
updateAdHdMapVersion()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.telecom.Call
|
||||
import android.text.TextUtils
|
||||
import android.view.Gravity
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.alibaba.android.arouter.facade.annotation.Route
|
||||
@@ -32,7 +30,6 @@ import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTurnLightListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.greenwave.GreenWaveView
|
||||
import com.mogo.eagle.core.function.hmi.ui.lookaround.M1LookAroundView
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.DispatchDialogManager
|
||||
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeCheckDialog
|
||||
@@ -49,7 +46,6 @@ import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView
|
||||
import com.mogo.eagle.core.function.hmi.xiaozhi.XiaoZhiStateManager
|
||||
import com.mogo.eagle.core.utilcode.floating.MoGoPopWindow
|
||||
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
|
||||
import com.mogo.eagle.core.utilcode.kotlin.safeCancel
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.switch
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
|
||||
class DemoModeHiddenSwitch(context: Context, attrs: AttributeSet?) : View(context, attrs) {
|
||||
|
||||
init {
|
||||
isClickable = true
|
||||
setOnClickListener {
|
||||
//只在司机端设置美化模式开关功能
|
||||
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
//单次查询,是否有行程信息(订单进行中时点击不生效),autopilotControlParameters为null代表不处于自动驾驶状态下
|
||||
if (CallerAutoPilotStatusListenerManager.getAutoPilotStatusInfo().autopilotControlParameters == null) {
|
||||
FunctionBuildConfig.isDemoMode = !FunctionBuildConfig.isDemoMode
|
||||
CallerAutoPilotControlManager.setDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
if (!FunctionBuildConfig.isDemoMode) {
|
||||
//关闭美化模式时,通知工控机
|
||||
CallerAutoPilotControlManager.setIPCDemoMode(FunctionBuildConfig.isDemoMode)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,7 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.map
|
||||
package com.mogo.eagle.core.function.hmi.ui.tools
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.os.Looper
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.ProgressBar
|
||||
@@ -13,12 +12,8 @@ import com.mogo.eagle.core.data.map.MogoLocation
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
|
||||
import com.mogo.eagle.core.function.hmi.ui.widget.SystemVersionView
|
||||
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.ThreadUtils
|
||||
import com.mogo.map.MogoData.Companion.mogoMapData
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.greenwave
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -2,7 +2,6 @@ package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
@@ -19,15 +18,13 @@ import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
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.ui.map.OfflineMapDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.tools.OfflineMapDialog
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.*
|
||||
import com.mogo.map.MogoData.Companion.mogoMapData
|
||||
import kotlinx.android.synthetic.main.view_system_version.view.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import system_master.SsmInfo
|
||||
import system_master.SystemStatusInfo
|
||||
|
||||
@@ -56,6 +53,7 @@ class SystemVersionView @JvmOverloads constructor(
|
||||
private var previousProgress: Int = -1 //前一秒的下载进度,用于计算下载剩余时间
|
||||
private var currentProgress: Int = -1 //当前已下载包体大小
|
||||
|
||||
@Volatile
|
||||
private var isHDCached = false
|
||||
|
||||
init {
|
||||
@@ -70,7 +68,7 @@ class SystemVersionView @JvmOverloads constructor(
|
||||
|
||||
//鹰眼版本视图点击事件
|
||||
ivPadVersion.setOnClickListener {
|
||||
hmiAction("$M_HMI$$TAG", "pad version view clicked")
|
||||
hmiAction("$M_HMI$TAG", "pad version view clicked")
|
||||
val provider = CallerDevaToolsManager.upgradeProvider()
|
||||
if (provider?.isDownloading() == true) {
|
||||
ToastUtils.showShort("正在下载最新版本,请稍候再试...")
|
||||
|
||||
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 181 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 381 KiB |
|
After Width: | Height: | Size: 384 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 1019 B |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/icon_status_accelerator_error" />
|
||||
<item android:drawable="@drawable/icon_status_accelerator_normal" />
|
||||
</selector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/icon_status_brake_error" />
|
||||
<item android:drawable="@drawable/icon_status_brake_normal" />
|
||||
</selector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/icon_status_double_flash_error" />
|
||||
<item android:drawable="@drawable/icon_status_double_flash_normal" />
|
||||
</selector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="true" android:drawable="@drawable/icon_status_gear_bg_error" />
|
||||
<item android:state_enabled="false" android:drawable="@drawable/icon_status_gear_bg_normal" />
|
||||
</selector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/icon_status_steer_error" />
|
||||
<item android:drawable="@drawable/icon_status_steer_normal" />
|
||||
</selector>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
|
||||
<solid android:color="@color/color_B3_000000" />
|
||||
<corners android:radius="@dimen/dp_10" />
|
||||
</shape>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/icon_tab_car_info" android:state_checked="false" />
|
||||
<item android:drawable="@drawable/icon_tab_car_info_click" android:state_checked="true"/>
|
||||
</selector>
|
||||
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/bone_bg"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.BoneTopStatusLayout
|
||||
android:id="@+id/boneTopStatusLayout"
|
||||
android:layout_width="match_parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
android:layout_marginStart="@dimen/dp_19"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clBoneBiz"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_385"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.BoneTabLayout
|
||||
android:id="@+id/clBoneTab"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="@dimen/dp_385"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,82 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="@dimen/dp_960"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/clBoneTabChild"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.tab.CarInfoTabView
|
||||
android:id="@+id/carInfoTabView"
|
||||
android:layout_width="@dimen/dp_960"
|
||||
android:layout_height="@dimen/dp_1137"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_224"
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
android:layout_marginBottom="@dimen/dp_m_2"
|
||||
android:background="@drawable/bg_tab_switch"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.TabSwitchView
|
||||
android:id="@+id/tabSwitchCarInfo"
|
||||
android:layout_width="@dimen/dp_220"
|
||||
android:layout_height="@dimen/dp_140"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:clickBgRes="@drawable/icon_tab_click_bg"
|
||||
app:clickRes="@drawable/icon_tab_car_info_click"
|
||||
app:defaultRes="@drawable/icon_tab_car_info"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.TabSwitchView
|
||||
android:id="@+id/tabSwitchMsgBox"
|
||||
android:layout_width="@dimen/dp_220"
|
||||
android:layout_height="@dimen/dp_140"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:clickBgRes="@drawable/icon_tab_click_bg"
|
||||
app:clickRes="@drawable/icon_tab_msg_box_click"
|
||||
app:defaultRes="@drawable/icon_tab_msg_box"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tabSwitchCarInfo"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.TabSwitchView
|
||||
android:id="@+id/tabSwitchReport"
|
||||
android:layout_width="@dimen/dp_220"
|
||||
android:layout_height="@dimen/dp_140"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:clickBgRes="@drawable/icon_tab_click_bg"
|
||||
app:clickRes="@drawable/icon_tab_report_click"
|
||||
app:defaultRes="@drawable/icon_tab_report"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tabSwitchMsgBox"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.TabSwitchView
|
||||
android:id="@+id/tabSwitchMore"
|
||||
android:layout_width="@dimen/dp_220"
|
||||
android:layout_height="@dimen/dp_140"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
app:clickBgRes="@drawable/icon_tab_click_bg"
|
||||
app:clickRes="@drawable/icon_tab_more_click"
|
||||
app:defaultRes="@drawable/icon_tab_more"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tabSwitchReport"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/topStatusContainer"
|
||||
android:layout_width="@dimen/dp_964"
|
||||
android:layout_height="@dimen/dp_357"
|
||||
android:background="@drawable/bg_top_status_layout_normal">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.status.StartAutoPilotStatusView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/dp_59"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,230 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/bg_tab_item">
|
||||
|
||||
<View
|
||||
android:id="@+id/topViewPos"
|
||||
android:layout_width="@dimen/dp_856"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
android:layout_marginTop="@dimen/dp_21"
|
||||
android:layout_marginEnd="@dimen/dp_40"
|
||||
android:background="@drawable/bg_tab_view_top"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="@dimen/dp_160"
|
||||
android:layout_height="@dimen/dp_56"
|
||||
android:layout_marginStart="@dimen/dp_104"
|
||||
android:layout_marginTop="@dimen/dp_55"
|
||||
android:text="@string/tab_car_info"
|
||||
android:textColor="@color/color_CC_FFFFFF"
|
||||
android:textSize="@dimen/dp_40"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_700"
|
||||
android:layout_marginTop="@dimen/dp_75"
|
||||
app:layout_constraintTop_toBottomOf="@+id/topViewPos">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:layout_marginEnd="@dimen/dp_40">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivCarType"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_280"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCarLoginPos"
|
||||
android:layout_width="@dimen/dp_152"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginStart="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_22"
|
||||
android:text="@string/tab_car_login_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_38"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/ivCarType" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCarLoginInfo"
|
||||
android:layout_width="@dimen/dp_185"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvCarLoginPos"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tvCarLoginPos"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvCarLoginPos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCarExit"
|
||||
android:layout_width="@dimen/dp_64"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginEnd="@dimen/dp_60"
|
||||
android:gravity="center"
|
||||
android:text="@string/tab_car_exit"
|
||||
android:textColor="@color/color_FF1943"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvCarLoginInfo"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvCarLoginInfo" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCarNoPos"
|
||||
android:layout_width="@dimen/dp_152"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginStart="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_49"
|
||||
android:text="@string/tab_car_no"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_38"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvCarLoginPos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCarNo"
|
||||
android:layout_width="@dimen/dp_185"
|
||||
android:layout_height="@dimen/dp_72"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:background="@drawable/bg_tab_car_no"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvCarNoPos"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tvCarNoPos"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvCarNoPos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvVersionPos"
|
||||
android:layout_width="@dimen/dp_152"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginStart="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_68"
|
||||
android:text="@string/tab_version_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_38"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvCarNoPos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvPadVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:gravity="center"
|
||||
android:text="@string/tab_version_pad_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvVersionPos"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tvVersionPos"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvVersionPos" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvPADUpdate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:text="@string/tab_version_update"
|
||||
android:textColor="@color/color_2EACFF"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvPadVersion"
|
||||
app:layout_constraintRight_toRightOf="@+id/tvCarExit"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvPadVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvADVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:gravity="center"
|
||||
android:text="@string/tab_version_ad_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/tvPadVersion"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvPadVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvADUpdate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:text="@string/tab_version_update"
|
||||
android:textColor="@color/color_2EACFF"
|
||||
android:textSize="@dimen/dp_32"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvADVersion"
|
||||
app:layout_constraintRight_toRightOf="@+id/tvCarExit"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvADVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHDMapVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:gravity="center"
|
||||
android:text="@string/tab_version_hdmap_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/tvADVersion"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvADVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvHDMapUpdate"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
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="@+id/tvCarExit"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvHDMapVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvADMapVersion"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/dp_45"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:gravity="center"
|
||||
android:text="@string/tab_version_admap_info"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_32"
|
||||
app:layout_constraintLeft_toLeftOf="@+id/tvHDMapVersion"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvHDMapVersion" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvSnPos"
|
||||
android:layout_width="@dimen/dp_152"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginStart="@dimen/dp_60"
|
||||
android:layout_marginTop="@dimen/dp_232"
|
||||
android:text="@string/tab_sn"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/dp_38"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvVersionPos" />
|
||||
|
||||
<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_32"
|
||||
app:layout_constraintBottom_toBottomOf="@+id/tvSnPos"
|
||||
app:layout_constraintLeft_toRightOf="@+id/tvSnPos"
|
||||
app:layout_constraintTop_toTopOf="@+id/tvSnPos" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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_865"
|
||||
android:layout_height="@dimen/dp_102">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/fSMStatusLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/icon_fsm_status_bg_normal"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/withoutFSMStatusLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="@dimen/dp_34"
|
||||
android:gravity="center_vertical"
|
||||
android:visibility="gone"
|
||||
tools:visibility="gone"
|
||||
tools:background="@drawable/icon_no_fsm_status_bg_error">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_gear"
|
||||
android:layout_width="@dimen/dp_55"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:text="P"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="@dimen/dp_36"
|
||||
android:layout_marginEnd="@dimen/dp_22"
|
||||
android:background="@drawable/bg_autopilot_status_gear"
|
||||
tools:text="P" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_steer"
|
||||
android:layout_width="@dimen/dp_55"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:layout_marginEnd="@dimen/dp_22"
|
||||
android:src="@drawable/bg_autopilot_status_steer" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_accelerator"
|
||||
android:layout_width="@dimen/dp_55"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:layout_marginEnd="@dimen/dp_22"
|
||||
android:src="@drawable/bg_autopilot_status_accelerator" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_brake"
|
||||
android:layout_width="@dimen/dp_55"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:layout_marginEnd="@dimen/dp_22"
|
||||
android:src="@drawable/bg_autopilot_status_brake" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_double_flash"
|
||||
android:layout_width="@dimen/dp_55"
|
||||
android:layout_height="@dimen/dp_55"
|
||||
android:src="@drawable/bg_autopilot_status_double_flash" />
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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_220"
|
||||
android:layout_height="@dimen/dp_140">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTabDefault"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTabClick"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:scaleType="center"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTabClickBg"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
tools:ignore="ContentDescription" />
|
||||
|
||||
<View
|
||||
android:id="@+id/vTabNotice"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -152,4 +152,10 @@
|
||||
</attr>
|
||||
</declare-styleable>
|
||||
|
||||
<declare-styleable name="TabSwitch" >
|
||||
<attr name="defaultRes" format="reference"/>
|
||||
<attr name="clickRes" format="reference"/>
|
||||
<attr name="clickBgRes" format="reference"/>
|
||||
</declare-styleable>
|
||||
|
||||
</resources>
|
||||
@@ -16,7 +16,9 @@
|
||||
<color name="colorPrimaryDark">#3700B3</color>
|
||||
<color name="colorAccent">#03DAC5</color>
|
||||
<color name="color_000000">#000000</color>
|
||||
<color name="color_B3_000000">#B3000000</color>
|
||||
<color name="color_8F0005">#8F0005</color>
|
||||
<color name="color_2EACFF">#2EACFF</color>
|
||||
<color name="color_FF0006">#FF0006</color>
|
||||
<color name="color_0099dd">#0099dd</color>
|
||||
<color name="color_FFFFFF">#FFFFFF</color>
|
||||
@@ -27,6 +29,7 @@
|
||||
<color name="color_252B3F">#252B3F</color>
|
||||
<color name="color_131415">#131415</color>
|
||||
<color name="color_B2BED9">#B2BED9</color>
|
||||
<color name="color_FF1943">#FF1943</color>
|
||||
<color name="color_27FFFFFF">#27FFFFFF</color>
|
||||
<color name="color_1E111111">#1E111111</color>
|
||||
<color name="color_FF213757">#FF213757</color>
|
||||
@@ -47,6 +50,7 @@
|
||||
<color name="foreground_info">#FF333333</color>
|
||||
<color name="foreground_warn">#FFCCCCCC</color>
|
||||
<color name="color_80FFFFFF">#80FFFFFF</color>
|
||||
<color name="color_CC_FFFFFF">#CCFFFFFF</color>
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,18 @@
|
||||
<string name="app_name">mogo-core-function-hmi</string>
|
||||
<string name="motice_push_check">查看</string>
|
||||
|
||||
<string name="tab_car_info">我的车辆</string>
|
||||
<string name="tab_car_login_info">登陆信息</string>
|
||||
<string name="tab_car_exit">退出</string>
|
||||
<string name="tab_car_no">车辆绑定</string>
|
||||
<string name="tab_version_info">版本信息</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">HDMAP:</string>
|
||||
<string name="tab_version_admap_info">ADMAP:</string>
|
||||
<string name="tab_version_update">检查更新</string>
|
||||
|
||||
<string name="log_min">最小化</string>
|
||||
<string name="log_info">日志</string>
|
||||
<string name="log_info_edt_hint">输入想要过滤的关键字</string>
|
||||
|
||||
@@ -148,17 +148,20 @@ class HttpDnsStartUp : AndroidStartup<Boolean>(), IMoGoCloudListener {
|
||||
} else {
|
||||
clientConfig.serviceAppId = "com.mogo.launcher"
|
||||
}
|
||||
// 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请
|
||||
// 设置AI云平台分配给三方应用的签名密钥,需要从AI云平台申请ert
|
||||
// 设置车机设备的唯一标识(这些表识必须是通过后台录入的设备)
|
||||
// TODO 现在这块逻辑因为网约车业务那后台的限制,还没有更换,条件成熟后替换为 DeviceIdUtils.getWidevineIDWithMd5(context)
|
||||
// 这里影响当前Activity的身份信息,多进程先保持与原来一样,主进程为司机端,:passenger 进程为乘客端
|
||||
if (ProcessUtils.getCurrentProcessName().contains(":passenger")) {
|
||||
if (ProcessUtils.getCurrentProcessName().contains("passenger")) {
|
||||
clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN() + "_passenger"
|
||||
CallerLogger.i("$M_MAIN$TAG", "emArrow passenger sn : ${DeviceUtils.getDeviceSN()} + _passenger")
|
||||
clientConfig.secretKey = "DLtjkFhV1lEZqLRnUs6OCFS0luP8S0mG"
|
||||
} else {
|
||||
clientConfig.thirdPartyDeviceId = DeviceUtils.getDeviceSN()
|
||||
//设置长链接的secretKey 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作
|
||||
CallerLogger.i("$M_MAIN$TAG", "emArrow sn : ${DeviceUtils.getDeviceSN()}")
|
||||
clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ"
|
||||
}
|
||||
//设置长链接的secretKey 通过SHA1和包名找中台服务生成,后续包名分渠道,需要做对应操作
|
||||
clientConfig.secretKey = "YMj2VFDFxJ3Q4gNoZceJ"
|
||||
// clientConfig.secretKey = "n48AlVufihvMDWgzwHX42yzSgiWaad6v"
|
||||
|
||||
clientConfig.iHttpCurrentLocation = object : ICurrentLocation {
|
||||
|
||||
@@ -67,6 +67,7 @@ class ChainConstant {
|
||||
const val CHAIN_CODE_ADAS_P_OBJECTS = "CHAIN_CODE_ADAS_P_OBJECTS"
|
||||
const val CHAIN_CODE_ADAS_P_ACTIONS = "CHAIN_CODE_ADAS_P_ACTIONS"
|
||||
const val CHAIN_CODE_ADAS_STATUS_QUERY_RESP = "CHAIN_CODE_ADAS_STATUS_QUERY_RESP"
|
||||
const val CHAIN_CODE_ADAS_SYSTEM_STATUS = "CHAIN_CODE_ADAS_SYSTEM_STATUS"
|
||||
const val CHAIN_CODE_ADAS_PARALLEL = "CHAIN_CODE_ADAS_PARALLEL"
|
||||
const val CHAIN_CODE_ADAS_MAP_PARAM = "CHAIN_CODE_ADAS_MAP_PARAM"
|
||||
const val CHAIN_CODE_ADAS_V2N_EVENT = "CHAIN_CODE_ADAS_V2N_EVENT"
|
||||
|
||||
@@ -1028,18 +1028,24 @@
|
||||
<dimen name="dp_1000">1000dp</dimen>
|
||||
<dimen name="dp_1003">1003dp</dimen>
|
||||
<dimen name="dp_1017">1017dp</dimen>
|
||||
<dimen name="dp_1046">1046dp</dimen>
|
||||
<dimen name="dp_1055">1055dp</dimen>
|
||||
<dimen name="dp_1090">1090dp</dimen>
|
||||
<dimen name="dp_1092">1092dp</dimen>
|
||||
<dimen name="dp_1100">1100dp</dimen>
|
||||
<dimen name="dp_1114">1114dp</dimen>
|
||||
<dimen name="dp_1125">1125dp</dimen>
|
||||
<dimen name="dp_1128">1128dp</dimen>
|
||||
<dimen name="dp_1137">1137dp</dimen>
|
||||
<dimen name="dp_1158">1158dp</dimen>
|
||||
<dimen name="dp_1170">1170dp</dimen>
|
||||
<dimen name="dp_1200">1200dp</dimen>
|
||||
<dimen name="dp_1241">1241dp</dimen>
|
||||
<dimen name="dp_1250">1250dp</dimen>
|
||||
<dimen name="dp_1261">1261dp</dimen>
|
||||
<dimen name="dp_1300">1300dp</dimen>
|
||||
<dimen name="dp_1373">1373dp</dimen>
|
||||
<dimen name="dp_1386">1386dp</dimen>
|
||||
<dimen name="dp_1600">1600dp</dimen>
|
||||
<dimen name="dp_1860">1860dp</dimen>
|
||||
<dimen name="dp_1920">1920dp</dimen>
|
||||
|
||||
@@ -81,7 +81,7 @@ MOGO_LOCATION_VERSION=1.4.7.38
|
||||
MOGO_TELEMATIC_VERSION=1.4.7.38
|
||||
######## MogoAiCloudSDK Version ########
|
||||
# 自研地图
|
||||
MAP_SDK_VERSION=3.4.0.6
|
||||
MAP_SDK_VERSION=3.4.1.2
|
||||
MAP_SDK_DATA_VERSION=1.0.0.9
|
||||
MAP_SDK_OPERATION_VERSION=1.1.4.1
|
||||
# websocket
|
||||
|
||||
@@ -65,7 +65,7 @@ dependencies {
|
||||
|
||||
|
||||
implementation 'com.zhidaoauto.map:net:1.0.1'
|
||||
implementation "com.zhidaoauto.machine:mapcore:3.4.1.2"
|
||||
implementation "com.zhidaoauto.machine:mapcore:${MAP_SDK_VERSION}"
|
||||
implementation "com.zhidaoauto.machine:mapdata:${MAP_SDK_DATA_VERSION}"
|
||||
|
||||
}
|
||||
|
||||