Attualmente sto trilaterando il mio Android con le celle nella mia rete. È persino più accurato di quanto pensassi. Ma non è preciso come voglio che sia. Quindi voglio coinvolgere più torri di quelle ottenute da getNeighboringCellInfo. Voglio ottenere l'ID cella e l'intensità del segnale di ogni torre nel raggio d'azione. Di ogni operatore di rete. C'è un modo per "pingare" le torri, quindi rispondono con cellID, Lac e signaltrength? In qualche modo questo deve essere possibile. E posso eseguire la scansione parallela di 2G e 3G (e 4G)? O posso passare da uno all'altro a livello di programmazione? Qualche suggerimento? Spero di essere abbastanza chiaro ...Ottenere CID, LAC e intensità del segnale di tutte le torri cellulari nel range
5
A
risposta
1
Sembra TelephonyManager
e getNeighboringCellInfo()
sono ciò che stai cercando.
Ecco un esempio, che è facile e semplice:
/* 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());
}
Assicurati di includere tutte le autorizzazioni necessarie, come ad esempio ACCESS_COARSE_LOCATION
o READ_PHONE_STATE
, a seconda di ciò API sarete utilizzando, in palese file, o andrà semplicemente in crash.
Oh beh, questo funziona solo per 2G. 3G o superiore non supporta questo tipo di operazione.
"Quindi voglio coinvolgere più torri di quante ne avrò da getNeighboringCellInfo." Sto già leggendo le CID dalle celle vicine. Ma voglio ottenere TUTTI i CID di OGNI operatore di rete nel raggio d'azione. – albrechtATnetzfactor
tm.getAllCellInfo() è la scelta migliore. – ofskyMohsen