[6.0.0]
1、增加网络断连监听及埋点上报
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user