2012-09-19 9 views
5

Obecnie trilateruję mojego Androida z komórkami w mojej sieci. Jest nawet dokładniejsza, niż myślałem. Ale nie tak dokładne, jak tego chcę. Więc chcę zaangażować więcej wież, niż dostaję od getNeighboringCellInfo. Chcę uzyskać identyfikator komórki i siłę sygnału każdej wieży w zasięgu. Z każdego operatora sieciowego. Czy istnieje sposób na "pingowanie" wież, więc odpowiadają one za pomocą cellID, Lac i signalstrength? Jakoś to musi być możliwe. Czy mogę skanować równolegle 2G i 3G (i 4G)? Czy mogę programowo przełączać się między nimi? Jakieś sugestie? Mam nadzieję, że jestem wystarczająco jasny ...Uzyskiwanie CID, LAC i siły sygnału wszystkich wież komórkowych w zakresie

Odpowiedz

1

Wydaje się, że TelephonyManager i getNeighboringCellInfo() są tym, czego szukasz.

Oto przykład, który jest łatwe i proste:

/* first you wanna get a telephony manager by asking the system service */ 
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 

/* then you can query for all the neighborhood cells */ 
List<NeighboringCellInfo> neighbors = tm.getNeighboringCellInfo(); 

/* here's something you can get from NeighboringCellInfo */ 
for (NeighboringCellInfo n : neighbors) { 
    Log.v("CellInfo", "" + n.getCid()); 
    Log.v("CellInfo", "" + n.getLac()); 
    Log.v("CellInfo", "" + n.getPsc()); 
    Log.v("CellInfo", "" + n.getRssi()); 
} 

Upewnij się, że zawierają wszystkie uprawnienia wymagane, takich jak ACCESS_COARSE_LOCATION lub READ_PHONE_STATE, w zależności od tego, co API będziesz używania w swoim manifeście plik, lub po prostu się zawiesi.

Oh btw to działa tylko dla 2G. 3G lub nowszy nie obsługuje tego rodzaju operacji.

+1

"Dlatego chcę zaangażować więcej wież, niż otrzymuję od getNeighboringCellInfo." Już czytam CID z sąsiednich komórek. Ale chcę uzyskać WSZYSTKIE CIDy KAŻDEGO operatora sieci w zasięgu. – albrechtATnetzfactor

+0

tm.getAllCellInfo() jest lepszym wyborem. – ofskyMohsen

Powiązane problemy