获得所有蜂窝塔的CID,LAC和信号强度

alb*_*tor 5 java android gsm cellid signal-strength

目前,我正在使用网络中的单元格来实现我的Android.它比我想象的还要准确.但不如我想要的那么准确.所以我想要涉及比getNeighboringCellInfo更多的塔.我想得到每个塔的范围内的Cell ID和信号强度.每个网络运营商.有没有办法"ping"塔,所以他们用cellID,Lac和signalstrength回答?不知怎的,这必须是可能的.我可以扫描2G和3G(和4G)并行吗?或者我可以以编程方式在它们之间切换?有什么建议?希望我足够清楚......

Sim*_*Liu 2

似乎TelephonyManager并且getNeighboringCellInfo()正是您正在寻找的。

这是一个简单而直接的示例:

/* first you wanna get a telephony manager by asking the system service */
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

/* then you can query for all the neighborhood cells */
List<NeighboringCellInfo> neighbors = tm.getNeighboringCellInfo();

/* here's something you can get from NeighboringCellInfo */
for (NeighboringCellInfo n : neighbors) {
    Log.v("CellInfo", "" + n.getCid());
    Log.v("CellInfo", "" + n.getLac());
    Log.v("CellInfo", "" + n.getPsc());
    Log.v("CellInfo", "" + n.getRssi());
}
Run Code Online (Sandbox Code Playgroud)

确保在清单文件中包含所需的所有权限,例如ACCESS_COARSE_LOCATIONREAD_PHONE_STATE,具体取决于您将使用的 API,否则它会崩溃。

哦,顺便说一句,这只适用于 2G。3G及以上不支持此类操作。