6

Tôi đang cố gắng để có được các dữ liệu sau: trạmAndroid: có được CellID và RSS cho Trạm Base và Neigboring tế bào

  • Base: CellID và RSS (công nhận đó là một trong các trạm gốc)
  • Đối tất cả các trạm lân cận: CellID và RSS

Có nhiều API khác nhau và có vẻ như tôi phải sử dụng các điện thoại API khác nhauManager và PhoneStateListener. Tôi là một chút bối rối, vì tôi nghĩ rằng điều này sẽ có sẵn trong một giao diện. Ngoài ra tôi nghĩ rằng nó sẽ có thể thăm dò ý kiến ​​của CellID của trạm gốc hiện tại thay vì phải nghe các thay đổi trạng thái để xác định int, vì các trạm lân cận Cell cũng được thăm dò từ telephonyManager.

Bạn có thể cho tôi biết cách tôi có thể lấy dữ liệu được chỉ định ở trên không?

Trả lời

6

Đường trượt mới: API 17 đẹp hơn và sạch hơn, nhưng vẫn còn quá mới.

List<CellInfo> cellInfos = (List<CellInfo>) this.telephonyManager.getAllCellInfo(); 

for(CellInfo cellInfo : cellInfos) 
{ 
    CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo; 

    CellIdentityGsm cellIdentity = cellInfoGsm.getCellIdentity(); 
    CellSignalStrengthGsm cellSignalStrengthGsm = cellInfoGsm.getCellSignalStrength(); 

    Log.d("cell", "registered: "+cellInfoGsm.isRegistered()); 
    Log.d("cell", cellIdentity.toString());   
    Log.d("cell", cellSignalStrengthGsm.toString()); 
} 

API cũ không cung cấp giải pháp rất thỏa mãn. Nhưng đây là cách cũ-Skool:

this.telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
this.phoneStateListener = setupPhoneStateListener(); 
this.telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CELL_LOCATION); 
this.telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_DATA_CONNECTION_STATE); 
this.telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); 

// This part is used to listen for properties of the neighboring cells 
List<NeighboringCellInfo> neighboringCellInfos = this.telephonyManager.getNeighboringCellInfo(); 
for(NeighboringCellInfo neighboringCellInfo : neighboringCellInfos) 
{ 
    neighboringCellInfo.getCid(); 
    neighboringCellInfo.getLac(); 
    neighboringCellInfo.getPsc(); 
    neighboringCellInfo.getNetworkType(); 
    neighboringCellInfo.getRssi(); 

    Log.d("cellp",neighboringCellInfo.toString()); 
} 

public PhoneStateListener setupPhoneStateListener() 
{ 
    return new PhoneStateListener() { 

     /** Callback invoked when device cell location changes. */ 
     @SuppressLint("NewApi") 
     public void onCellLocationChanged(CellLocation location) 
     { 
      GsmCellLocation gsmCellLocation = (GsmCellLocation) location; 
      gsmCellLocation.getCid(); 
      gsmCellLocation.getLac(); 
      gsmCellLocation.getPsc(); 

      Log.d("cellp", "registered: "+gsmCellLocation.toString()); 
     } 

     /** invoked when data connection state changes (only way to get the network type) */ 
     public void onDataConnectionStateChanged(int state, int networkType) 
     { 
      Log.d("cellp", "registered: "+networkType); 
     } 

     /** Callback invoked when network signal strengths changes. */ 
     public void onSignalStrengthsChanged(SignalStrength signalStrength) 
     { 
      Log.d("cellp", "registered: "+signalStrength.getGsmSignalStrength()); 
     } 

    }; 
} 
  • Đừng quên đặt tất cả các quyền cần thiết Vấn đề với giải pháp này là, mà tôi không nhận được bất kỳ thông tin tế bào lân cận, dù cho tôi thiết lập :

    sử dụng-phép android: name = "android.permission.ACCESS_COARSE_UPDATES"

(lưu ý rằng tôi đang sử dụng một chiếc điện thoại Samsung và đó là một vấn đề được biết rằng điện thoại Samsung don không hỗ trợ việc liệt kê các ô lân cận)

+1

Tôi không thể truyền tệp 'android.telephony.CellInfoWcdma vào android.telephony.CellInfoGsm' trên 'CellInfoGsm cellInfoGsm = (CellInfoGsm) cellInfo;' – msysmilu

+0

Mã có thể không phải là 100% làm việc, API quá mới để chạy trên điện thoại của tôi vào thời điểm tôi viết mã. Vui lòng đăng câu hỏi mới và/hoặc đề xuất chỉnh sửa nếu bạn có giải pháp. – ndrizza

+0

có hợp pháp để lấy dữ liệu này không? – heximal

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