有谁知道如何在 Android 上检索 GSM 和 CDMA 上的手机信号塔列表。
我一直在尝试使用 Google Maps Locations API: https ://developers.google.com/maps/documentation/business/geolocation/
我想通过以下字段获取手机信号塔信息:
- cellId:单元格的唯一标识符。在 GSM 上,这是 Cell ID (CID);CDMA 网络使用基站 ID (BID)。
- locationAreaCode:GSM 网络的位置区域代码 (LAC);CDMA 网络使用网络 ID (NID)。
- mobileCountryCode:手机信号塔的移动国家代码 (MCC)。
- mobileNetworkCode:手机信号塔的移动网络代码。这是 GSM 的 MNC,或 CDMA 的系统 ID (SID)。
- 年龄:自该单元成为主单元以来的毫秒数。如果年龄为 0,则 cellId 表示当前测量值。
- signalStrength:以 dBm 为单位测量的无线电信号强度。
- timingAdvance:定时提前值。
此代码并没有特别获取手机信号塔信息。
TelephonyManager tel = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// Type of the network
int phoneTypeInt = tel.getPhoneType();
String phoneType = null;
phoneType = phoneTypeInt == TelephonyManager.PHONE_TYPE_GSM ? "gsm" : phoneType;
phoneType = phoneTypeInt == TelephonyManager.PHONE_TYPE_CDMA ? "cdma" : phoneType;
try {
if (phoneType != null) {
params.put("radioType", phoneType);
}
} catch (Exception e) {}
/*
* The below code doesn't work I think.
*/
JSONArray cellList = new JSONArray();
List<NeighboringCellInfo> neighCells = tel.getNeighboringCellInfo();
for (int i = 0; i < neighCells.size(); i++) {
try {
JSONObject cellObj = new JSONObject();
NeighboringCellInfo thisCell = neighCells.get(i);
cellObj.put("cellId", thisCell.getCid());
cellList.put(cellObj);
} catch (Exception e) {}
}
if (cellList.length() > 0) {
try {
params.put("cellTowers", cellList);
} catch (JSONException e) {}
}
我设置这样的权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
请帮帮我,谢谢。