2012-03-14 35 views
5

Estoy tratando de identificar la ubicación de las celdas vecinas en 3G con Android, lo cual obtengo con getNeighboringCellInfo(). Cuando el teléfono funciona en modo GSM, puedo usar getCid() y getLac() para obtener el CellID y el LAC, pero para 3G solo puedo usar getPsc(), que no estoy muy seguro si es suficiente para identificar una celdacellID y LAC/PSC para celdas vecinas 3G en Android

¿Alguien puede decirme si puedo obtener el CellID + LAC para las células vecinas? Y si eso no es posible, ¿cómo puedo usar el código PSC para identificar una celda?

+0

¿Puede decirme en qué modelo de teléfono y versión de Android encontró 'getPsc()' funcionando? Apreciarlo si pudieras responder. –

+0

Tengo el mismo problema, para la red UTMS, simplemente no puede obtener el cellId y lac, pero funciona bien con la torre celular conectada actual. Creo que no puede obtener el cellid vecino para el nivel de API actual. –

Respuesta

3

Puedo obtener cid y rssi para celdas vecinas. Entonces prueba este código y funciona solo en material físico (no use emulador). aquí creas tu xml de Android con textview. ;-)

package app.tel; 
import java.util.List; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.telephony.NeighboringCellInfo; 
import android.telephony.TelephonyManager; 
import android.telephony.gsm.GsmCellLocation; 
import android.widget.TextView; 


public class TelephActivity extends Activity { 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView textGsmCellLocation = (TextView)findViewById(R.id.gsmcelllocation); 
    TextView textMCC = (TextView)findViewById(R.id.mcc); 
    TextView textMNC = (TextView)findViewById(R.id.mnc); 
    TextView textCID = (TextView)findViewById(R.id.cid); 

    //retrieve a reference to an instance of TelephonyManager 
    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation(); 

    String networkOperator = telephonyManager.getNetworkOperator(); 
    String mcc = networkOperator.substring(0, 3); 
    String mnc = networkOperator.substring(3); 
    textMCC.setText("mcc: " + mcc); 
    textMNC.setText("mnc: " + mnc); 

    int cid = cellLocation.getCid(); 
    //int lac = cellLocation.getLac(); 
    textGsmCellLocation.setText(cellLocation.toString()); 
    textCID.setText("gsm cell id: " + String.valueOf(cid)); 

    TextView Neighboring = (TextView)findViewById(R.id.neighboring); 
    List<NeighboringCellInfo> NeighboringList = telephonyManager.getNeighboringCellInfo(); 

    String stringNeighboring = "Neighboring List- Lac : Cid : RSSI\n"; 
    for(int i=0; i < NeighboringList.size(); i++){ 

    String dBm; 
    int rssi = NeighboringList.get(i).getRssi(); 
    if(rssi == NeighboringCellInfo.UNKNOWN_RSSI){ 
    dBm = "Unknown RSSI"; 
    }else{ 
    dBm = String.valueOf(-113 + 2 * rssi) + " dBm"; 
    } 

    stringNeighboring = stringNeighboring 
    + String.valueOf(NeighboringList.get(i).getLac()) +" : " 
    + String.valueOf(NeighboringList.get(i).getCid()) +" : " 
    + String.valueOf(NeighboringList.get(i).getPsc()) +" : " 
    + String.valueOf(NeighboringList.get(i).getNetworkType()) +" : " 
    + dBm +"\n"; 
    } 

    Neighboring.setText(stringNeighboring); 
} 
} 
+1

Esto no responde la pregunta. cid y lac no se establecen en el caso de una conexión UMTS (HSPA). –

3

En UMTS, el PSC es un tipo de identificador de celda local. Es "localmente" único en el sentido de que todas las celdas vecinas, así como todos los vecinos de estas celdas, tienen garantizado un PSC diferente al de la celda actual. También significa que nunca encontrará dos celdas vecinas con el mismo PSC. Sin embargo, bien puede haber celdas con el mismo PSC ubicado en diferentes partes del país.

NeighboringCellInfo para una celda UMTS solo tendrá configurado el PSC, mientras que el resto de campos (MCC, MNC, LAC, CID) no serán válidos. La única forma de averiguar estos parámetros sería almacenar todos los campos (MCC, MNC, LAC, CID y PSC) para cada celda que encuentre, luego al obtener un PSC "desconocido", búsquelo en los datos almacenados. (Debería filtrar los vecinos de la celda de servicio, ya que el PSC es solo una ID local única, no única a nivel mundial).

Como alternativa, el PSC de una celda junto con la tupla MCC/MNC/LAC/CID de uno de sus vecinos también es una identificación global única que puede usar. Tenga en cuenta, sin embargo, que cada celda tendrá múltiples identificadores de este tipo (uno para cada vecino).

0

A veces, cuando más CID del mismo proveedor comparten la misma torre/sitio, se usan para aumentar la capacidad y se transmiten en el mismo directorio, tienen el mismo PSC. Entonces, en esos casos, puede usar PSC para identificar el sitio y la dirección del haz, pero no el CID.

Cuestiones relacionadas