2012-03-14 20 views
5

getNeighboringCellInfo()を使用してAndroidで3Gの近隣セルの位置を特定しようとしています。電話機がGSMモードで動作しているときは、getCid()とgetLac()を使用してCellIDとLACを取得できますが、3Gの場合はgetPsc()しか使用できません。細胞を同定する。Androidの3G隣接セルのcellIDとLAC/PSC

隣接セルのCellID + LACを取得できるかどうか教えてください。それが不可能な場合は、PSCコードを使用してセルを識別するにはどうすればよいですか?

+0

'getPsc()'が動作している電話機モデルとAndroidバージョンを教えてください。答えることができればそれを感謝します。 –

+0

私は同じ問題を抱えています.UTMSネットワークでは、cellIdとlacを取得できませんが、現在の接続されているセルタワーでうまく動作します。私はそれが現在のAPIレベルのために隣のcellidを得ることができないと思う。 –

答えて

3

私は隣接セルに対してcidとrssiを得ることができます。だからあなたはこのコードを試して、物理的な材料(エミュレータを使わないでください)でしか動かないのです。 ここでは、textviewであなたのandroid xmlを作成します。 ;-)

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

これは質問に答えません。 UMTS(HSPA)接続の場合、cidおよびlacは設定されません。 –

3

PSCは、一種のローカルセル識別子です。隣接するすべてのセルだけでなく、これらのセルのすべての隣接セルが現在のセルとは異なるPSCを持つことが保証されている点で「ローカル」という点でユニークです。また、PSCが同じ2つの隣接セルに遭遇することもありません。しかし、国の異なる地域に同じPSCを持つ細胞が存在する可能性があります。

UMTSセルのNeighboringCellInfoは、他のすべてのフィールド(MCC、MNC、LAC、CID)が無効の間のみPSCが設定されます。これらのパラメータを見つける唯一の方法は、遭遇するすべてのセルのすべてのフィールド(MCC、MNC、LAC、CID、PSC)を保存し、保存されたデータで「未知の」PSCを検索することです。 PSCはローカルユニークなIDであり、グローバルにユニークなIDではないため、サービングセルのネイバーをフィルタリングする必要があります。

また、隣接セルのMCC/MNC/LAC/CIDタプルとともにセルのPSCも、使用できるグローバル一意のIDです。ただし、各セルには複数のそのような識別子(各隣に1つ)があることに注意してください。

0

同じプロバイダーのより多くのCIDが同じタワー/サイトを共有し、容量を増やして同じ方向に送信する場合は、同じPSCを使用することがあります。そのため、PSCを使用してサイトとビーム方向は識別できますが、CIDは識別できません。

関連する問題