2012-03-14 9 views
5

Próbuję zidentyfikować lokalizację sąsiednich komórek w 3G z Androidem, którą otrzymuję za pomocą getNeighboringCellInfo(). Kiedy telefon działa w trybie GSM, mogę używać getCid() i getLac(), aby uzyskać CellID i LAC, ale dla 3G mogę używać tylko getPsc(), co nie jest do końca jasne, czy to wystarczy zidentyfikować komórkę.cellID i LAC/PSC dla sąsiednich komórek 3G w Androidzie

Czy ktokolwiek może mi powiedzieć, czy mogę uzyskać CellID + LAC dla sąsiednich komórek? A jeśli to nie jest możliwe, w jaki sposób mogę użyć kodu PSC do identyfikacji komórki?

+0

Czy możesz mi powiedzieć, w którym modelu telefonu i wersji Androida znalazłeś 'getPsc()' działa? Doceń to, jeśli możesz odpowiedzieć. –

+0

Mam ten sam problem, dla sieci UTMS, to po prostu nie mogę uzyskać cellId i lac, ale działa dobrze z aktualną podłączoną wieżą komórki. Myślę, że nie można uzyskać sąsiedniego celi dla bieżącego poziomu api. –

Odpowiedz

3

Mogę uzyskać cid i rssi dla sąsiednich komórek. Więc spróbuj tego kodu i działa tylko na fizycznym materiale (nie używaj emulatora). tutaj tworzysz swój android xml z widokiem tekstu. ;-)

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

To nie odpowiada na pytanie. cid i lac nie są ustawione w przypadku połączenia UMTS (HSPA). –

3

W UMTS PSC jest rodzajem lokalnego identyfikatora komórki. Jest "lokalnie" unikalny w tym, że każda sąsiednia komórka, jak również wszyscy sąsiedzi tych komórek, mają zapewnione inne PSC niż obecna komórka. Oznacza to również, że nigdy nie spotkasz dwóch sąsiadujących komórek z tym samym PSC. Jednak mogą również istnieć komórki o tym samym PSC zlokalizowane w różnych częściach kraju.

NeighboringCellInfo dla komórki UMTS będzie mieć tylko zestaw PSC, podczas gdy wszystkie pozostałe pola (MCC, MNC, LAC, CID) będą nieprawidłowe. Jedynym sposobem na znalezienie tych parametrów będzie przechowywanie wszystkich pól (MCC, MNC, LAC, CID oraz PSC) dla każdej napotkanej komórki, a następnie uzyskanie "nieznanego" PSC wyszuka dane w przechowywanych danych. (Musisz filtrować sąsiadów z obsługującej komórki, ponieważ PSC jest tylko lokalnie unikalnym identyfikatorem, a nie unikalnym globalnie).

Alternatywnie, PSC komórki wraz z krotką MCC/MNC/LAC/CID jednego z jej sąsiadów jest również globalnie unikalnym identyfikatorem, którego można użyć. Należy jednak pamiętać, że każda komórka miałaby wiele takich identyfikatorów (po jednym dla każdego sąsiada).

0

Czasami, gdy więcej identyfikatorów CID tego samego dostawcy współdzieli tę samą wieżę/miejsce, w celu zwiększenia pojemności i transmisji w tym samym kierunku, należy uzyskać takie samo PSC. W takich przypadkach możesz użyć PSC do identyfikacji strony i kierunku transmisji, ale nie CID.

Powiązane problemy