まず、lte rsrp(または他の)値を取得するためのコードを示します。 このコードは、別のaysncTaskで実行されます。AndroidがLTEのRSRP値を引き出す
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int tempInt;
while (isRunning) {
try {
List<CellInfo> cellInfoList = tm.getAllCellInfo();
if (cellInfoList != null && cellInfoList.size() != 0) {
msg = handler.obtainMessage();
CellInfo cellInfo = cellInfoList.get(0);
result = -9999;
tempInt = 0;
if (cellInfo instanceof CellInfoWcdma) {
result = ((CellInfoWcdma) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "3G : " + result + "");
} else if (cellInfo instanceof CellInfoLte) {
result = ((CellInfoLte) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "LTE : " + result);
} else if (cellInfo instanceof CellInfoGsm) {
result = ((CellInfoGsm) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "GSM" + result);
} else if (cellInfo instanceof CellInfoCdma) {
result = ((CellInfoCdma) cellInfo).getCellSignalStrength().getDbm();
Log.e(TAG, "CDMA" + result);
}
.....
問題は、私は私が取得していたデータが正しいであることを確認していない、です。
rsrpの値を見るためにこのソースをバックグラウンドで実行している間に、* 123456#コマンドを使用してLG G3の隠しメニューを実行します。リアルタイムrsrp値を表示するデバッグモードを示します。
問題は、ほとんどの場合、私のアプリのログに表示されるrsrpと、隠しメニューのものが異なることです。私のアプリは約-3〜3回詳細を表示します。
なぜこれが起こっていますか?私のコードに何か問題がありますか?上記のコードは時間間隔がなく、アプリケーションを強制終了する前に続きます。