使用 Cell Tower 的 Android 位置

Posted

技术标签:

【中文标题】使用 Cell Tower 的 Android 位置【英文标题】:Android location using Cell Tower 【发布时间】:2014-05-17 10:08:56 【问题描述】:

如何使用手机信号塔检索我的位置?当 GPS 和 Wifi 关闭时。

我知道我可以检索塔的 cellID,但是如何映射它以获取我当前位置的纬度和经度?

我不在乎位置是否准确。

我找到了一些 sn-ps,但似乎在使用 wifi。

【问题讨论】:

您只能从信号塔中找到 CellId 和 Location Area Code(LAC)。通过使用该值,您可以在互联网的帮助下找到纬度和经度。 【参考方案1】:
  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));

确保您在清单中拥有这些权限。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

如果您真的想要实际位置,请使用 httpclient 或使用您的 cellid 和 lac 查询 http://www.google.com/glm/mmap。示例在此处列出。 http://www.anddev.org/poor_mans_gps_-celltowerid-_location_area_code_-lookup-t257.html

【讨论】:

@Mohammad Ali,感谢您更新变量名称。没看出他们错了。 getCellLocation() is deprecated as of API 26: Android 8.0 (Oreo)

以上是关于使用 Cell Tower 的 Android 位置的主要内容,如果未能解决你的问题,请参考以下文章

使用 Pig 加载默认转储文件

Ansible Tower系列 四(使用tower执行一个命令)

Ansible Tower系列 三(使用tower执行一个任务)

Ansible Tower系列 二(安装 Tower)

为啥 Ansible-Tower 忽略了额外的变量?

Ansible Tower01