3

その質問と回答を見た後(ちなみにありがとう)、回答とほとんど同じであるこのコードを書きました:

try {
        List<CellInfo> cellInfoList = telephonyManager.getAllCellInfo();
        for (CellInfo cellInfo : cellInfoList) {
            if (cellInfo instanceof CellInfoGsm) {
                CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo;
                CellIdentityGsm cellIdentity = cellInfoGsm.getCellIdentity();
                final CellSignalStrengthGsm gsm = ((CellInfoGsm) cellInfo).getCellSignalStrength();
                rsrpValue = gsm.getDbm();
                pciValue = cellIdentity.getCid();
            } else if (cellInfo instanceof CellInfoCdma) {
                CellInfoCdma cellInfoCdma = (CellInfoCdma) cellInfo;
                CellIdentityCdma cellIdentity = cellInfoCdma.getCellIdentity();
                pciValue = cellIdentity.getBasestationId();
            } else if (cellInfo instanceof CellInfoLte){
                    CellInfoLte cellInfoLte = (CellInfoLte) cellInfo;
                    CellIdentityLte cellIdentity = cellInfoLte.getCellIdentity();
                    pciValue = cellIdentity.getPci();
            } else {
                throw new Exception("Unknown type of cell signal!");
            }
        }
    } catch (Exception e) {
        Log.e(TAG, "Unable to obtain cell signal information", e);
    }

しかし、GSM の rsrpValue または pciValue を表示すると、常に最大の整数値 (2147483647) が表示されます。API 17 を搭載した電話でこれを試しました。コードに何か問題がありますか?

ありがとう

4

1 に答える 1