1、获取4g、5g
@SuppressLint("MissingPermission")
private fun getNetWorkType(): String? {
val status = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
if (status != PackageManager.PERMISSION_GRANTED) {
return null
}
val mTelephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
val type = mTelephonyManager.networkType
if (type == 19) {
return "4G"
}
if (type == TelephonyManager.NETWORK_TYPE_NR) {
return "5G"
}
return null
}
2、获取dbm、asu
@SuppressLint("MissingPermission")
public fun getMobileNetworkSignal() {
val status = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)
if (status != PackageManager.PERMISSION_GRANTED) {
return
}
val mTelephonyManager = getSystemService(TELEPHONY_SERVICE) as TelephonyManager
mTelephonyManager.listen(object : PhoneStateListener() {
@SuppressLint("MissingPermission")
override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
super.onSignalStrengthsChanged(signalStrength)
val cellInfoList: List<CellInfo> = mTelephonyManager.allCellInfo
val dbmList = cellInfoList.map {
when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q -> {
when (it) {
is CellInfoTdscdma -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
is CellInfoNr -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
else -> {
Dbm(
-1,
-1
)
}
}
}
it is CellInfoGsm -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
it is CellInfoLte -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
it is CellInfoCdma -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
it is CellInfoWcdma -> {
Dbm(
it.cellSignalStrength.dbm,
it.cellSignalStrength.asuLevel
)
}
else -> {
Dbm(
-1,
-1
)
}
}
}
}
}, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)
}