Android 通過PhoneStateListener拿到5G信號值

通過監聽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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章