Merge remote-tracking branch 'origin/dev_robotaxi-d_230809_6.0.0' into dev_robotaxi-d_230809_6.0.0
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.1 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB |
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" tools:ignore="MissingDefaultResource">
|
||||
<item android:drawable="@drawable/iv_roma_bus_passenger_press_bg" android:state_focused="true" android:state_pressed="true" />
|
||||
<item android:drawable="@drawable/iv_roma_bus_passenger_press_bg" android:state_focused="false" android:state_pressed="true" />
|
||||
<item android:drawable="@drawable/iv_roma_bus_passenger_press_bg" android:state_selected="true" />
|
||||
<item android:drawable="@drawable/iv_roma_bus_passenger_press_bg" android:state_focused="true" />
|
||||
<item android:drawable="@drawable/iv_roma_bus_passenger_bg" />
|
||||
<item android:drawable="@drawable/bus_p_roma_checked" android:state_focused="true" android:state_pressed="true" />
|
||||
<item android:drawable="@drawable/bus_p_roma_checked" android:state_focused="false" android:state_pressed="true" />
|
||||
<item android:drawable="@drawable/bus_p_roma_checked" android:state_selected="true" />
|
||||
<item android:drawable="@drawable/bus_p_roma_checked" android:state_focused="true" />
|
||||
<item android:drawable="@drawable/bus_p_roma_normal" />
|
||||
</selector>
|
||||
@@ -36,16 +36,17 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@+id/video_switch_iv"
|
||||
app:roma_close="@drawable/roma_bus_p_bg_selector"
|
||||
app:roma_open="@drawable/iv_roma_bus_passenger_press_bg" />
|
||||
app:roma_open="@drawable/bus_p_roma_checked" />
|
||||
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView-->
|
||||
<!-- android:layout_width="@dimen/dp_334"-->
|
||||
<!-- android:layout_height="@dimen/dp_120"-->
|
||||
<!-- android:layout_marginLeft="@dimen/dp_50"-->
|
||||
<!-- android:layout_marginBottom="@dimen/dp_20"-->
|
||||
<!-- app:layout_constraintBottom_toBottomOf="parent"-->
|
||||
<!-- app:layout_constraintLeft_toRightOf="@+id/romaPView"-->
|
||||
<!-- app:roma_change_dis_color="true" />-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView
|
||||
android:layout_width="@dimen/dp_334"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
android:layout_marginLeft="@dimen/dp_50"
|
||||
android:layout_marginBottom="@dimen/dp_20"
|
||||
app:roma_distance_bg="@drawable/roma_distance_bg"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toRightOf="@+id/romaPView"
|
||||
app:roma_change_dis_color="true" />
|
||||
|
||||
<!--pnc行为决策-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.vehicle.PncActionsView
|
||||
|
||||
@@ -81,14 +81,15 @@
|
||||
app:roma_close="@drawable/roma_taxi_p_bg_selector"
|
||||
app:roma_open="@drawable/taxi_p_roma_checked" />
|
||||
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView-->
|
||||
<!-- android:layout_width="@dimen/dp_334"-->
|
||||
<!-- android:layout_height="@dimen/dp_120"-->
|
||||
<!-- android:layout_marginLeft="@dimen/dp_50"-->
|
||||
<!-- android:layout_marginTop="100dp"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- app:layout_constraintLeft_toRightOf="@+id/romaPView"-->
|
||||
<!-- app:roma_change_dis_color="true"/>-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView
|
||||
android:layout_width="@dimen/dp_334"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
android:layout_marginStart="@dimen/dp_50"
|
||||
android:layout_marginTop="100dp"
|
||||
app:roma_distance_bg="@drawable/roma_distance_bg"
|
||||
app:layout_constraintLeft_toRightOf="@+id/romaPView"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:roma_change_dis_color="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rv_location_center"
|
||||
|
||||
@@ -422,7 +422,7 @@ object TaxiTaskModel {
|
||||
startFailedCode: String,
|
||||
startFailedMessage: String
|
||||
) {
|
||||
DebugView.printInfoMsg("[启自驾回调] 执行失败,code=$startFailedCode, msg=$startFailedMessage")
|
||||
DebugView.printInfoMsg("[启自驾] 执行失败,code=$startFailedCode, msg=$startFailedMessage")
|
||||
TaxiAnalyticsManager.getInstance()
|
||||
.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage)
|
||||
if (mADASStatusCallback != null && !FunctionBuildConfig.isDemoMode) {
|
||||
@@ -568,8 +568,10 @@ object TaxiTaskModel {
|
||||
* @siteId : 站点id
|
||||
* @isArriveAtEndSite: true 终点, false 起点
|
||||
*/
|
||||
fun submitArriveSite(siteId: Long, isArriveAtEndSite: Boolean,
|
||||
isArrivedNearestStation : Boolean = false) {
|
||||
fun submitArriveSite(
|
||||
siteId: Long, isArriveAtEndSite: Boolean,
|
||||
isArrivedNearestStation: Boolean = false
|
||||
) {
|
||||
DebugView.printInfoMsg("[上报ArriveSite] siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite")
|
||||
i(TAG, message = "submitArriveSite: siteId=$siteId isArriveAtEndSite=$isArriveAtEndSite")
|
||||
TaxiTaskWithOrderServiceManager.arriveSite(
|
||||
@@ -581,7 +583,7 @@ object TaxiTaskModel {
|
||||
DebugView.printInfoMsg("[上报ArriveSite] success siteId=$siteId, isArriveAtEndSite=$isArriveAtEndSite")
|
||||
d(TAG, "submitArriveSite-onSuccess data=" + GsonUtil.jsonFromObject(data))
|
||||
mDriveToNearestStationTask = null
|
||||
if (isArrivedNearestStation){// 播报提醒
|
||||
if (isArrivedNearestStation) {// 播报提醒
|
||||
VoiceNotice.showNotice("已到达出车点")
|
||||
}
|
||||
|
||||
@@ -594,10 +596,12 @@ object TaxiTaskModel {
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
if (!NetworkUtils.isConnected(mContext)){ // 网络异常,接口重试
|
||||
if (!NetworkUtils.isConnected(mContext)) { // 网络异常,接口重试
|
||||
ToastUtils.showShort("网络出现异常,请稍后重试")
|
||||
}else{
|
||||
DebugView.printErrorMsg("[上报ArriveSite] 网络出现异常,请稍后重试")
|
||||
} else {
|
||||
ToastUtils.showShort("到站接口请求出现异常,请稍后重试")
|
||||
DebugView.printErrorMsg("[上报ArriveSite] 到站接口请求出现异常,请稍后重试")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -881,30 +885,32 @@ object TaxiTaskModel {
|
||||
}
|
||||
|
||||
fun startTask(lineId: Long) {
|
||||
DebugView.printInfoMsg("[开始任务] 准备发送请求")
|
||||
DebugView.printInfoMsg("[开始任务] 准备发送请求,lindId=$lineId")
|
||||
TaxiTaskWithOrderServiceManager.startTask(
|
||||
mContext,
|
||||
lineId,
|
||||
object : OchCommonServiceCallback<BaseData> {
|
||||
override fun onSuccess(data: BaseData?) {
|
||||
DebugView.printInfoMsg("[开始任务] 请求success")
|
||||
DebugView.printInfoMsg("[开始任务] 请求success,lindId=$lineId")
|
||||
startAutoPilot() //自驾开启
|
||||
d(TAG, "startTask onSuccess: data=${GsonUtil.jsonFromObject(data)}")
|
||||
}
|
||||
|
||||
override fun onError() {
|
||||
super.onError()
|
||||
if (!NetworkUtils.isConnected(mContext)){ // 网络异常,接口重试
|
||||
if (!NetworkUtils.isConnected(mContext)) { // 网络异常,接口重试
|
||||
ToastUtils.showShort("网络出现异常,请稍后重试")
|
||||
}else{
|
||||
DebugView.printErrorMsg("[开始任务] 网络出现异常,请稍后重试")
|
||||
} else {
|
||||
ToastUtils.showShort("开始任务请求出现异常,请稍后重试")
|
||||
DebugView.printErrorMsg("[开始任务] 开始任务请求出现异常,请稍后重试")
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFail(code: Int, msg: String?) {
|
||||
DebugView.printErrorMsg("[开始任务] 请求fail, code=$code, msg=$msg")
|
||||
DebugView.printErrorMsg("[开始任务] 请求fail, code=$code, msg=$msg, lindId=$lineId")
|
||||
d(TAG, "startTask onFail: code=$code, msg=$msg")
|
||||
ToastUtils.showShort("开始任务请求出现异常,请稍后重试,code=$code, msg=$msg")
|
||||
ToastUtils.showShort("开始任务请求出现异常,请稍后重试,code=$code, msg=$msg, lindId=$lineId")
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -951,12 +957,15 @@ object TaxiTaskModel {
|
||||
val listener = it.value
|
||||
listener.onStartPrepareTask120s(true)
|
||||
}
|
||||
DebugView.printInfoMsg("[PrepareNextTask] 倒计时${TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S/1000}秒后prepareNextTask, siteId=$siteId")
|
||||
UiThreadHandler.postDelayed(mPrepareTaskDelay120SRunnable, TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S)
|
||||
DebugView.printInfoMsg("[PrepareNextTask] 倒计时${TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S / 1000}秒后prepareNextTask, siteId=$siteId")
|
||||
UiThreadHandler.postDelayed(
|
||||
mPrepareTaskDelay120SRunnable,
|
||||
TaxiUnmannedConst.TIMER_PREPARE_TASK_INTERVAL_120S
|
||||
)
|
||||
}
|
||||
|
||||
fun removePrepareTaskDelay120S() {
|
||||
if (mPrepareTaskDelay120SRunnable != null){
|
||||
if (mPrepareTaskDelay120SRunnable != null) {
|
||||
DebugView.printInfoMsg("[PrepareNextTask] removeCallbacks, 取消prepareNextTask倒计时")
|
||||
UiThreadHandler.removeCallbacks(mPrepareTaskDelay120SRunnable)
|
||||
mTaxiTaskWithOrderCallbackMap.forEach {
|
||||
@@ -1080,6 +1089,7 @@ object TaxiTaskModel {
|
||||
paramIndexes = [-1]
|
||||
)
|
||||
fun startAutoPilot() {
|
||||
DebugView.printInfoMsg("[启自驾] startAutoPilot")
|
||||
if (!checkCurrentTaskCondition()) {
|
||||
e(TAG, "no order or order is empty.")
|
||||
DebugView.printErrorMsg("[启自驾] 当前订单不存在或异常!")
|
||||
@@ -1129,8 +1139,7 @@ object TaxiTaskModel {
|
||||
}
|
||||
|
||||
//在订单状态还没流转成功时, 点击了开启自驾按钮, 先去做状态流转成功再启动自驾
|
||||
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code){
|
||||
DebugView.printInfoMsg("[启自驾] startTask ${mCurrentTaskWithOrder!!.lineId}")
|
||||
if (mCurrentTaskWithOrder!!.currentStatus == TaskStatusEnum.GetTask.code) {
|
||||
startTask(mCurrentTaskWithOrder!!.lineId)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -79,15 +79,15 @@
|
||||
app:roma_close="@drawable/roma_taxi_p_bg_selector"
|
||||
app:roma_open="@drawable/taxi_p_roma_checked" />
|
||||
|
||||
<!-- <com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView-->
|
||||
<!-- android:layout_width="@dimen/dp_334"-->
|
||||
<!-- android:layout_height="@dimen/dp_120"-->
|
||||
<!-- android:layout_marginLeft="@dimen/dp_50"-->
|
||||
<!-- android:layout_marginTop="100dp"-->
|
||||
<!-- android:background="@drawable/layer_roma_distance_bg"-->
|
||||
<!-- app:layout_constraintLeft_toRightOf="@+id/romaPView"-->
|
||||
<!-- app:layout_constraintTop_toTopOf="parent"-->
|
||||
<!-- app:roma_change_dis_color="true" />-->
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.RomaDistanceView
|
||||
android:layout_width="@dimen/dp_334"
|
||||
android:layout_height="@dimen/dp_120"
|
||||
android:layout_marginStart="@dimen/dp_50"
|
||||
android:layout_marginTop="100dp"
|
||||
app:roma_distance_bg="@drawable/roma_distance_bg"
|
||||
app:layout_constraintLeft_toRightOf="@+id/romaPView"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:roma_change_dis_color="true" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rv_location_center"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.mogo.eagle.core.function.hmi">
|
||||
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.CONTROL_REMOTE_APP_TRANSITION_ANIMATIONS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||
|
||||
@@ -0,0 +1,205 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.RelativeLayout
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils
|
||||
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.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils.OnNetworkStatusChangedListener
|
||||
import com.mogo.eagle.core.utilcode.util.SpanUtils
|
||||
import kotlinx.android.synthetic.main.view_connect_status.view.tvADASStatus
|
||||
import kotlinx.android.synthetic.main.view_connect_status.view.tvNetStatus
|
||||
|
||||
/**
|
||||
* 当前APP的各种连接状态展示
|
||||
* 网络连接、ADAS、外网
|
||||
*/
|
||||
class ConnectStatusView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : RelativeLayout(context, attrs, defStyleAttr), IMoGoAutopilotStatusListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "ConnectStatusView"
|
||||
}
|
||||
|
||||
private var onNetworkStatusChangedListener: OnNetworkStatusChangedListener
|
||||
|
||||
// 断开网络的次数
|
||||
private var disconnectNetCount = 0
|
||||
private var disconnectNetTime = 0L
|
||||
|
||||
// 断开ADAS的次数
|
||||
private var disconnectADASCount = 0
|
||||
private var disconnectADASTime = 0L
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_connect_status, this, true)
|
||||
val netSpan = SpanUtils.with(tvNetStatus)
|
||||
netSpan.append("网络连接:")
|
||||
if (NetworkUtils.isConnected()) {
|
||||
netSpan.append("已连接")
|
||||
.setForegroundColor(Color.GREEN)
|
||||
} else {
|
||||
disconnectNetCount++
|
||||
netSpan.append("已断开")
|
||||
.setForegroundColor(Color.RED)
|
||||
netSpan.append("| 断链次数:")
|
||||
.append("$disconnectNetCount")
|
||||
.setForegroundColor(Color.RED)
|
||||
}
|
||||
netSpan.create()
|
||||
|
||||
onNetworkStatusChangedListener = object : OnNetworkStatusChangedListener {
|
||||
override fun onDisconnected() {
|
||||
disconnectNetCount++
|
||||
disconnectNetTime = System.currentTimeMillis()
|
||||
val netSpan = SpanUtils.with(tvNetStatus)
|
||||
netSpan.append("网络连接:")
|
||||
.append("已断开")
|
||||
.setForegroundColor(Color.RED)
|
||||
netSpan.append("| 断链次数:")
|
||||
.append("$disconnectNetCount")
|
||||
.setForegroundColor(Color.RED)
|
||||
netSpan.create()
|
||||
//netSpan.append("断开时常").append("$disconnectNetCount").setForegroundColor(Color.RED)
|
||||
|
||||
// 统计代码
|
||||
val properties: MutableMap<String, Any> = HashMap()
|
||||
properties["连接状态"] = "已断开"
|
||||
properties["重连次数"] = "$disconnectNetCount"
|
||||
MogoAnalyticUtils.track("SYS_NET_STATUS", properties)
|
||||
|
||||
}
|
||||
|
||||
override fun onConnected(networkType: NetworkUtils.NetworkType?) {
|
||||
// 统计代码
|
||||
val properties: MutableMap<String, Any> = HashMap()
|
||||
properties["连接状态"] = "已连接"
|
||||
properties["重连次数"] = "$disconnectNetCount"
|
||||
|
||||
val netSpan = SpanUtils.with(tvNetStatus)
|
||||
netSpan.append("网络连接:")
|
||||
.append("已连接")
|
||||
.setForegroundColor(Color.GREEN)
|
||||
netSpan.append("| 断链次数:")
|
||||
.append("$disconnectNetCount")
|
||||
.setForegroundColor(Color.RED)
|
||||
if (disconnectNetTime != 0L) {
|
||||
netSpan.append("| 断开时常:")
|
||||
.append("${(System.currentTimeMillis() - disconnectNetTime) / 1000} s")
|
||||
.setForegroundColor(Color.RED)
|
||||
properties["断开时常"] =
|
||||
"${(System.currentTimeMillis() - disconnectNetTime) / 1000} s"
|
||||
}
|
||||
netSpan.create()
|
||||
|
||||
MogoAnalyticUtils.track("SYS_NET_STATUS", properties)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {
|
||||
super.onAutopilotIpcConnectStatusChanged(status, reason)
|
||||
tvADASStatus.post {
|
||||
when (status) {
|
||||
IPC_CONNECTION_STATUS.CONNECTED -> {
|
||||
// 统计代码
|
||||
val properties: MutableMap<String, Any> = HashMap()
|
||||
properties["连接状态"] = "已连接"
|
||||
properties["重连次数"] = "$disconnectADASCount"
|
||||
|
||||
val adasSpan = SpanUtils.with(tvADASStatus)
|
||||
adasSpan.append("ADAS连接:")
|
||||
.append("已连接")
|
||||
.setForegroundColor(Color.GREEN)
|
||||
adasSpan.append("| 重连次数:")
|
||||
.append("$disconnectADASCount")
|
||||
.setForegroundColor(Color.RED)
|
||||
|
||||
if (disconnectADASTime != 0L) {
|
||||
adasSpan.append("| 断开时常:")
|
||||
.append("${(System.currentTimeMillis() - disconnectADASTime) / 1000} s")
|
||||
.setForegroundColor(Color.RED)
|
||||
properties["断开时常"] =
|
||||
"${(System.currentTimeMillis() - disconnectADASTime) / 1000} s"
|
||||
}
|
||||
adasSpan.create()
|
||||
|
||||
MogoAnalyticUtils.track("IPC_CONNECTION_STATUS", properties)
|
||||
}
|
||||
|
||||
IPC_CONNECTION_STATUS.DISCONNECTED -> {
|
||||
disconnectADASCount++
|
||||
disconnectADASTime = System.currentTimeMillis()
|
||||
val adasSpan = SpanUtils.with(tvADASStatus)
|
||||
|
||||
// 统计代码
|
||||
val properties: MutableMap<String, Any> = HashMap()
|
||||
properties["连接状态"] = "已连接"
|
||||
properties["重连次数"] = "$disconnectADASCount"
|
||||
|
||||
MogoAnalyticUtils.track("IPC_CONNECTION_STATUS", properties)
|
||||
|
||||
adasSpan.append("ADAS连接:")
|
||||
.append("已断开")
|
||||
.setForegroundColor(Color.RED)
|
||||
|
||||
adasSpan.append("| 重连次数:")
|
||||
.append("$disconnectADASCount")
|
||||
.setForegroundColor(Color.RED)
|
||||
adasSpan.create()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
NetworkUtils.registerNetworkStatusChangedListener(onNetworkStatusChangedListener)
|
||||
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
NetworkUtils.unregisterNetworkStatusChangedListener(onNetworkStatusChangedListener)
|
||||
CallerAutoPilotStatusListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
interface IPC_CONNECTION_STATUS {
|
||||
companion object {
|
||||
/**
|
||||
* 已连接
|
||||
*/
|
||||
const val CONNECTED = 0x00
|
||||
|
||||
/**
|
||||
* 未连接
|
||||
*/
|
||||
const val DISCONNECTED = 0x01
|
||||
|
||||
/**
|
||||
* 正在连接
|
||||
*/
|
||||
const val CONNECTING = 0x02
|
||||
|
||||
/**
|
||||
* 正在搜索IP
|
||||
*/
|
||||
const val SEARCH_ADDRESS = 0x03
|
||||
|
||||
/**
|
||||
* 找不到可用IP 传入的IP不可用或固定IP列表中所有IP不可用
|
||||
*/
|
||||
const val NOT_FOUND_ADDRESS = 0x04
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.mogo.eagle.core.function.hmi.ui.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.Message
|
||||
import android.text.Html
|
||||
import android.util.AttributeSet
|
||||
import android.util.Log
|
||||
@@ -18,13 +21,33 @@ class RomaDistanceView @JvmOverloads constructor(
|
||||
context: Context,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) , IMoGoRomaListener {
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoRomaListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "RomaDistanceView"
|
||||
}
|
||||
|
||||
private var disChangeColor = false
|
||||
private var dis: Int = 0
|
||||
private val mHandler = object : Handler(Looper.getMainLooper()) {
|
||||
override fun handleMessage(msg: Message) {
|
||||
super.handleMessage(msg)
|
||||
if (msg.what == 1) {
|
||||
if (dis != 0) {
|
||||
if (romaDistanceBg.visibility == View.GONE) {
|
||||
romaDistanceBg.visibility = View.VISIBLE
|
||||
}
|
||||
if (disChangeColor) {
|
||||
romaDistanceMeter.text =
|
||||
Html.fromHtml("<font color='#293449'>漫游距离</font><font color='#0752C3'>${dis}米</font>")
|
||||
} else {
|
||||
romaDistanceMeter.text = "漫游距离${dis}米"
|
||||
}
|
||||
}
|
||||
}
|
||||
sendEmptyMessageDelayed(1, 1000)
|
||||
}
|
||||
}
|
||||
|
||||
init {
|
||||
LayoutInflater.from(context).inflate(R.layout.view_roma_distance, this, true)
|
||||
@@ -34,14 +57,16 @@ class RomaDistanceView @JvmOverloads constructor(
|
||||
defStyleAttr,
|
||||
0
|
||||
)
|
||||
// val distanceBg = a.getResourceId(R.styleable.RomaDistanceView_roma_distance_bg,0)
|
||||
// if(distanceBg != 0){
|
||||
// romaDistanceBg.background = resources.getDrawable(distanceBg)
|
||||
// }
|
||||
val txtSize = a.getInteger(R.styleable.RomaDistanceView_roma_txt_size,35)
|
||||
romaDistanceMeter.setTextSize(TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(getContext(),txtSize.toFloat()).toFloat())
|
||||
val txtDisColor = a.getBoolean(R.styleable.RomaDistanceView_roma_change_dis_color,false)
|
||||
val distanceBg = a.getResourceId(R.styleable.RomaDistanceView_roma_distance_bg, 0)
|
||||
if (distanceBg != 0) {
|
||||
romaDistanceBg.background = resources.getDrawable(distanceBg)
|
||||
}
|
||||
val txtSize = a.getInteger(R.styleable.RomaDistanceView_roma_txt_size, 35)
|
||||
romaDistanceMeter.setTextSize(
|
||||
TypedValue.COMPLEX_UNIT_PX,
|
||||
AutoSizeUtils.dp2px(getContext(), txtSize.toFloat()).toFloat()
|
||||
)
|
||||
val txtDisColor = a.getBoolean(R.styleable.RomaDistanceView_roma_change_dis_color, false)
|
||||
disChangeColor = txtDisColor
|
||||
a.recycle()
|
||||
}
|
||||
@@ -54,22 +79,19 @@ class RomaDistanceView @JvmOverloads constructor(
|
||||
override fun romaStatus(status: Boolean) {
|
||||
super.romaStatus(status)
|
||||
if (status) {
|
||||
romaDistanceBg.visibility = View.VISIBLE
|
||||
mHandler.sendEmptyMessageDelayed(1, 500)
|
||||
} else {
|
||||
mHandler.removeMessages(1)
|
||||
romaDistanceBg.visibility = View.GONE
|
||||
romaDistanceMeter.text = ""
|
||||
dis = 0
|
||||
}
|
||||
}
|
||||
|
||||
override fun romaDistance(distance: String) {
|
||||
super.romaDistance(distance)
|
||||
val dis = distance.toDouble().toInt()
|
||||
Log.i(TAG, "romaDistance:$distance")
|
||||
if(disChangeColor){
|
||||
romaDistanceMeter.text = Html.fromHtml("漫游距离<font color='#0752C3'>${dis}米</font>")
|
||||
}else{
|
||||
romaDistanceMeter.text = "漫游距离${dis}米"
|
||||
}
|
||||
dis = distance.toDouble().toInt()
|
||||
Log.i(TAG, "romaDistance:$dis")
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
|
||||
@@ -37,4 +37,11 @@
|
||||
android:layout_height="680dp"
|
||||
android:layout_gravity="bottom" />
|
||||
|
||||
<com.mogo.eagle.core.function.hmi.ui.widget.ConnectStatusView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top"
|
||||
android:visibility="gone" />
|
||||
|
||||
|
||||
</FrameLayout>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:background="@color/white"
|
||||
android:padding="20dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvNetStatus"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="网络连接:获取中|断链次数:0|断开时常:0s"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvADASStatus"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="ADAS连接:获取中|断链次数:0|断开时常:0s"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvNetStatus" />
|
||||
|
||||
|
||||
</com.mogo.eagle.core.widget.RoundConstraintLayout>
|
||||
@@ -9,9 +9,8 @@
|
||||
android:id="@+id/romaDistanceMeter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:gravity="center_horizontal"
|
||||
android:gravity="center"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
|
||||
Reference in New Issue
Block a user