我想知道如何在 Android 应用程序中通过没有 GPS 的网络提供商找到地理位置?
信号塔的三角测量究竟是如何在代码中实现的,以及如何获取信号塔的纬度和经度以通过
NETWORK_PROVIDER
获取准确位置?我在哪里可以找到实现此功能的源代码? (Android 是一个巨大的代码库,我不知道如何绕过它)。
我不能直接使用
LocationManager
或LocationProvider
或任何类或对象,因为我想在硬件中模拟此功能,所以我只想转换源具有相同功能的 C 代码。
最佳答案
很抱歉,谷歌还没有开源这部分代码。
可以看到LocationManagerService——它talks to a remote service使用 LocationProviderProxy。该实现在 KitKat 之前的发行版中的 NetworkLocation.apk 中,由 Google 在每部 Android 手机上提供。 (在 KitKat 中它在 Google Play 中)
KitKat 的相关包名:
private static final String NETWORK_LOCATION_SERVICE_ACTION =
"com.android.location.service.v3.NetworkLocationProvider";
Google 使用 WiFi 定位数据 + Cell ID 信息进行三角测量。
我想你想知道小区 ID 定位是如何发生的——从 2G 到 WCDMA 再到 LTE,有许多定位协议(protocol)。我想您会发现这份思博伦白皮书很有趣 - An overview of Hybrid Location technologies
关于仅限locationmanager的Android源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873009/