我想获取塔位置,为此我使用的是TelephonyManager,我正在获取位置区域代码,但我希望转换为字符串以显示位置。
TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation();
int cellid= cellLocation.getCid();
int celllac = cellLocation.getLac();
Log.d("CellLocation", cellLocation.toString());
Log.d("GSM CELL ID", String.valueOf(cellid));
Log.d("GSM Location Code", String.valueOf(celllac));
以下是代码,我在哪里获取位置区域代码,如何将其转换为字符串?
请帮助谢谢..
答案 0 :(得分:2)
LAC代码只是区域ovf覆盖范围位置的运营商标识符 - 没有算法等可以从它转换为GPS位置或街道地址。
存在包含映射单元ID到位置的数据库 - 例如,这是最着名的之一:
您需要记住这些只是查找服务,因此如果数据库中的信息丢失或错误,您将无法获得正确答案 - 即它不是基于LAC的任何算法映射。
还有一个Google MAP的API,可让您传递移动基站信息并接收GPS位置作为回应:
这是一项Web服务 - 您发送HTTPS POST消息并获得回复。在撰写本文时,基于上述链接的请求和响应的示例JSON使其非常清楚如何使用它:
请求JSON:
{
"homeMobileCountryCode": 310,
"homeMobileNetworkCode": 410,
"radioType": "gsm",
"carrier": "Vodafone",
"considerIp": "true",
"cellTowers": [
{
"cellId": 42,
"locationAreaCode": 415,
"mobileCountryCode": 310,
"mobileNetworkCode": 410,
"age": 0,
"signalStrength": -60,
"timingAdvance": 15
}
]
}
回应JSON:
{
"location": {
"lat": 51.0,
"lng": -0.1
},
"accuracy": 1200.4
}
您需要API密钥才能使用该服务 - 请参阅链接以获取详细信息。