tracker telecomunicaciones que obtener lac info code cellidfinder android gps cellid

android - telecomunicaciones - obtener cell id



Android: ¿CellID no está disponible en todos los operadores? (5)

Creo que esto se debe a la forma en que los fabricantes han implementado el código kernel subyacente en el dispositivo, no permitiéndole acceder a cierta información.

Cuando solicito información sobre Cell ID y LAC, en algunos dispositivos no puedo recuperarlos.

Yo uso este código:

TelephonyManager tm =(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); location = (GsmCellLocation) tm.getCellLocation(); cellID = location.getCid(); lac = location.getLac();

  1. ¿Alguien sabe por qué algunos operadores GSM no los proporcionan?
  2. ¿Necesito permisos para eso?
  3. ¿Qué más hay que saber sobre la recuperación de CellID y LAC?

Entonces puedes probar algo como. Tengo la identificación de la celda y el código de área de ubicación para GSM. Pero para UMTS, getCid () devuelve un gran número para el archivo 33 166 248. Así que agrego el operador de módulo (exple xXx.getCid ()% 0xffff).

GsmCellLocation cellLocation = (GsmCellLocation)telm.getCellLocation(); new_cid = cellLocation.getCid() % 0xffff; new_lac = cellLocation.getLac() % 0xffff;


Intente utilizar un PhoneStateListener de la siguiente manera:

Primero, crea el oyente.

public PhoneStateListener phoneStateListener = new PhoneStateListener() { @Override public void onCellLocationChanged (CellLocation location) { StringBuffer str = new StringBuffer(); // GSM if (location instanceof GsmCellLocation) { GsmCellLocation loc = (GsmCellLocation) location; str.append("gsm "); str.append(loc.getCid()); str.append(" "); str.append(loc.getLac()); Log.d(TAG, str.toString()); } } };

Y luego registrar, en onCreate (), el oyente de la siguiente manera:

telephonyManager = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE); telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CELL_LOCATION);

Como se indica en la documentación , LISTEN_CELL_LOCATION requiere que agregue el siguiente permiso:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>


Para encontrar CellId, debe usar 0xffff como máscara de bits, NO mod.

INCORRECTO

new_cid = cellLocation.getCid() % 0xffff;

DERECHO

new_cid = cellLocation.getCid() & 0xffff;


Necesita usar TelephonyManager

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager .getCellLocation(); // Cell Id, LAC int cellid = cellLocation.getCid(); int lac = cellLocation.getLac(); // MCC String MCC = telephonyManager.getNetworkOperator(); int mcc = Integer.parseInt(MCC.substring(0, 3)); // Operator name String operatoprName = telephonyManager.getNetworkOperatorName();

Para obtener permiso, debe agregar followin en el archivo Manifest.xml

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />