Кто-нибудь знает, как получить список сотовых башен в GSM и CDMA на Android.
Я пытаюсь использовать API Google Maps Locations: https://developers.google.com/maps/documentation/business/geolocation/
И я хочу получить информацию о ячейках со следующими полями:
- cellId: уникальный идентификатор ячейки. В GSM это идентификатор ячейки (CID); В сетях CDMA используется идентификатор базовой станции (BID).
- locationAreaCode: код зоны местоположения (LAC) для сетей GSM; В сетях CDMA используется идентификатор сети (NID).
- mobileCountryCode: Мобильный код страны (MCC) сотовой башни.
- mobileNetworkCode: код мобильной сети сотовой ячейки. Это MNC для GSM или системный идентификатор (SID) для CDMA.
- age: количество миллисекунд, поскольку эта ячейка была первичной. Если возраст равен 0, cellId представляет собой текущее измерение.
- signalStrength: Уровень радиосигнала измерен в дБм.
- 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"/>
Пожалуйста, помогите мне, спасибо.