Android: getallcellinfo()/getneighboringcellinfo() обнаруживает неизвестную информацию о ячейке
Я пытаюсь получить информацию о вышке сотовой связи поблизости во время затмения. Это мои коды getAllCellInfo:
TelephonyManager mTelephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); List<CellInfo> infos = mTelephonyManager.getAllCellInfo(); if(infos!=null) { if(infos.size()==0)return; for (CellInfo i : infos) { if(i instanceof CellInfoGsm){ Log.i("Location", "Base Station(CellInfoGsm) Info Nearby: " + i.toString() + "\n"); }else if(i instanceof CellInfoCdma){ Log.i("Location", "Base Station(CellInfoCdma) Info Nearby: " + i.toString() + "\n"); }else if(i instanceof CellInfoLte) { Log.i("Location", "Base Station(CellInfoLte) Info Nearby: " + i.toString() + "\n"); }else if(i instanceof CellInfoWcdma){ Log.i("Location", "Base Station(CellInfoWcdma) Info Nearby: " + i.toString() + "\n"); }else { Log.i("Location", "Base Station(CellInfoGsm) Info Nearby: UNKNOWN" + "\n"); } } }
Я тестирую приведенные выше коды с помощью Lenovo PB2-690Y(Android 6.0.1, API 23),но результаты в logcat выглядят следующим образом:
10-10 11:48:28.090: I/Location(18765): Base Station(CellInfoLte) Info Nearby: CellInfoLte:{mRegistered=YES mTimeStampType=oem_ril mTimeStamp=948186856440416ns CellIdentityLte:{ mMcc=302 mMnc=720 mCi=24371977 mPci=457 mTac=33333} CellSignalStrengthLte: ss=19 rsrp=-103 rsrq=-7 rssnr=2147483647 cqi=2147483647 ta=2147483647} 10-10 11:48:28.090: I/Location(18765): Base Station(CellInfoLte) Info Nearby: CellInfoLte:{mRegistered=NO mTimeStampType=oem_ril mTimeStamp=948186856440416ns CellIdentityLte:{ mMcc=2147483647 mMnc=2147483647 mCi=2147483647 mPci=466 mTac=2147483647} CellSignalStrengthLte: ss=10 rsrp=-112 rsrq=-10 rssnr=2147483647 cqi=2147483647 ta=2147483647}
Я также использовать устаревшие API --- getNeighboringCellInfo
TelephonyManager mTelephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); List<NeighboringCellInfo> infos = mTelephonyManager.getNeighboringCellInfo(); StringBuffer sb = new StringBuffer("Total Number of Base Stations : " + infos.size() + "\n"); for (NeighboringCellInfo info1 : infos) { sb.append(" LAC : " + info1.getLac()); sb.append(" CID : " + info1.getCid()); sb.append(" BSSS : " + (-113 + 2 * info1.getRssi()) + "\n"); } Log.i("Location","Base station info "+sb);
Я использовал ту же конфигурацию для тестирования старого API, и результат logcat таков :
10-10 12:22:26.565: I/Location(20670): Base station info Total Number of Base Stations : 1 10-10 12:22:26.565: I/Location(20670): LAC : -1 CID : -1 BSSS : 35
Что я уже пробовал:
Поэтому я хочу спросить, почему я не могу получить информацию MCC, MNC, CI, TAC (все это максимальное значение целого числа) незарегистрированной базовой станции поблизости с помощью getAllCellInfo()? И почему я не могу получить LAC и CID с помощью getNeighboringCellInfo()?