NW · 15 9 月, 2023

CellSignalStrength

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;
粤ICP备16068732号