cellID и LAC / PSC для соседних ячеек 3G в Android - PullRequest
6 голосов
/ 14 марта 2012

Я пытаюсь определить местоположение соседних ячеек в 3G с Android, которое я получаю с помощью getNeighboringCellInfo ().Когда телефон работает в режиме GSM, я могу использовать getCid () и getLac () для получения CellID и LAC, но для 3G я могу использовать только getPsc (), что, я не уверен, достаточнодля идентификации ячейки.

Может кто-нибудь сказать мне, если я могу получить CellID + LAC для соседних ячеек?И если это невозможно, как я могу использовать код PSC для идентификации ячейки?

Ответы [ 3 ]

4 голосов
/ 03 августа 2014

В UMTS PSC является своего рода локальным идентификатором соты. Он «локально» уникален тем, что все соседние соты, а также все соседи этих сот гарантированно имеют PSC, отличный от текущей соты. Это также означает, что вы никогда не встретите две соседние ячейки с одним и тем же PSC. Однако вполне возможно, что ячейки с одним и тем же PSC расположены в разных частях страны.

NeighboringCellInfo для ячейки UMTS будет иметь только PSC, в то время как все другие поля (MCC, MNC, LAC, CID) будут недействительными. Единственный способ узнать эти параметры - сохранить все поля (MCC, MNC, LAC, CID, а также PSC) для каждой ячейки, с которой вы столкнулись, а затем, получив «неизвестный» PSC, просмотреть его в сохраненных данных. (Вам нужно будет отфильтровать соседей обслуживающей соты, так как PSC является только локально уникальным идентификатором, а не глобально уникальным).

В качестве альтернативы PSC ячейки вместе с кортежем MCC / MNC / LAC / CID одного из ее соседей также является глобально уникальным идентификатором, который вы можете использовать. Однако помните, что в каждой ячейке может быть несколько таких идентификаторов (по одному на каждого соседа).

3 голосов
/ 29 марта 2012

Я могу получить cid и rssi для соседних ячеек. Таким образом, вы пытаетесь этот код, и он работает только на физическом материале (не используйте эмулятор). здесь вы создаете свой Android XML с 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);
 }   
 }
0 голосов
/ 25 августа 2015

Иногда, когда несколько идентификаторов CID одного и того же провайдера совместно используют одну и ту же башню / площадку, которые используются для увеличения пропускной способности и передачи в одном и том же сообщении, имеют один и тот же PSC.Таким образом, в этих случаях вы можете использовать PSC для определения места и направления луча, но не CID.

...