5G-NR
SDK\sources\android-33\android\telephony\CellSignalStrengthNr.java
// Lifted from Default carrier configs and max range of SSRSRP
// Boundaries: [-140 dB, -44 dB]
private int[] mSsRsrpThresholds = new int[] {
-110, /* SIGNAL_STRENGTH_POOR */
-90, /* SIGNAL_STRENGTH_MODERATE */
-80, /* SIGNAL_STRENGTH_GOOD */
-65, /* SIGNAL_STRENGTH_GREAT */
};
// Lifted from Default carrier configs and max range of SSRSRQ
// Boundaries: [-43 dB, 20 dB]
private int[] mSsRsrqThresholds = new int[] {
-31, /* SIGNAL_STRENGTH_POOR */
-19, /* SIGNAL_STRENGTH_MODERATE */
-7, /* SIGNAL_STRENGTH_GOOD */
6 /* SIGNAL_STRENGTH_GREAT */
};
// Lifted from Default carrier configs and max range of SSSINR
// Boundaries: [-23 dB, 40 dB]
private int[] mSsSinrThresholds = new int[] {
-5, /* SIGNAL_STRENGTH_POOR */
5, /* SIGNAL_STRENGTH_MODERATE */
15, /* SIGNAL_STRENGTH_GOOD */
30 /* SIGNAL_STRENGTH_GREAT */
};
4G-LTE
SDK\sources\android-33\android\telephony\CellSignalStrengthLte.java
// Lifted from Default carrier configs and max range of RSRP
private static final int[] sRsrpThresholds = new int[] {
-115, /* SIGNAL_STRENGTH_POOR */
-105, /* SIGNAL_STRENGTH_MODERATE */
-95, /* SIGNAL_STRENGTH_GOOD */
-85 /* SIGNAL_STRENGTH_GREAT */
};
// Lifted from Default carrier configs and max range of RSRQ
private static final int[] sRsrqThresholds = new int[] {
-19, /* SIGNAL_STRENGTH_POOR */
-17, /* SIGNAL_STRENGTH_MODERATE */
-14, /* SIGNAL_STRENGTH_GOOD */
-12 /* SIGNAL_STRENGTH_GREAT */
};
// Lifted from Default carrier configs and max range of RSSNR
private static final int[] sRssnrThresholds = new int[] {
-3, /* SIGNAL_STRENGTH_POOR */
1, /* SIGNAL_STRENGTH_MODERATE */
5, /* SIGNAL_STRENGTH_GOOD */
13 /* SIGNAL_STRENGTH_GREAT */
};
2G-GSM
API-28之前用CSQ, CSQ=12 手机可以显示满格,电话,短信OK,但是GPRS数据CSQ>=16才比较稳定。
API-29后用RSSI了
SDK\sources\android-28\android\telephony\CellSignalStrengthGsm.java
private static final int GSM_SIGNAL_STRENGTH_GREAT = 12;
private static final int GSM_SIGNAL_STRENGTH_GOOD = 8;
private static final int GSM_SIGNAL_STRENGTH_MODERATE = 5;
if (asu <= 2 || asu == 99) level = SIGNAL_STRENGTH_NONE_OR_UNKNOWN;
else if (asu >= GSM_SIGNAL_STRENGTH_GREAT) level = SIGNAL_STRENGTH_GREAT;
else if (asu >= GSM_SIGNAL_STRENGTH_GOOD) level = SIGNAL_STRENGTH_GOOD;
else if (asu >= GSM_SIGNAL_STRENGTH_MODERATE) level = SIGNAL_STRENGTH_MODERATE;
else level = SIGNAL_STRENGTH_POOR;
SDK\sources\android-33\android\telephony\CellSignalStrengthGsm.java
private static final int GSM_RSSI_MAX = -51;
private static final int GSM_RSSI_GREAT = -89;
private static final int GSM_RSSI_GOOD = -97;
private static final int GSM_RSSI_MODERATE = -103;
private static final int GSM_RSSI_POOR = -107;
private static final int GSM_RSSI_MIN = -113;
3G-WCDMA
SDK\sources\android-33\android\telephony\CellSignalStrengthWcdma.java
private static final int WCDMA_RSSI_MAX = -51;
private static final int WCDMA_RSSI_GREAT = -77;
private static final int WCDMA_RSSI_GOOD = -87;
private static final int WCDMA_RSSI_MODERATE = -97;
private static final int WCDMA_RSSI_POOR = -107;
private static final int WCDMA_RSSI_MIN = -113;
private static final int[] sRssiThresholds = new int[]{
WCDMA_RSSI_POOR, WCDMA_RSSI_MODERATE, WCDMA_RSSI_GOOD, WCDMA_RSSI_GREAT};
private static final int WCDMA_RSCP_MAX = -24;
private static final int WCDMA_RSCP_GREAT = -85;
private static final int WCDMA_RSCP_GOOD = -95;
private static final int WCDMA_RSCP_MODERATE = -105;
private static final int WCDMA_RSCP_POOR = -115;
private static final int WCDMA_RSCP_MIN = -120;
private static final int[] sRscpThresholds = new int[] {
WCDMA_RSCP_POOR, WCDMA_RSCP_MODERATE, WCDMA_RSCP_GOOD, WCDMA_RSCP_GREAT};
2G-CDMA
SDK\sources\android-33\android\telephony\CellSignalStrengthCdma.java
if (cdmaDbm == CellInfo.UNAVAILABLE) cdmaAsuLevel = 99;
else if (cdmaDbm >= -75) cdmaAsuLevel = 16;
else if (cdmaDbm >= -82) cdmaAsuLevel = 8;
else if (cdmaDbm >= -90) cdmaAsuLevel = 4;
else if (cdmaDbm >= -95) cdmaAsuLevel = 2;
else if (cdmaDbm >= -100) cdmaAsuLevel = 1;
else cdmaAsuLevel = 99;
// Ec/Io are in dB*10
if (cdmaEcio == CellInfo.UNAVAILABLE) ecioAsuLevel = 99;
else if (cdmaEcio >= -90) ecioAsuLevel = 16;
else if (cdmaEcio >= -100) ecioAsuLevel = 8;
else if (cdmaEcio >= -115) ecioAsuLevel = 4;
else if (cdmaEcio >= -130) ecioAsuLevel = 2;
else if (cdmaEcio >= -150) ecioAsuLevel = 1;
else ecioAsuLevel = 99;
3G-TD
SDK\sources\android-33\android\telephony\CellSignalStrengthTdscdma.java
private static final int TDSCDMA_RSCP_MAX = -24;
private static final int TDSCDMA_RSCP_GREAT = -49;
private static final int TDSCDMA_RSCP_GOOD = -73;
private static final int TDSCDMA_RSCP_MODERATE = -97;
private static final int TDSCDMA_RSCP_POOR = -110;
private static final int TDSCDMA_RSCP_MIN = -120;