Как отобразить все доступные ячейки в галактическом нексусе (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.

Другие вопросы по тегам