[8.4.0] 司机屏无人化所有功能(除更改成D6任务相关)
This commit is contained in:
@@ -17,13 +17,15 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.CockpitType
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
|
||||
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
|
||||
import com.mogo.eagle.core.utilcode.util.ResourceUtils.getDrawable
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinFormat
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import java.text.SimpleDateFormat
|
||||
|
||||
/**
|
||||
* 司机端Tab类型的消息盒子适配器
|
||||
@@ -180,6 +182,9 @@ class MsgBoxTabAdapter(private val activity: Activity) :
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHourMinFormat(): SimpleDateFormat {
|
||||
return if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) TimeUtils.getHourMinSecondFormat() else TimeUtils.getHourMinFormat()
|
||||
}
|
||||
@SuppressLint("SetTextI18n")
|
||||
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
|
||||
when (holder) {
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone.unmanned
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.eagle.core.function.call.och.CallerOchCustomViewManager
|
||||
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.Logger
|
||||
import com.zhjt.mogo_core_function_devatools.status.StatusManager
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.SpeedStatus
|
||||
import com.zhjt.mogo_core_function_devatools.status.entity.Status
|
||||
import kotlinx.android.synthetic.main.view_bone_top_status.view.speed_custom
|
||||
import kotlinx.android.synthetic.main.view_bone_top_status.view.startAutoPilotContainer
|
||||
|
||||
//无人化司机端速度状态展示
|
||||
class UnmannedBoneStatusLayout @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), StatusManager.IStatusListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "UnmannedRightBottomStatusLayout"
|
||||
}
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_unmanned_bone_status, this, true)
|
||||
addStartAutoPilotView()
|
||||
}
|
||||
|
||||
private fun addStartAutoPilotView() {
|
||||
if (context == null) {
|
||||
CallerLogger.e(TAG, "addStartAutoPilotView context==null")
|
||||
return
|
||||
}
|
||||
kotlin.runCatching {
|
||||
startAutoPilotContainer?.also { container ->
|
||||
container.removeAllViews()
|
||||
val view = CallerOchCustomViewManager.getStartAutopilotView(context)
|
||||
Logger.d(TAG, "$view ${Thread.currentThread().name}")
|
||||
view?.also {
|
||||
container.addView(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
StatusManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
StatusManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
override fun onStatusChanged(changed: List<Status>, all: List<Status>) {
|
||||
changed.find { it is SpeedStatus }?.also {
|
||||
val speed = it as SpeedStatus
|
||||
speed_custom?.updateSpeed(speed.speed)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,442 @@
|
||||
package com.mogo.eagle.core.function.hmi.bone.unmanned
|
||||
|
||||
import android.animation.ObjectAnimator
|
||||
import android.animation.ValueAnimator
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.animation.LinearInterpolator
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.mogo.commons.voice.AIAssist
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo
|
||||
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
|
||||
import com.mogo.eagle.core.data.msgbox.MsgBoxType
|
||||
import com.mogo.eagle.core.data.msgbox.V2XMsg
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoReceiveReceivedAckListener
|
||||
import com.mogo.eagle.core.function.api.devatools.IPowerOffListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListenerManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
|
||||
import com.mogo.eagle.core.function.call.devatools.CallerPowerOffManager
|
||||
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager.saveMsgBox
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.ui.utils.HmiActionLog.Companion.hmiAction
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_HMI
|
||||
import com.mogo.eagle.core.utilcode.util.ParseVersionUtils
|
||||
import com.mogo.eagle.core.utilcode.util.StringUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo.adas.common.MessageType
|
||||
import com.zhjt.mogo.adas.data.AdasConstants
|
||||
import com.zhjt.mogo.adas.data.bean.ReceivedAck
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.tvCheckShutDown
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.tvCountDown
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.tvCountDownUnit
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.viewCheckShutDown
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.viewProgress
|
||||
import kotlinx.android.synthetic.main.unmanned_view_tool_stop_service.view.viewProgressBackground
|
||||
|
||||
|
||||
/**
|
||||
* 一件停服
|
||||
*/
|
||||
class UnmannedToolStopServiceView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener,
|
||||
IPowerOffListener, IMoGoReceiveReceivedAckListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "UnmannedToolStopServiceView"
|
||||
}
|
||||
|
||||
//重启系统对话框
|
||||
private var connectStatus: Boolean = false //与工控机的连接状态
|
||||
private var isExecutingPowerOff: Boolean = false //是否正在下发一键停服命令
|
||||
private var isPowerOffCountDown: Boolean = false //一键停服是否处于1分钟倒计时
|
||||
private var powerOffMsgId: Long = -1 //一键停服命令下发Id
|
||||
private var progressAnimator: ObjectAnimator? = null //一键停服命令倒计时
|
||||
|
||||
/**
|
||||
* 停止域控服务状态
|
||||
* 0:准备停服 1:停服命令下发中 2:停服命令下发成功 3:停服命令下发失败
|
||||
* 4:停服命令下发超时 5:停服中 6:停服成功 7:停服成功不可点击
|
||||
*/
|
||||
private var powerOffStatus: Int = 0
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.unmanned_view_tool_stop_service, this, true)
|
||||
initView()
|
||||
}
|
||||
|
||||
private fun initView() {
|
||||
//一键停服
|
||||
viewCheckShutDown.setOnClickListener {
|
||||
powerOff()
|
||||
}
|
||||
tvCheckShutDown.setOnClickListener {
|
||||
powerOff()
|
||||
}
|
||||
CallerDevaToolsManager.getPowerOffStatus()?.let {
|
||||
powerOffStatus = it
|
||||
}
|
||||
when (powerOffStatus) {
|
||||
//准备停服
|
||||
0 -> {
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service
|
||||
)
|
||||
)
|
||||
viewCheckShutDown.isClickable = true
|
||||
}
|
||||
//停服命令下发中
|
||||
1 -> {
|
||||
isExecutingPowerOff = true
|
||||
}
|
||||
//停服命令下发成功
|
||||
2 -> {
|
||||
viewProgressBackground.visibility = View.VISIBLE
|
||||
viewProgress.visibility = View.VISIBLE
|
||||
tvCountDown.visibility = View.VISIBLE
|
||||
tvCountDownUnit.visibility = View.VISIBLE
|
||||
//开始旋转动画
|
||||
if (progressAnimator == null) {
|
||||
progressAnimator = ObjectAnimator.ofFloat(viewProgress, "rotation", 0f, 360f)
|
||||
}
|
||||
progressAnimator?.interpolator = LinearInterpolator()
|
||||
progressAnimator?.repeatCount = ValueAnimator.INFINITE //无限循环
|
||||
progressAnimator?.duration = 10000 //设置持续时间
|
||||
progressAnimator?.startDelay = 0
|
||||
progressAnimator?.start()
|
||||
//一键停服倒计时中
|
||||
isPowerOffCountDown = true
|
||||
}
|
||||
//停服命令下发失败
|
||||
3 -> {
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_fail
|
||||
)
|
||||
)
|
||||
}
|
||||
//停服命令下发超时
|
||||
4 -> {
|
||||
//将图标改为失败
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_fail
|
||||
)
|
||||
)
|
||||
}
|
||||
//停服中
|
||||
5 -> {
|
||||
isPowerOffCountDown = true
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_background
|
||||
)
|
||||
)
|
||||
viewProgressBackground.visibility = View.VISIBLE
|
||||
viewProgress.visibility = View.VISIBLE
|
||||
tvCountDown.visibility = View.VISIBLE
|
||||
tvCountDownUnit.visibility = View.VISIBLE
|
||||
//开始旋转动画
|
||||
if (progressAnimator == null) {
|
||||
progressAnimator = ObjectAnimator.ofFloat(viewProgress, "rotation", 0f, 360f)
|
||||
}
|
||||
progressAnimator?.interpolator = LinearInterpolator()
|
||||
progressAnimator?.repeatCount = ValueAnimator.INFINITE //无限循环
|
||||
progressAnimator?.duration = 10000 //设置持续时间
|
||||
progressAnimator?.startDelay = 0
|
||||
progressAnimator?.start()
|
||||
}
|
||||
//停服成功
|
||||
6 -> {
|
||||
//停止一键停服进度属性动画
|
||||
progressAnimator?.cancel()
|
||||
//隐藏一键停服进度视图
|
||||
viewProgressBackground.visibility = View.GONE
|
||||
viewProgress.visibility = View.GONE
|
||||
tvCountDown.visibility = View.GONE
|
||||
tvCountDownUnit.visibility = View.GONE
|
||||
//一键停服命令倒计时结束,变为成功状态,并且发送1s倒计时
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_success
|
||||
)
|
||||
)
|
||||
isPowerOffCountDown = false
|
||||
}
|
||||
//停服成功不可点击
|
||||
7 -> {
|
||||
//将倒计时内容隐藏
|
||||
viewProgressBackground.visibility = View.GONE
|
||||
viewProgress.visibility = View.GONE
|
||||
tvCountDown.visibility = View.GONE
|
||||
tvCountDownUnit.visibility = View.GONE
|
||||
//停服成功,将按钮置为不可点击状态
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_complete
|
||||
)
|
||||
)
|
||||
viewCheckShutDown.isClickable = false
|
||||
isPowerOffCountDown = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键停服
|
||||
*/
|
||||
private fun powerOff() {
|
||||
if (!connectStatus) {
|
||||
// ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_not_sent_shutdown_ipc)
|
||||
return
|
||||
}
|
||||
if (AppConfigInfo.dockerVersion.isEmpty()) {
|
||||
// ToastUtils.showShort("尚未连接工控机,无法下发一键停服命令")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_not_sent_shutdown_ipc)
|
||||
return
|
||||
}
|
||||
if (ParseVersionUtils.parseVersion(true, AppConfigInfo.dockerVersion) < 40100) {
|
||||
// ToastUtils.showShort("此域控版本不支持一键停服功能,最低支持版本为4.1.0")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_ipc_version_nonsupport_shutdown_ipc)
|
||||
return
|
||||
}
|
||||
if (CallerAutoPilotStatusListenerManager.getState() == 2) {
|
||||
//当前处于自动驾驶状态,不可进行重启,Toast提示
|
||||
// ToastUtils.showShort("请先退出自动驾驶状态")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_please_exit_autopilot_state)
|
||||
return
|
||||
}
|
||||
if (isExecutingPowerOff) {
|
||||
//一键停服命令下发执行中
|
||||
// ToastUtils.showShort("一键停服命令下发中,请勿重复点击")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_sending_shutdown_ipc)
|
||||
return
|
||||
}
|
||||
if (isPowerOffCountDown) {
|
||||
//系统停服中
|
||||
// ToastUtils.showShort("系统停服中,请勿重复点击")
|
||||
ToastUtils.showShort(R.string.module_mogo_core_function_hmi_shutdowning_ipc)
|
||||
return
|
||||
}
|
||||
//将是否正在下发一键停服命令标签改为true
|
||||
isExecutingPowerOff = true
|
||||
CallerDevaToolsManager.setPowerOffStatus(1)
|
||||
hmiAction("$M_HMI$TAG", mapOf("powerOff" to true))
|
||||
//系统命令请求 关机
|
||||
powerOffMsgId = CallerAutoPilotControlManager.sendIpcPowerOff()
|
||||
hmiAction("$M_HMI$TAG", mapOf("powerOffID" to powerOffMsgId))
|
||||
//开始执行10秒等待倒计时
|
||||
CallerDevaToolsManager.startCommandWaitCountDown()
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
CallerPowerOffManager.addListener(TAG, this)
|
||||
CallerReceiveReceivedAckListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerAutoPilotStatusListenerManager.removeListener(TAG)
|
||||
CallerPowerOffManager.removeListener(TAG)
|
||||
CallerReceiveReceivedAckListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(
|
||||
status: AdasConstants.IpcConnectionStatus,
|
||||
reason: String?
|
||||
) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
ThreadUtils.runOnUiThread {
|
||||
setViewStatus(status == AdasConstants.IpcConnectionStatus.CONNECTED)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setViewStatus(connectInfo: Boolean) {
|
||||
connectStatus = connectInfo
|
||||
//下发一键停服命令后又和域控重新连接
|
||||
if ((powerOffStatus == 6 || powerOffStatus == 7) && connectStatus) {
|
||||
CallerDevaToolsManager.setPowerOffStatus(0)
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service
|
||||
)
|
||||
)
|
||||
viewCheckShutDown.isClickable = true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键停服调用SSM停服命令超时
|
||||
*/
|
||||
override fun commandTimeout() {
|
||||
//停止命令超时倒计时
|
||||
CallerDevaToolsManager.stopCommandWaitCountDown()
|
||||
/**
|
||||
* 如果点击一键停服按钮10秒后,是否正在执行命令的标签仍为true,代表域控未返回执行结果
|
||||
* 此时应该将按钮状态短暂置为失败,之后再置为常态,并将此标签置为false
|
||||
*/
|
||||
if (isExecutingPowerOff) {
|
||||
//更改标签状态
|
||||
isExecutingPowerOff = false
|
||||
CallerDevaToolsManager.setPowerOffStatus(4)
|
||||
//将图标改为失败
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_fail
|
||||
)
|
||||
)
|
||||
//执行1秒倒计时命令
|
||||
CallerDevaToolsManager.statusChangeCountDown(false)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键停服车辆下电等待倒计时
|
||||
*/
|
||||
override fun powerDownTick(second: Int) {
|
||||
tvCountDown.text = second.toString()
|
||||
CallerDevaToolsManager.setPowerOffStatus(5)
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键停服车辆下电等待倒计时结束
|
||||
*/
|
||||
override fun powerDownFinish() {
|
||||
CallerDevaToolsManager.setPowerOffStatus(6)
|
||||
//停止一键停服进度属性动画
|
||||
progressAnimator?.cancel()
|
||||
//隐藏一键停服进度视图
|
||||
viewProgressBackground.visibility = View.GONE
|
||||
viewProgress.visibility = View.GONE
|
||||
tvCountDown.visibility = View.GONE
|
||||
tvCountDownUnit.visibility = View.GONE
|
||||
//一键停服命令倒计时结束,变为成功状态,并且发送1s倒计时
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_success
|
||||
)
|
||||
)
|
||||
isPowerOffCountDown = false
|
||||
//执行1秒倒计时命令
|
||||
CallerDevaToolsManager.statusChangeCountDown(true)
|
||||
}
|
||||
|
||||
/**
|
||||
* 一键停服状态按钮变更通知
|
||||
*/
|
||||
override fun statusChange(isSuccess: Boolean) {
|
||||
CallerDevaToolsManager.stopStatusCountDown()
|
||||
if (isSuccess) {
|
||||
//将倒计时内容隐藏
|
||||
viewProgressBackground.visibility = View.GONE
|
||||
viewProgress.visibility = View.GONE
|
||||
tvCountDown.visibility = View.GONE
|
||||
tvCountDownUnit.visibility = View.GONE
|
||||
//停服成功,将按钮置为不可点击状态
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_complete
|
||||
)
|
||||
)
|
||||
viewCheckShutDown.isClickable = false
|
||||
CallerDevaToolsManager.setPowerOffStatus(7)
|
||||
} else {
|
||||
//停服命令下发失败,将按钮置为常态,可点击
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service
|
||||
)
|
||||
)
|
||||
viewCheckShutDown.isClickable = true
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 命令下发回执
|
||||
*/
|
||||
override fun onReceiveReceivedAck(receivedAck: ReceivedAck) {
|
||||
ThreadUtils.runOnUiThread {
|
||||
if (receivedAck.messageType == MessageType.TYPE_SEND_SYSTEM_CMD_REQ && receivedAck.msgId == powerOffMsgId) {
|
||||
isExecutingPowerOff = false
|
||||
//停止命令超时倒计时
|
||||
CallerDevaToolsManager.stopCommandWaitCountDown()
|
||||
if (receivedAck.status == ReceivedAck.Status.NORMAL) {
|
||||
//一键停服命令回执成功,则正常进入停服阶段中,1分钟倒计时,并且TTS和消息盒子提示
|
||||
CallerDevaToolsManager.setPowerOffStatus(2)
|
||||
// AIAssist.getInstance(context).speakTTSVoice("请等待1分钟再执行车辆下电")
|
||||
AIAssist.getInstance(context).speakTTSVoice(StringUtils.getString(R.string.module_core_one_minute_later_power_off))
|
||||
saveMsgBox(
|
||||
MsgBoxBean(
|
||||
MsgBoxType.V2X, V2XMsg(
|
||||
EventTypeEnumNew.TYPE_POWER_OFF_TIP.poiType,
|
||||
EventTypeEnumNew.TYPE_POWER_OFF_TIP.content,
|
||||
EventTypeEnumNew.TYPE_POWER_OFF_TIP.tts
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_background
|
||||
)
|
||||
)
|
||||
viewProgressBackground.visibility = View.VISIBLE
|
||||
viewProgress.visibility = View.VISIBLE
|
||||
tvCountDown.visibility = View.VISIBLE
|
||||
tvCountDownUnit.visibility = View.VISIBLE
|
||||
//开始旋转动画
|
||||
if (progressAnimator == null) {
|
||||
progressAnimator =
|
||||
ObjectAnimator.ofFloat(viewProgress, "rotation", 0f, 360f)
|
||||
}
|
||||
progressAnimator?.interpolator = LinearInterpolator()
|
||||
progressAnimator?.repeatCount = ValueAnimator.INFINITE //无限循环
|
||||
progressAnimator?.duration = 2500 //设置持续时间
|
||||
progressAnimator?.startDelay = 0
|
||||
progressAnimator?.start()
|
||||
//开始60S倒计时
|
||||
CallerDevaToolsManager.startPowerDownCountDown()
|
||||
//一键停服倒计时中
|
||||
isPowerOffCountDown = true
|
||||
} else {
|
||||
//一键停服命令回执失败,则走失败流程
|
||||
CallerDevaToolsManager.setPowerOffStatus(3)
|
||||
viewCheckShutDown.setImageDrawable(
|
||||
ContextCompat.getDrawable(
|
||||
context,
|
||||
R.drawable.icon_toolkit_item_stop_service_fail
|
||||
)
|
||||
)
|
||||
//执行1秒倒计时命令
|
||||
CallerDevaToolsManager.statusChangeCountDown(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -97,6 +97,7 @@ import com.mogo.eagle.core.function.call.map.CallerVisualAngleManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuApiManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuConnectListenerManager
|
||||
import com.mogo.eagle.core.function.call.obu.CallerObuInfoListenerManager
|
||||
import com.mogo.eagle.core.function.call.och.CallerOchBizFunctionCall4EagleManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMapShowNameManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager
|
||||
import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager
|
||||
@@ -110,6 +111,7 @@ import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner
|
||||
import com.mogo.eagle.core.utilcode.kotlin.onClick
|
||||
import com.mogo.eagle.core.utilcode.kotlin.scope
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.CockpitType
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
@@ -262,6 +264,7 @@ import kotlinx.android.synthetic.main.view_debug_setting.view.tbIsStrictMode
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLanguage
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogCatch
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLogcatCenter
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbLoginLogout
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbNetLog
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbObuController
|
||||
import kotlinx.android.synthetic.main.view_debug_setting.view.tbObuLog
|
||||
@@ -882,6 +885,22 @@ internal class DebugSettingView @JvmOverloads constructor(
|
||||
|
||||
else -> {}
|
||||
}
|
||||
|
||||
if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) {
|
||||
tbLoginLogout.visibility = if (CallerOchBizFunctionCall4EagleManager.isLogin()) View.VISIBLE else View.GONE
|
||||
} else {
|
||||
tbLoginLogout.visibility = View.GONE
|
||||
}
|
||||
|
||||
//退出登录
|
||||
tbLoginLogout.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (CallerOchBizFunctionCall4EagleManager.isLogin()) {
|
||||
CallerOchBizFunctionCall4EagleManager.logout()
|
||||
} else {
|
||||
ToastUtils.showShort("无法退出,状态获取错误")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 语言
|
||||
*/
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ObjectAnimator
|
||||
import android.app.Activity
|
||||
import android.graphics.PixelFormat
|
||||
import android.util.DisplayMetrics
|
||||
@@ -7,15 +10,21 @@ import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.view.animation.DecelerateInterpolator
|
||||
import android.view.animation.LinearInterpolator
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.commons.AbsMogoApplication
|
||||
import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.CockpitType
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.eagle.core.widget.media.video.SkinSimpleVideoPlayer
|
||||
import com.mogo.skin.utils.SkinResources
|
||||
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
|
||||
import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack
|
||||
import com.zhjt.mogo_core_function_devatools.coldstart.ColdStartConfig
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
/**
|
||||
* 打开app后首次与域控链接或与域控断连1min后,需要回到界面并呈现一遍流程
|
||||
@@ -30,6 +39,9 @@ class ColdStartAgainWindow constructor(activity: Activity){
|
||||
private lateinit var clColdStartAgain: ConstraintLayout
|
||||
private lateinit var svpColdStart: SkinSimpleVideoPlayer
|
||||
private lateinit var coldStart: ColdStartView
|
||||
private lateinit var cl_welcome_info: View
|
||||
private var showLoginInfoAnimator11: ObjectAnimator? = null
|
||||
private var showLoginInfoAnimator22: ObjectAnimator? = null
|
||||
|
||||
private val gsyVideoOptionBuilder = GSYVideoOptionBuilder()
|
||||
|
||||
@@ -42,6 +54,7 @@ class ColdStartAgainWindow constructor(activity: Activity){
|
||||
clColdStartAgain = mFloatLayout.findViewById(R.id.cl_cold_start_again)
|
||||
svpColdStart = mFloatLayout.findViewById(R.id.svp_cold_start)
|
||||
coldStart = mFloatLayout.findViewById(R.id.view_cold_start_again)
|
||||
cl_welcome_info = mFloatLayout.findViewById(R.id.cl_welcome_info)
|
||||
|
||||
val videoUrl:String = if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
svpColdStart.setBackgroundResource(R.drawable.biz_login_bg_taxi_start)
|
||||
@@ -67,6 +80,46 @@ class ColdStartAgainWindow constructor(activity: Activity){
|
||||
.setPlayTag("TaxiPassengerArrivedView")
|
||||
.build(svpColdStart)
|
||||
|
||||
if (AppIdentityModeUtils.getCockpitType() == CockpitType.UNMANNED) {
|
||||
if (showLoginInfoAnimator11 == null) {
|
||||
showLoginInfoAnimator11 = ObjectAnimator.ofFloat(cl_welcome_info, "alpha", 0f, 1f)
|
||||
showLoginInfoAnimator11?.interpolator = LinearInterpolator()
|
||||
}
|
||||
if (showLoginInfoAnimator22 == null) {
|
||||
val dp2px = AutoSizeUtils.dp2px(AbsMogoApplication.getApp(), -50f)
|
||||
showLoginInfoAnimator22 = ObjectAnimator.ofFloat(cl_welcome_info, "translationY", 0f, dp2px.toFloat())
|
||||
showLoginInfoAnimator22?.interpolator = DecelerateInterpolator()
|
||||
}
|
||||
UiThreadHandler.postDelayed({
|
||||
cl_welcome_info.let {
|
||||
val animatorSet = AnimatorSet()
|
||||
animatorSet.playTogether(showLoginInfoAnimator11, showLoginInfoAnimator22)
|
||||
animatorSet.duration = 500
|
||||
animatorSet.addListener(object : Animator.AnimatorListener {
|
||||
override fun onAnimationStart(animation: Animator) {
|
||||
cl_welcome_info.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
override fun onAnimationRepeat(animation: Animator) {
|
||||
|
||||
}
|
||||
|
||||
})
|
||||
animatorSet.start()
|
||||
}
|
||||
}, 1_000, UiThreadHandler.MODE.QUEUE)
|
||||
} else {
|
||||
cl_welcome_info.visibility = View.GONE
|
||||
}
|
||||
|
||||
svpColdStart.setVideoAllCallBack(object : GSYSampleCallBack() {
|
||||
override fun onAutoComplete(url: String?, vararg objects: Any?) {
|
||||
if (AppIdentityModeUtils.isT1T2(FunctionBuildConfig.appIdentityMode)) {
|
||||
|
||||
@@ -14,6 +14,9 @@ import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import kotlinx.android.synthetic.main.view_status_bar_unmanned.view.viewTextClock
|
||||
|
||||
/**
|
||||
* 无人化状司机屏态栏
|
||||
*/
|
||||
class StatusBarUnmannedView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
@@ -26,7 +29,7 @@ class StatusBarUnmannedView @JvmOverloads constructor(
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_status_bar_unmanned, this, true)
|
||||
background = ColorDrawable(Color.parseColor("#A6000000")) // 黑色的65%
|
||||
background = ColorDrawable(Color.parseColor("#00222222"))
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 202 KiB |
@@ -0,0 +1,85 @@
|
||||
<?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:id="@+id/clCheckSystem"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/viewCheckShutDown"
|
||||
android:layout_width="@dimen/dp_100"
|
||||
android:layout_height="@dimen/dp_100"
|
||||
android:contentDescription="@string/check_system_shut_down"
|
||||
android:scaleType="fitXY"
|
||||
android:src="@drawable/icon_toolkit_item_stop_service"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@drawable/icon_toolkit_item_stop_service_background" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/viewProgressBackground"
|
||||
android:layout_width="@dimen/dp_53"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginLeft="@dimen/dp_27"
|
||||
android:layout_marginTop="@dimen/dp_19"
|
||||
android:src="@drawable/icon_toolkit_item_stop_service_process_background"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="@id/viewCheckShutDown"
|
||||
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/viewProgress"
|
||||
android:layout_width="@dimen/dp_53"
|
||||
android:layout_height="@dimen/dp_53"
|
||||
android:layout_marginLeft="@dimen/dp_27"
|
||||
android:layout_marginTop="@dimen/dp_19"
|
||||
android:src="@drawable/icon_toolkit_item_stop_service_process"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintLeft_toLeftOf="@id/viewCheckShutDown"
|
||||
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCountDown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="@dimen/sp_18"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/viewProgress"
|
||||
app:layout_constraintEnd_toEndOf="@id/viewProgress"
|
||||
app:layout_constraintStart_toStartOf="@id/viewProgress"
|
||||
app:layout_constraintTop_toTopOf="@id/viewProgress"
|
||||
tools:text="20"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCountDownUnit"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="s"
|
||||
android:textColor="#B2FFFFFF"
|
||||
android:textSize="@dimen/sp_13"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toBottomOf="@id/tvCountDown"
|
||||
app:layout_constraintStart_toEndOf="@id/tvCountDown"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvCheckShutDown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_10"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:text="@string/check_system_shut_down"
|
||||
android:textColor="@color/color_FFFFFF"
|
||||
android:textSize="@dimen/sp_40"
|
||||
app:layout_constraintBottom_toBottomOf="@id/viewCheckShutDown"
|
||||
app:layout_constraintStart_toEndOf="@id/viewCheckShutDown"
|
||||
app:layout_constraintTop_toTopOf="@id/viewCheckShutDown" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -233,6 +233,18 @@
|
||||
android:layout_height="1dp"
|
||||
android:background="#F0F0F0" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbLoginLogout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/dp_10"
|
||||
android:background="@drawable/radio_button_normal_background_right"
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textColor="#000"
|
||||
android:textOff="退出"
|
||||
android:textOn="退出"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/tbLanguage"
|
||||
android:layout_width="match_parent"
|
||||
@@ -243,7 +255,8 @@
|
||||
android:padding="@dimen/dp_20"
|
||||
android:textOff="语言"
|
||||
android:textOn="语言"
|
||||
android:textSize="@dimen/dp_24" />
|
||||
android:textSize="@dimen/dp_24"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/layoutLanguage"
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/dp_status_bar_height"
|
||||
tools:background="#A6000000"
|
||||
android:layout_height="84dp"
|
||||
tools:background="#222222"
|
||||
tools:parentTag="android.widget.FrameLayout">
|
||||
|
||||
<LinearLayout
|
||||
@@ -14,12 +14,13 @@
|
||||
|
||||
<TextClock
|
||||
android:id="@+id/viewTextClock"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="190dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="@dimen/dp_61"
|
||||
android:layout_marginStart="@dimen/dp_40"
|
||||
android:format12Hour="HH:mm:ss"
|
||||
android:format24Hour="HH:mm:ss"
|
||||
android:gravity="center_horizontal|start"
|
||||
android:textColor="#ffffff"
|
||||
android:textSize="@dimen/dp_45"
|
||||
android:textStyle="bold" />
|
||||
@@ -29,7 +30,8 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginStart="@dimen/dp_30" />
|
||||
android:layout_marginStart="@dimen/dp_20"
|
||||
app:wifi_show_title="true" />
|
||||
|
||||
<Space
|
||||
android:layout_width="0dip"
|
||||
@@ -37,18 +39,11 @@
|
||||
android:layout_weight="1" />
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/viewStatusBarRight"
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.BatteryGroupView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="@dimen/dp_40"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.BatteryGroupView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginEnd="@dimen/dp_40" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?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_359"
|
||||
android:background="@drawable/unmanned_bone_status_bg">
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.bone.status.speed.SpeedView
|
||||
android:id="@+id/speed_custom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_79"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/startAutoPilotContainer"
|
||||
android:layout_width="@dimen/dp_282"
|
||||
android:layout_height="@dimen/dp_282"
|
||||
android:layout_marginTop="@dimen/dp_18_5"
|
||||
android:layout_marginRight="@dimen/dp_43"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -14,6 +14,31 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/cl_welcome_info"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/dp_166"
|
||||
android:layout_marginTop="@dimen/dp_700"
|
||||
android:orientation="vertical"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<TextView
|
||||
android:layout_width="@dimen/dp_444"
|
||||
android:layout_height="@dimen/dp_98"
|
||||
android:text="@string/login_welcome_on"
|
||||
android:textColor="#FF394047"
|
||||
android:textSize="@dimen/sp_70" />
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_10"
|
||||
android:src="@drawable/biz_login_robobus" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.ColdStartView
|
||||
android:id="@+id/view_cold_start_again"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -302,5 +302,5 @@
|
||||
<string name="date_cannot_copy">Selected Date Unavailable</string>
|
||||
|
||||
<string name="common_traffic_light_status">Traffic Light Background</string>
|
||||
|
||||
<string name="login_welcome_on">Welcome on</string>
|
||||
</resources>
|
||||
|
||||
@@ -303,5 +303,5 @@
|
||||
<string name="date_cannot_copy">所选日期无法拷贝</string>
|
||||
|
||||
<string name="common_traffic_light_status">红绿灯灯态背景</string>
|
||||
|
||||
<string name="login_welcome_on">欢迎乘坐</string>
|
||||
</resources>
|
||||
|
||||
@@ -10,5 +10,8 @@ interface IOchBizFunctionCall4Eagle {
|
||||
* 退出登录
|
||||
*/
|
||||
fun logout()
|
||||
|
||||
fun isLogin(): Boolean
|
||||
|
||||
fun setVideoView(target: View?)
|
||||
}
|
||||
@@ -26,6 +26,10 @@ object CallerOchBizFunctionCall4EagleManager : IOchBizFunctionCall4Eagle {
|
||||
ochBizFunctionCall4EagleInstance?.logout()
|
||||
}
|
||||
|
||||
override fun isLogin(): Boolean {
|
||||
return ochBizFunctionCall4EagleInstance?.isLogin() == true
|
||||
}
|
||||
|
||||
override fun setVideoView(target: View?) {
|
||||
ochBizFunctionCall4EagleInstance?.setVideoView(target)
|
||||
}
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
<string name="module_och_long_link_error">Long-connection error, please enable permissions or check network</string>
|
||||
<string name="module_och_location_service_error">Location service error</string>
|
||||
<string name="module_och_network_service_error">Network error</string>
|
||||
<string name="module_och_please_open_permission">%s please enable permissions or check network</string>
|
||||
<string name="module_och_please_open_permission">, Enable relevant permission, check system location service or network connection.</string>
|
||||
<string name="module_och_please_wait_wake_up">Please wait to wake up</string>
|
||||
<string name="module_och_network_error_retry">Network error, please retry</string>
|
||||
<string name="module_och_open_location_permission_retry">Enable in-vehicle location and retry</string>
|
||||
|
||||
@@ -259,7 +259,7 @@
|
||||
<string name="module_och_long_link_error">长链接异常,请开启相应权限或者查看网络</string>
|
||||
<string name="module_och_location_service_error">定位服务异常 </string>
|
||||
<string name="module_och_network_service_error"> 网络异常 </string>
|
||||
<string name="module_och_please_open_permission">%s请开启相应权限或者查看网络</string>
|
||||
<string name="module_och_please_open_permission">,请开启相应权限或检查系统定位服务是否开启或者查看网络</string>
|
||||
<string name="module_och_please_wait_wake_up">请稍后唤醒</string>
|
||||
<string name="module_och_network_error_retry">网络异常,请重试</string>
|
||||
<string name="module_och_open_location_permission_retry">请开启车机定位后重试</string>
|
||||
|
||||
Reference in New Issue
Block a user