0

我的雇主给了我一个毫微微蜂窝,目前我正试图弄清楚我的银河系是否可以访问毫微微蜂窝。由于我不能强制我的手机使用这个特定的单元,并且它总是自动使用可用的宏单元,所以我很难确定 femtocell 是否存在。

这是我到目前为止所尝试的。但它总是返回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的可用性?这让我发疯:/

4

2 回答 2

1

使用 CellLocation 查找小区 ID(基站 ID)。

尝试这样的事情

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 的网络扩展器进行了测试,返回的运营商名称是“网络扩展器”。

我使用的是三星 Note 3。当连接到毫微微蜂窝时,状态栏上会显示一个“主页”图标。

于 2013-12-24T17:04:26.737 回答
1

特别是在较旧的手机上,并不总是支持 getAllCellInfo()。尝试使用旧方法检索已连接基站的小区信息:

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation) telephonyManager.getCellLocation();
int cellid = cellLocation.getCid();
...

不幸的是,没有办法在三星设备上获取相邻的单元格。根据我的经验,您可以使用当前的 LG 手机获得最佳结果(并且可以使用 getAllCellInfo())。

于 2013-11-26T17:19:39.320 回答