Member 13457434 Ответов: 1

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()?

1 Ответов

Рейтинг:
2

Member 4662673

Наверное, слишком поздно для ответа. Ваш код работает. Вы увидите эти значения только для LTE и если он зарегистрирован. Вот что я получаю.
Базовая Станция(CellInfoLte) Информация Поблизости:

CellInfoLte:{mRegistered=YES mTimeStampType=oem_ril mTimeStamp=30206708646893ns 

CellIdentityLte:{ mMcc=311 mMnc=480 mCi=15664406 mPci=22 mTac=15617 mEarfcn=2100} 

CellSignalStrengthLte: ss=21 rsrp=-95 rsrq=-7 rssnr=2147483647 cqi=2147483647 ta=2147483647}