Как отобразить все доступные ячейки в галактическом нексусе (4.3)
Мой работодатель дал мне фемтосоту, и в настоящее время я пытаюсь выяснить, может ли моя галактическая связь получить доступ к фемтосоте. Поскольку я не могу заставить свой телефон использовать эту конкретную ячейку, и он автоматически всегда использует только доступные макро-ячейки, я не могу понять, присутствует ли фемтосота вообще.
Вот что я попробовал до сих пор. Но это всегда возвращается null
, что означает в android-docs, что мое устройство не способно использовать CellInfo-методы.
telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
List<CellInfo> cellInfo = telephonyManager.getAllCellInfo(); // returns null
List<NeighboringCellInfo> cellInfo = telephonyManager.getNeighboringCellInfo(); // returns null
затем
telephonyManager.getPhoneType(); // returns PHONE_TYPE_GSM
также я нашел эту цитату в другом сообщении:
Вывод: получение информации о соседних ячейках на Android в настоящее время является довольно грязным делом. Вам может понадобиться использовать комбинацию всех трех методов для получения необходимой информации, и даже в этом случае некоторые вещи могут быть недоступны.
Какой может быть третий вариант? У кого-нибудь есть заключение для галактической связи? У кого-нибудь есть другая идея, как я мог обнаружить доступность femto_cell? это сводит меня с ума: /
2 ответа
Используйте CellLocation, чтобы найти идентификатор ячейки (идентификатор базовой станции).
Попробуйте что-то вроде этого
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
CellLocation cl = tm.getCellLocation();
GsmCellLocation gsmLoc;
CdmaCellLocation cdmaLoc;
try {
gsmLoc = (GsmCellLocation) cl;
System.out.println("Cell id " + gsmLoc.getCid());
System.out.println("Lac - " + gsmLoc.getLac());
System.out.println("Psc - " + gsmLoc.getPsc());
} catch (ClassCastException e) {
cdmaLoc = (CdmaCellLocation) cl;
System.out.println("Base station ID - "+ cdmaLoc.getBaseStationId());
System.out.println("Base station Latitude - "+ cdmaLoc.getBaseStationLatitude());
System.out.println("Network Id - "+ cdmaLoc.getNetworkId());
System.out.println("System ID -"+ cdmaLoc.getSystemId());
}
System.out.println("Operator Name - "+ tm.getNetworkOperatorName());
Я проверил, используя сетевой расширитель Verizon, и вернулось имя оператора "Network Extender".
Я использовал Samsung Note 3. В строке состояния отображается значок "Домой" При подключении к фемтосоте.
Особенно на старых телефонах getAllCellInfo() не всегда поддерживается. Попробуйте использовать старые методы для получения информации о ячейке подключенной базовой станции:
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
int cellid = cellLocation.getCid();
...
К сожалению, нет способа получить соседние ячейки на устройстве Samsung. По моему опыту вы получаете лучшие результаты (и работаете getAllCellInfo()) с современными телефонами LG.