android与kotlin的网络信号



我有一个问题,我必须在应用程序中显示信号强度。就像我们的手机显示信号强度差的塔一样,它只显示一个塔,而信号强度好的,它显示所有塔。

同样,我也想计算信号强度。

感谢

你可以使用电话状态监听器给你的信号强度。首先,全局定义。

var telephonyManager: TelephonyManager? = null
var psListener: MyPhoneStateListener? = null

然后初始化电话管理器并监听网络中的变化。

psListener = MyPhoneStateListener()
telephonyManager = requireActivity().getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
telephonyManager!!.listen(psListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)

在创建了一个扩展PhoneStateListener的类之后,你可以在Kotlin中将这个类变成一个内部类。如下

inner  class MyPhoneStateListener : PhoneStateListener() {
var signalSupport = 0
override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
super.onSignalStrengthsChanged(signalStrength)

if (signalStrength.isGsm()) {
signalSupport = signalStrength.gsmSignalStrength
Log.d("signal", "------ gsm signal --> $signalSupport")
if (signalSupport > 30) {
Log.d("signal", "Signal GSM : Good")
} else if (signalSupport in 21..29) {
Log.d("signal", "Signal GSM : Avarage")
} else if (signalSupport in 4..19) {
Log.d("signal", "Signal GSM : Weak")
} else if (signalSupport < 3) {
Log.d("signal", "Signal GSM : Very weak")
}
} else {
signalSupport = signalStrength.getCdmaDbm();
}
signalStrengthValue = signalSupport.toString()
}
}

这个信号强度值变量保存了信号强度

的数据

最新更新