通過監聽PhoneStateListener去獲取5G的信號值,只示範華爲手機,其他的手機同理。
public class MyPhoneMessage extends PhoneStateListener{
@Override
public void onSignalStrengthsChanged(SignalStrength signalStrength) {
super.onSignalStrengthsChanged(signalStrength);
String signal = signalStrength.toString();
//以空格截取
String[] parts = signal.split(" ");
//4G信號
String lteStrength = "";
//5G信號
String nrStrength = "";
//獲取手機廠商名字
String manufacturer = Build.MANUFACTURER;
switch (manufacturer){
case "HUAWEI":
//Android Q和以下的手機4G信息不一樣
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
lteStrength = removeEquals(parts[30]);// 4G
} else {
lteStrength = removeEquals(parts[9]);// 4G
}
nrStrength = removeEquals(parts[51]);// 5G
break;
}
}
}
/***
* 如果有等於號截取等於號之後的東西
* @param ss 需要截取的字符串
* @return
*/
private String removeEquals(String ss) {
if (!TextUtils.isEmpty(ss)) {
if (ss.contains("=")) {
int i = ss.indexOf("=");
ss = ss.substring(i + 1, ss.length());
}
}
return ss;
}
然後在Activity中去監聽這個PhoneStateListener:
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
tm.listen(new MyPhoneMessage(),PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);