[2.15.0-merge-master]

This commit is contained in:
zhongchao
2023-05-06 20:03:51 +08:00
1466 changed files with 45283 additions and 27080 deletions

View File

@@ -41,6 +41,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
kotlinOptions {
jvmTarget = '1.8'
}

View File

@@ -43,6 +43,7 @@ class FuncBizProvider : IMoGoFuncBizProvider {
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode))){
V2XEventManager.init(context)
}
if(AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)){
LineUploadManager.getInstance(context)?.init()
}

View File

@@ -9,6 +9,8 @@ import com.mogo.eagle.function.biz.v2x.v2n.scenario.view.IV2XMarker;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.atomic.AtomicReference;
/**
* author : donghongyu
* e-mail : 1358506549@qq.com

View File

@@ -44,6 +44,11 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {

View File

@@ -1,6 +1,7 @@
package com.mogo.eagle.core.function.chat.facade.consts
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.config.FunctionBuildConfig
//WebSocket发送数据相关
const val SOCKET_HAND_SHAKE = 0
@@ -60,10 +61,14 @@ class ChatHttp {
}
fun getSocketServer(): String {
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV, DebugConfig.NET_MODE_QA, DebugConfig.NET_MODE_DEMO -> DEV_SOCKET_SERVER
DebugConfig.NET_MODE_RELEASE -> SOCKET_SERVER
else -> SOCKET_SERVER
if(FunctionBuildConfig.urlJson.chartSocketUrl.isEmpty()){
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV, DebugConfig.NET_MODE_QA, DebugConfig.NET_MODE_DEMO -> DEV_SOCKET_SERVER
DebugConfig.NET_MODE_RELEASE -> SOCKET_SERVER
else -> SOCKET_SERVER
}
}else{
return FunctionBuildConfig.urlJson.chartSocketUrl
}
}

View File

@@ -12,7 +12,6 @@
android:id="@+id/module_carchatting_call_head"
android:layout_width="@dimen/module_call_chat_incoming_aisdk_tag_width"
android:layout_height="match_parent"
android:scaleType="centerInside"
android:src="@drawable/module_carchatting_aicloud_incoming"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -26,7 +25,6 @@
android:layout_marginEnd="@dimen/module_call_chat_calling_iv_hawk_eye_margin_left_right"
android:layout_marginRight="@dimen/module_call_chat_state_incoming_hawk_eye_call_margin_right"
android:clickable="true"
android:scaleType="centerInside"
android:src="@mipmap/module_callchatting_launcher_incoming_answer"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/module_carchatting_incoming_hangUp"
@@ -39,7 +37,6 @@
android:layout_height="@dimen/module_call_chat_hawk_eye_incoming_circle_btn_size"
android:layout_marginEnd="@dimen/module_call_chat_calling_iv_hawk_eye_margin_left_right"
android:clickable="true"
android:scaleType="centerInside"
android:src="@mipmap/module_callchatting_launcher_incoming_hangup"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@@ -40,6 +40,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {

View File

@@ -598,7 +598,6 @@ class MoGoAdasListenerImpl : OnAdasListener {
) {
}
/**
* 清扫车后部摄像头视频 10Hz
*
@@ -615,11 +614,11 @@ class MoGoAdasListenerImpl : OnAdasListener {
* @param header 头
* @param roboSweeperTaskIndex 数据
*/
override fun onSweeperTaskIndexData(
header: MessagePad.Header?,
roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex?
) {
override fun onSweeperTaskIndexData(header: MessagePad.Header?, roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex?) {
roboSweeperTaskIndex?.let {
//清扫车(福田)清扫控制系统状态
CallerSweeperFutianCleanSystemListenerManager.invokeSweeperFutianCleanTaskIndexData(it)
}
}
/**

View File

@@ -45,6 +45,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs += [

View File

@@ -2,7 +2,6 @@ package com.zhjt.mogo_core_function_devatools.binding
import android.content.Context
import android.text.TextUtils
import android.util.Log
import com.elegant.utils.UiThreadHandler
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.constants.SharedPrefsConstants
@@ -63,7 +62,6 @@ class BindingCarManager : IMoGoAutopilotCarConfigListener {
override fun onAutopilotCarConfig(carConfigResp: MessagePad.CarConfigResp) {
if (carConfigResp != null && !TextUtils.isEmpty(carConfigResp.macAddress)) {
Log.d("Upgrade", "MoGoHandAdasMsgManager address = " + carConfigResp.macAddress)
CallerLogger.d(
"$M_DEVA$TAG",
"onAutopilotCarConfig carConfigResp.macAddress = ${carConfigResp.macAddress} "

View File

@@ -10,7 +10,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import mogo_msg.MogoReportMsg
@@ -70,30 +69,29 @@ class IPCReportManager : IMoGoAutopilotStatusListener {
*工控机监控节点上报
*/
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {
ThreadUtils.runOnUiThread {
guardianInfo?.let{
if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
|| it.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
|| it.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
|| it.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
|| it.resultList.contains(RESULT_SHOW_WARNING)
|| it.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)){
val reportEntity = ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()),
it.src,it.level,it.msg,it.code,it.resultList,it.actionsList,false)
CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.REPORT, reportEntity))
}
guardianInfo?.let{
if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
|| it.resultList.contains(RESULT_AUTOPILOT_SYSTEM_UNSTARTED)
|| it.resultList.contains(RESULT_REMOTEPILOT_DISABLE)
|| it.resultList.contains(RESULT_AUTOPILOT_INFERIOR)
|| it.resultList.contains(RESULT_SHOW_WARNING)
|| it.resultList.contains(RESULT_REMOTEPILOT_INFERIOR)){
val reportEntity = ReportEntity(TimeUtils.millis2String(System.currentTimeMillis()),
it.src,it.level,it.msg,it.code,it.resultList,it.actionsList,false)
CallerMsgBoxManager.saveMsgBox(MsgBoxBean(MsgBoxType.REPORT, reportEntity))
}
if (reportList.size > 49) {
reportList.removeLast()
}
reportList.add(
0,
ReportEntity(
TimeUtils.millis2String(System.currentTimeMillis()),
it.src, it.level, it.msg, it.code, it.resultList, it.actionsList
,false)
)
reportListFloatWindow?.refreshData(reportList)
if (reportList.size > 49) {
reportList.removeLast()
}
reportList.add(
0,
ReportEntity(
TimeUtils.millis2String(System.currentTimeMillis()),
it.src, it.level, it.msg, it.code, it.resultList, it.actionsList
,false)
)
reportListFloatWindow?.refreshData(reportList)
// //Error 弹窗并有提示音
// if(it.resultList.contains(RESULT_AUTOPILOT_DISABLE)
@@ -130,7 +128,6 @@ class IPCReportManager : IMoGoAutopilotStatusListener {
// }
// }
// }
}
}
}

View File

@@ -58,8 +58,8 @@ class SceneManager {
sceneModuleTAG.map[DEVA] = SceneModule(false, M_DEVA)
sceneModuleTAG.map[HMI] = SceneModule(false, M_HMI)
sceneModuleTAG.map[OBU] = SceneModule(false, M_OBU)
sceneModuleTAG.map[V2X] = SceneModule(false, M_V2X)
sceneModuleTAG.map[MAP] = SceneModule(false, M_MAP)
sceneModuleTAG.map[V2X] = SceneModule(true, M_V2X)
sceneModuleTAG.map[MAP] = SceneModule(true, M_MAP)
sceneModuleTAG.map[ROUTE] = SceneModule(true, M_OLD_ROUTE)
sceneModuleTAG.map[NET] = SceneModule(true, M_NETWORK)
sceneModuleTAG.map[BUS] = SceneModule(true, M_BUS)

View File

@@ -12,6 +12,7 @@ import com.zhjt.mogo_core_function_devatools.status.entity.CanStatus
import com.zhjt.mogo_core_function_devatools.status.flow.IFlow
import kotlinx.coroutines.Job
import mogo_msg.MogoReportMsg.MogoReportMessage
import planning.RoboSweeperTaskIndexOuterClass
import system_master.SystemStatusInfo.StatusInfo
import java.util.concurrent.atomic.AtomicInteger
@@ -94,10 +95,13 @@ internal class CanImpl(ctx: Context) :
send(CanStatus(isCanEnabled()))
}
override fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) {
send(CanStatus(isCanEnabled()))
}
override fun onSweeperFutianTaskIndexData(roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex) {
}
override fun onAutopilotGuardian(guardianInfo: MogoReportMessage?) {
super.onAutopilotGuardian(guardianInfo)
send(CanStatus(isCanEnabled()))

View File

@@ -42,6 +42,10 @@ android {
jvmTarget = "1.8"
}
lintOptions {
abortOnError false
}
}
dependencies {

View File

@@ -4,12 +4,14 @@ import android.content.Context
import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.content.res.AppCompatResources
import androidx.constraintlayout.widget.ConstraintLayout
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.hmi.R
import kotlinx.android.synthetic.main.view_driver_msg_box_button.view.*
import kotlinx.android.synthetic.main.view_driver_msg_box_button.view.cbMsgBoxDriver
import kotlinx.android.synthetic.main.view_driver_msg_box_button.view.msgBoxTipView
/**
* @author XuXinChao
@@ -20,7 +22,7 @@ class DriverMsgBoxButtonView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
):ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxEventListener {
) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxEventListener {
companion object {
const val TAG = "DriverMsgBoxButtonView"
@@ -28,21 +30,35 @@ class DriverMsgBoxButtonView @JvmOverloads constructor(
private var clickListener: ClickListener? = null
init{
private val bgResources: Int
init {
LayoutInflater.from(context).inflate(R.layout.view_driver_msg_box_button, this, true)
val a = context.obtainStyledAttributes(
attrs,
R.styleable.DriverMsgBoxButtonView,
defStyleAttr,
0
)
bgResources = a.getResourceId(
R.styleable.DriverMsgBoxButtonView_bgDrawable,
R.drawable.selector_msg_box
)
initView()
}
private fun initView(){
private fun initView() {
cbMsgBoxDriver.setOnCheckedChangeListener { _, isChecked ->
clickListener?.showMsgBoxList(isChecked)
msgBoxTipView.visibility = View.GONE
}
cbMsgBoxDriver.background = AppCompatResources.getDrawable(context, bgResources)
}
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerMsgBoxEventListenerManager.addListener(TAG,this)
CallerMsgBoxEventListenerManager.addListener(TAG, this)
}
override fun onDetachedFromWindow() {
@@ -59,9 +75,9 @@ class DriverMsgBoxButtonView @JvmOverloads constructor(
* @param isShow true:展示false:不展示
*/
override fun onUpdateTipEvent(isShow: Boolean) {
if(isShow){
if (isShow) {
msgBoxTipView.visibility = View.VISIBLE
}else{
} else {
msgBoxTipView.visibility = View.GONE
}
}
@@ -82,7 +98,7 @@ class DriverMsgBoxButtonView @JvmOverloads constructor(
this.clickListener = clickListener
}
interface ClickListener{
interface ClickListener {
fun showMsgBoxList(show: Boolean)
}

View File

@@ -27,7 +27,7 @@ import com.mogo.commons.constants.SharedPrefsConstants
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.*
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.constants.MoGoConfig
@@ -84,8 +84,14 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.*
import kotlinx.coroutines.*
import mogo.telematics.pad.MessagePad
import mogo_msg.MogoReportMsg
import planning.RoboSweeperTaskIndexOuterClass
import java.text.SimpleDateFormat
import java.util.*
import kotlin.collections.component1
import kotlin.collections.component2
import kotlin.collections.component3
import kotlin.collections.component4
import kotlin.collections.set
import kotlin.math.abs
@@ -289,6 +295,16 @@ internal class DebugSettingView @JvmOverloads constructor(
}
private fun initView() {
post {
val maxHeight = ScreenUtils.getScreenHeight()-BarUtils.getStatusBarHeight()
val height = clDebugContain.height
if(height>maxHeight){
val layoutParamsOther = clDebugContain.layoutParams
layoutParamsOther.height = maxHeight
clDebugContain.layoutParams = layoutParamsOther
}
}
val iconDown = ContextCompat.getDrawable(context, R.drawable.icon_down)
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
val iconRight = ContextCompat.getDrawable(context, R.drawable.icon_right)
@@ -2003,7 +2019,9 @@ internal class DebugSettingView @JvmOverloads constructor(
override fun onSweeperFutianCleanSystemState(cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates) {
}
override fun onSweeperFutianTaskIndexData(roboSweeperTaskIndex: RoboSweeperTaskIndexOuterClass.RoboSweeperTaskIndex) {
}
/**
* 吐司提示
*/

View File

@@ -256,14 +256,31 @@ internal class SOPSettingView @JvmOverloads constructor(
CallerDevaToolsFuncConfigListenerManager.registerDevaToolsFuncConfigListener(
FuncBizConfig.FOUNDATION, TAG, true, this
)
// 开启定时查询速度
// Timer().schedule(timerTaskRefresh, Date(), 500)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
// 移除 业务配置监听
CallerDevaToolsFuncConfigListenerManager.unRegisterDevaToolsFuncConfigListener(FuncBizConfig.FOUNDATION, TAG)
// try {
// timerTaskRefresh.cancel()
// } catch (e: Exception) {
// e.printStackTrace()
// }
}
// private val timerTaskRefresh = object : TimerTask(){
// override fun run() {
// UiThreadHandler.post{
// tbDemoMode.isChecked = FunctionBuildConfig.isDemoMode
// tbRainMode.isChecked = FunctionBuildConfig.isRainMode
// }
// }
//
// }
override fun updateBizView(type: String, lock: Boolean) {
when (type) {
FuncBizConfig.BIZ_BEAUTY_MODE -> {

View File

@@ -7,11 +7,13 @@ import android.view.View
import android.view.WindowManager
import android.view.animation.OvershootInterpolator
import com.mogo.eagle.core.data.enums.SidePattern
import com.mogo.eagle.core.data.deva.report.ReportEntity
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.hmi.notification.WarningFloat
import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
import com.mogo.eagle.core.utilcode.util.BarUtils
import com.mogo.eagle.core.utilcode.util.ScreenUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import me.jessyan.autosize.utils.AutoSizeUtils
class ToggleDebugView private constructor() : IMoGoAutopilotStatusListener {
@@ -47,13 +49,16 @@ class ToggleDebugView private constructor() : IMoGoAutopilotStatusListener {
}
})
}
val height = AutoSizeUtils.dp2px(context, 1100f)
val maxHeight = ScreenUtils.getScreenHeight() - BarUtils.getStatusBarHeight()
val currentHeight = if(height>maxHeight) maxHeight else height
mDebugSettingViewFloat = WarningFloat.with(context)
.setTag("DebugSettingView")
.setLayout(mDebugSettingView!!)
.setSidePattern(sidePattern)
.setGravity(gravity, offsetY = 70)
.setImmersionStatusBar(true)
.setWindowHeight(AutoSizeUtils.dp2px(context, 1100f))
.setWindowHeight(currentHeight)
.setWindowWidth(AutoSizeUtils.dp2px(context, 800f))
.setAnimator(object : DefaultAnimator() {
override fun enterAnim(

View File

@@ -10,7 +10,6 @@ import android.util.AttributeSet
import android.view.LayoutInflater
import android.view.View
import android.widget.FrameLayout
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo
import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo
@@ -32,6 +31,7 @@ import mogo.telematics.pad.MessagePad
import org.greenrobot.eventbus.EventBus
import kotlin.system.exitProcess
/**
* @author ChenFufeng
* 设置自动驾驶速度和检测页入口
@@ -241,19 +241,6 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor(
}
actvLoginout.visibility = View.VISIBLE
toolBusOperationView.showBusOperation()
// TODO 这里判断方式可以替换为使用 AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)等进行替换
when (DebugConfig.getProductFlavor()) {
"fPadLenovoOchTaxi" -> {
//出租车司机
}
"fPadLenovoOchBus" ->{
//小巴车司机
}
else -> {
}
}
}
private fun killApp() {

View File

@@ -31,14 +31,27 @@ class BusOperationView @JvmOverloads constructor(
actvAccountPhone.text = phoneMask(SharedPrefs.getInstance(it).getString("och_account",""))
}
clickPersonalRightView()
clickQRBtn()
}
private fun clickQRBtn() {
actvAccountQR.onClick {
EventBus.getDefault().post(EventLogout(EventLogout.SHOW_QR_TYPE))
}
}
private fun initPersonalIcon() {
if(AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)){
ivGotoPersonalInfo.visibility = VISIBLE
}else{
ivGotoPersonalInfo.visibility = GONE
}
if (AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)) {
actvAccountQR.visibility = VISIBLE
}else{
actvAccountQR.visibility = GONE
}
}
private fun clickPersonalRightView() {

View File

@@ -68,7 +68,7 @@ class PncActionsView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
(tvHmiPncActions.layoutParams as MarginLayoutParams).topMargin = topMargin.toInt()
tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX, txtSize)
tvHmiPncActions.setTextSize(COMPLEX_UNIT_PX, txtSize.toFloat())
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerPlanningActionsListenerManager.addListener(TAG, this)

View File

@@ -12,7 +12,6 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLamplightListener
import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationWGS84Listener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLamplightListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationWGS84ListenerManager
import com.mogo.eagle.core.function.call.map.*
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

View File

@@ -78,7 +78,7 @@ class TakeOverView @JvmOverloads constructor(
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_PLANNING,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_LOCATION,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_CHASSIS,
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE ->{
MogoReport.Code.Error.EMAP.EXIT_AUTOPILOT_FOR_DISTANCE -> {
CallerHmiManager.warningV2X(
EventTypeEnumNew.TAKE_OVER_EVENT.poiType,
EventTypeEnumNew.TAKE_OVER_EVENT.content,

View File

@@ -16,7 +16,7 @@ import kotlinx.android.synthetic.main.view_blue_tooth.view.*
* 魔戒蓝牙控件
* 放置于StatusBar右侧位置
*/
class BlueToothView @JvmOverloads constructor(
open class BlueToothView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0

View File

@@ -19,6 +19,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerChassisGearStateListenerManager
import com.mogo.eagle.core.function.call.autopilot.CallerChassisSteeringStateListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isBus
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils.isTaxi
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
@@ -46,10 +47,12 @@ class SteeringWheelView : ConstraintLayout, IMoGoChassisSteeringStateListener,
constructor(context: Context) : super(context) {}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
if (isBus(FunctionBuildConfig.appIdentityMode)) {
LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this)
} else {
LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_taxi, this)
when (AppIdentityModeUtils.getProduct(FunctionBuildConfig.appIdentityMode)) {
AppIdentityModeUtils.Product.BUS -> LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this)
AppIdentityModeUtils.Product.TAXI -> LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_taxi, this)
AppIdentityModeUtils.Product.SWEEPER -> LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this)
AppIdentityModeUtils.Product.SHUTTLE -> LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this)
AppIdentityModeUtils.Product.CHARTER -> LayoutInflater.from(context).inflate(R.layout.hmi_steering_wheel_bus, this)
}
initView()
CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener)

View File

@@ -39,7 +39,7 @@ public class TapPositionView extends ConstraintLayout {
tabN = findViewById(R.id.tap_n);
tabD = findViewById(R.id.tap_d);
typedArray = context.obtainStyledAttributes(attrs, R.styleable.TapPositionView);
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)){
if(AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)||AppIdentityModeUtils.isSweeper(FunctionBuildConfig.appIdentityMode)){
tabP.setVisibility(View.GONE);
}
}

View File

@@ -34,6 +34,8 @@ import org.jetbrains.annotations.NotNull;
import chassis.Chassis;
import mogo.telematics.pad.MessagePad;
import chassis.ChassisStatesOuterClass;
import planning.RoboSweeperTaskIndexOuterClass;
/**
* @author Jing

View File

@@ -46,10 +46,10 @@ class VersionNameView @JvmOverloads constructor(
showCurrentMapVersion()
// 调试入口应对M1、M2没有安装Launcher的情况
setOnLongClickListener {
ActivityUtils.startActivity(AppListActivity::class.java)
true
}
// setOnLongClickListener {
// ActivityUtils.startActivity(AppListActivity::class.java)
// true
// }
}
/**

View File

@@ -25,6 +25,7 @@ import com.mogo.eagle.core.data.deva.chain.ChainConstant
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiFloatViewManager
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController
import com.mogo.eagle.core.function.call.startup.CallerStartUpManager.initStageTwo
@@ -97,18 +98,20 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
decorView.clipToPadding = false
var statusBarView = decorView.findViewWithTag<View>("status_bar")
if (statusBarView == null) {
statusBarView = statusBar
statusBarView.tag = "status_bar"
val params = FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
)
params.topMargin = 0
params.gravity = Gravity.TOP
decorView.addView(statusBarView, params)
val statusBar = CallerHmiFloatViewManager.getView(this)
statusBarView = statusBar?:StatusBarView(this)
statusBarView.setTag("status_bar")
}
val statusBarLP = FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
)
statusBarLP.topMargin = 0
statusBarLP.gravity = Gravity.TOP
decorView.addView(statusBarView, statusBarLP)
}
// todo 优化 车聊聊
private fun injectFloatView() {
val decorView = this.window.decorView as? FrameLayout ?: return
@@ -129,19 +132,6 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
}
}
/**
* 修改statusBar重新赋值
* @return StatusBarView
*/
protected var statusBar: View?=null
get() {
return if (field == null) {
StatusBarView(this)
}else{
field
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
calculateStartTime()
@@ -208,6 +198,7 @@ open class MainActivity : MvpActivity<MainView?, MainPresenter?>(), MainView,
override fun onMapLoaded() {
// 延时加载其他模块
window.decorView.post {
MogoStatusManager.getInstance().setScreenCoverMode(TAG,true)
HdMapBuildConfig.isMapLoaded = true
mPresenter!!.delayOperations()
loadFunctionFragment()

View File

@@ -123,27 +123,17 @@ public class MainLauncherActivity extends MainActivity implements IMogoIntentLis
.build("/noop/api")
.navigation(getContext());
}
}
// TODO 董宏宇 目前处于测试阶段,处理一个机器多个屏幕方案
else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/driver/api")
.navigation(getContext());
// 启动乘客端Act
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) ||
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
MultiDisplayUtils.INSTANCE.startActWithSecond(
this,
PassengerLauncherActivity.class);
} else {
// 目前只有金旅星辰乘客屏是连接的双屏
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/passenger/api")
.navigation(getContext());
} else {
ochProvider = (IMoGoFunctionProvider) ARouter.getInstance()
.build("/noop/api")
.navigation(getContext());
}
// // 启动广告视频Atc
// if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode) ||
// AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
// MultiDisplayUtils.INSTANCE.startActWithSecond(
// this,
// VideoAdAtc.class);
// }
}
if (ochProvider != null) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -2,6 +2,7 @@
<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:id="@+id/clDebugContain"
android:layout_width="@dimen/dp_800"
android:layout_height="@dimen/dp_1100"
android:background="#FFFFFF">
@@ -1558,7 +1559,8 @@
android:textSize="@dimen/dp_24"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/btnDrawTrolley"
app:layout_constraintTop_toBottomOf="@id/reset_changesight" />
app:layout_constraintTop_toBottomOf="@id/reset_changesight"
/>
<ToggleButton
android:id="@+id/btnDrawFusion"

View File

@@ -60,6 +60,16 @@
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/actvAccountQR"
android:layout_width="@dimen/dp_84"
android:layout_height="@dimen/dp_84"
android:src="@drawable/icon_bind_driver_qrcode"
android:layout_marginLeft="@dimen/dp_32"
app:layout_constraintLeft_toRightOf="@+id/actvAccountPhone"
app:layout_constraintTop_toTopOf="@+id/actvAccountPhone"
app:layout_constraintBottom_toBottomOf="@+id/actvAccountPhone"/>
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/ivGotoPersonalInfo"

View File

@@ -76,8 +76,12 @@
<declare-styleable name="PncActionsView">
<attr name="background_resource" format="reference"/>
<attr name="pnc_top_margin" format="reference"/>
<attr name="pnc_size" format="reference"/>
<attr name="pnc_top_margin" format="dimension"/>
<attr name="pnc_size" format="dimension"/>
</declare-styleable>
<declare-styleable name="DriverMsgBoxButtonView">
<attr name="bgDrawable" format="reference"/>
</declare-styleable>
<declare-styleable name="RomaPassengerView">

View File

@@ -40,6 +40,11 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {

View File

@@ -61,5 +61,9 @@ class IdentifyBeautifyDataDrawer : Identify {
TrackManager.getInstance().clearAll()
}
override fun getIdentifyObj(uuid: String): TrackedObject? {
return TrackManager.getInstance().getIdentifyObj(uuid)
}
}

View File

@@ -166,4 +166,13 @@ public class TrackManager {
mMarkersCaches.clear();
}
public MessagePad.TrackedObject getIdentifyObj(String uuid) {
TrackObj trackObj = mMarkersCaches.get(uuid);
if (trackObj != null && trackObj.getCache() != null) {
return trackObj.getCache();
} else {
return null;
}
}
}

View File

@@ -101,7 +101,7 @@ object TrafficMarkerDrawer {
fun updateITrafficThreatLevelInfo(trafficData: TrafficData) {
CallerLogger.d(TAG,
"trafficData.type = " + trafficData.type + "---trafficData.threatLevel = " + trafficData.threatLevel + "----FunctionBuildConfig.debugTrackerProvider = " + FunctionBuildConfig.debugTrackerProvider)
if (FunctionBuildConfig.debugTrackerProvider != 1) {
if (FunctionBuildConfig.debugTrackerProvider != 1) {
return
}
if (trafficData != null && !TextUtils.isEmpty(trafficData.uuid)) {
@@ -128,6 +128,10 @@ object TrafficMarkerDrawer {
fun removeCvxRvInfoIndInfo(key: String) {
if (mTrafficMap.containsKey(key)) {
mTrafficMap.remove(key)
mMarkersCaches.get(key)?.let {
it.remove()
}
}
}

View File

@@ -39,7 +39,7 @@ object MarkerDrawerManager {
fun startLoopCalCarLocation() {
routeWipeDisposable = CompositeDisposable()
getLoopCalCarObservable().delay(1000L, TimeUnit.MILLISECONDS, true)
getLoopCalCarObservable().delay(500L, TimeUnit.MILLISECONDS, true)
.subscribeOn(Schedulers.io())
.repeat()
.retry()

View File

@@ -176,7 +176,9 @@ class SmallMapView @JvmOverloads constructor(
// 关闭显示实时路况图层aMap是地图控制器对象。
mAMap?.isTrafficEnabled = false
// 设置 锚点 图标
mCarMarker = if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
mCarMarker = if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)) {
mAMap?.addMarker(
MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.map_bus_icon))

View File

@@ -153,6 +153,7 @@ class OverMapView @JvmOverloads constructor(
topPadding = typedArray.getInt(R.styleable.OverMapView_topPadding, 100)
rightPadding = typedArray.getInt(R.styleable.OverMapView_rightPadding, 100)
bottomPadding = typedArray.getInt(R.styleable.OverMapView_bottomPadding, 100)
mTilt = typedArray.getFloat(R.styleable.OverMapView_mapTilt, 30f)
typedArray.recycle()
initView(context)
} catch (e: Exception) {
@@ -223,6 +224,25 @@ class OverMapView @JvmOverloads constructor(
siteMarkerList = mAMap!!.addMarkers(markerOptionsList, false)
}
@MainThread
fun drawSiteMarkers(
siteMarkers: List<SiteMarkerBean>?,
) {
if (siteMarkers.isNullOrEmpty()) return
clearSiteMarkers()
val markerOptionsList = ArrayList<MarkerOptions>()
for (siteMarkerBean in siteMarkers) {
val markerOption = MarkerOptions()
markerOption.position(siteMarkerBean.latLng)
markerOption.anchor(siteMarkerBean.anchorX, siteMarkerBean.anchorY)
markerOption.icon(
BitmapDescriptorFactory.fromBitmap(siteMarkerBean.bitmap)
)
markerOptionsList.add(markerOption)
}
siteMarkerList = mAMap!!.addMarkers(markerOptionsList, false)
}
@MainThread
fun clearSiteMarkers() {
if (siteMarkerList != null) {
@@ -285,7 +305,6 @@ class OverMapView @JvmOverloads constructor(
private fun initAMapView(context: Context) {
Log.d(TAG, "initAMapView")
mTilt = 30f
mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel.toFloat())
mAMap = mMapView!!.map
mCustomMapStyleOptions = CustomMapStyleOptions()

View File

@@ -0,0 +1,6 @@
package com.mogo.eagle.core.function.view
import android.graphics.Bitmap
import com.amap.api.maps.model.LatLng
data class SiteMarkerBean(var latLng: LatLng, var bitmap: Bitmap, var anchorX: Float, var anchorY: Float)

View File

@@ -25,8 +25,8 @@
<TextView
android:id="@+id/overLayer"
android:layout_width="@dimen/dp_116"
android:layout_height="@dimen/dp_116"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerInside"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"

View File

@@ -29,5 +29,7 @@
<attr name="topPadding" format="integer" />
<attr name="rightPadding" format="integer" />
<attr name="bottomPadding" format="integer" />
<!-- 倾斜角 -->
<attr name="mapTilt" format="float" />
</declare-styleable>
</resources>

View File

@@ -34,6 +34,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
}
dependencies {

View File

@@ -102,9 +102,11 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
clientConfig.isUseOriginSocket = true
// 设置是否输出网络日志
clientConfig.isShowNetDebugLog = false
// clientConfig.passportUrl //todo 亚坤
// clientConfig.socketBaseUrl
// clientConfig.socketTechUrl
clientConfig.passportUrl = FunctionBuildConfig.urlJson.passportUrl
clientConfig.socketBaseUrl = FunctionBuildConfig.urlJson.socketBaseUrl
clientConfig.socketTechUrl = FunctionBuildConfig.urlJson.socketTechUrl
// 设置是否是直播推流的主播
clientConfig.isAnchor = true
when (DebugConfig.getCarMachineType()) {

View File

@@ -0,0 +1,59 @@
syntax = "proto2";
package roadwork;
message RW_PB {
required Roadwork_PB roadwork =1;
optional Header header = 2;
}
message Roadwork_PB{
optional string id = 1; // 对应id
required int32 score = 2; // 置信度
required int64 detect_time = 3; // 发送时间
required int32 poi_type = 4; // poi 类型
optional int32 type = 5; // 事件类型
required Center_PB center = 6; // 中心点坐标
repeated GPSPoint_PB polygon = 7; // 多边形范围
repeated Road_PB road = 8; // 车道集合信息
}
message GPSPoint_PB {
required double lat = 1; // 纬度
required double lon = 2; // 经度
optional double hgt = 3; // 高程
}
message Road_PB{
required string road_id = 1; // 路段id
required string lane_no = 2; // 车道号
required string tile_id = 3; // 瓦片id
required int32 bearing = 4; // 方向角正北是0度 顺时针
}
message Center_PB{
required Road_PB road = 1; // 道路信息
required GPSPoint_PB point = 2; // 坐标
}
// header
message Time {
optional uint32 sec = 1; // 秒
optional uint32 nsec = 2; // 纳秒
}
message Header {
// Sequence number for each message. Each module maintains its own counter for
// sequence_num, always starting from 1 on boot.
optional uint32 seq = 1;
// Message publishing time in seconds.
optional Time stamp = 2;
// frame id
optional string frame_id = 3;
// Module name.
optional string module_name = 4;
}