這裏的信號強度和格數是指狀態欄裏的信號條數目📶
比如這樣有4條,獲得的值就是4
需要先通過TMS註冊一個監聽,代碼如下
private static int mLteLevel = -1;
/**
* 監聽手機信號變化
*/
private static void listenSignalStrengths() {
final TelephonyManager telephonyManager = (TelephonyManager) Core.context().getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager == null) {
return;
}
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
try {
Method getLteLevelMethod = signalStrength.getClass().getMethod("getLteLevel");
mLteLevel = DataUtils.getInt(getLteLevelMethod.invoke(signalStrength));
Log.i("NetUtil", "onSignalStrengthsChanged:" + mLteLevel);
} catch (Throwable e) {
Log.i("NetUtil", "onSignalStrengthsChanged:" + e);
}
}
}, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
mLteLevel作爲成員變量,當信號強度發生變化時,他會自己更新,再提供一個getter就可以了
/**
* 獲取手機信號強度格數,一般爲 0-4
*/
public static int getLteLevel() {
return mLteLevel;
}
給listenSignalStrengths方法找住處比較麻煩,所以可以放在靜態代碼塊裏,整體就像這樣,調用getLteLevel獲取就可以了。
不過需要注意的是,第一次取的時候可能是默認值-1,介意的話就把listenSignalStrengths提前到Application也可以。
public class NetUtil {
public static final String TAG = "NetUtil";
static {
listenSignalStrengths();
}
/**
* 監聽手機信號變化
*/
private static void listenSignalStrengths() {
final TelephonyManager telephonyManager = (TelephonyManager) Core.context().getSystemService(Context.TELEPHONY_SERVICE);
if (telephonyManager == null) {
return;
}
telephonyManager.listen(new PhoneStateListener() {
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
try {
Method getLteLevelMethod = signalStrength.getClass().getMethod("getLteLevel");
mLteLevel = DataUtils.getInt(getLteLevelMethod.invoke(signalStrength));
NTLog.i(TAG, "onSignalStrengthsChanged:" + mLteLevel);
} catch (Throwable e) {
NTLog.i(TAG, "onSignalStrengthsChanged:" + e);
}
}
}, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
}
/**
* 獲取手機信號強度格數,一般爲 0-4
*/
public static int getLteLevel() {
return mLteLevel;
}
}