2012-03-14 30 views
5

Tôi đang cố gắng xác định vị trí ô lân cận trong 3G với Android, mà tôi nhận được với getNeighboringCellInfo(). Khi điện thoại hoạt động ở chế độ GSM, tôi có thể sử dụng getCid() và getLac() để lấy CellID và LAC, nhưng đối với 3G, tôi chỉ có thể sử dụng getPsc(), mà tôi không chắc chắn nếu nó đủ để xác định một ô.cellID và LAC/PSC cho các ô lân cận 3G trong Android

Ai đó có thể cho tôi biết nếu tôi có thể lấy CellID + LAC cho các ô lân cận không? Và nếu điều đó là không thể, làm thế nào tôi có thể sử dụng mã PSC để xác định một tế bào?

+0

Bạn có thể cho tôi biết phiên bản điện thoại và phiên bản Android nào bạn đã tìm thấy 'getPsc()' hoạt động không? Đánh giá cao nếu bạn có thể trả lời. –

+0

Tôi nhận được cùng một vấn đề, đối với mạng UTMS, nó không thể nhận được cellId và lac, nhưng nó hoạt động tốt với tháp di động được kết nối hiện tại. Tôi nghĩ rằng nó không thể có được cellid lân cận cho mức api hiện tại. –

Trả lời

3

Tôi có thể nhận cid và rssi cho các ô lân cận. Vì vậy, bạn hãy thử mã này và nó chỉ hoạt động trên vật liệu vật lý (không sử dụng trình mô phỏng). ở đây bạn tạo xml android của bạn với chế độ xem văn bản. ;-)

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

Điều này không trả lời được câu hỏi. cid và lac không được đặt trong trường hợp kết nối UMTS (HSPA). –

3

Trong UMTS, PSC là một loại nhận dạng tế bào địa phương. Nó là "cục bộ" duy nhất ở chỗ tất cả các tế bào lân cận, cũng như tất cả các nước láng giềng của các tế bào này, được đảm bảo có một PSC khác với tế bào hiện tại. Nó cũng có nghĩa là bạn sẽ không bao giờ gặp phải hai tế bào lân cận với cùng một PSC. Tuy nhiên, cũng có thể có các ô có cùng PSC nằm ở các phần khác nhau của quốc gia.

NeighboringCellInfo cho ô UMTS sẽ chỉ có bộ PSC trong khi tất cả các trường khác (MCC, MNC, LAC, CID) sẽ không hợp lệ. Cách duy nhất để tìm ra các tham số này là lưu trữ tất cả các trường (MCC, MNC, LAC, CID cũng như PSC) cho mỗi ô bạn gặp phải, sau đó nhận được PSC "không xác định" tìm kiếm trong dữ liệu được lưu trữ. (Bạn sẽ cần phải lọc cho các hàng xóm của ô phục vụ, vì PSC chỉ là một ID duy nhất cục bộ, không phải là một ID duy nhất trên toàn cầu). Thay vào đó, PSC của một ô cùng với bộ MCC/MNC/LAC/CID của một trong những người hàng xóm của nó cũng là một ID duy nhất trên toàn cầu mà bạn có thể sử dụng. Tuy nhiên, hãy lưu ý rằng mỗi ô sẽ có nhiều số nhận dạng như vậy (một cho mỗi người hàng xóm).

0

Đôi khi khi có thêm CID của cùng một nhà cung cấp chia sẻ cùng một tòa nhà/trang web, được sử dụng để tăng dung lượng và truyền trong cùng một chỉ dẫn, có cùng PSC. Vì vậy, trong những trường hợp đó bạn có thể sử dụng PSC để xác định trang web và beamdirection nhưng không phải là CID.

Các vấn đề liên quan