Android getBestProvider 从不返回 GPS

标签 android location location-provider

我一直在开发基于位置的应用程序。

我正在 Samsung Galaxy S4Samsung Tab 7 上进行测试。

当调用 getBestProvider() 时,如果启用它通常会返回 GPS,否则会返回网络,我的 Galaxy S4 就是这种情况。

但是,当我尝试在选项卡上运行应用程序时,getBestProvider() 从未返回 GPS 提供程序,即使它已启用也是如此。

S4 有 android 4.2.2 而选项卡有 4.1.1,这可能是问题所在,如果不是,那是什么?

最佳答案

无论您使用哪个提供商的 GPS、NETWORK 或最好的提供商,它们的工作原理都是相同的,即从本地(在设备上)缓存中获取位置。

如果您想要即时获取 GPS,您需要破解系统以更新缓存,然后读取它。在三星手机上需要这个 hack。在 HTC 和其他型号上,您不需要此 hack。 我(幸运的是)找到了通过 hack 触发缓存更新的方法。

只需在您的 getLastKnownLocation 之前调用以下代码。

<YourActivity>.getLocationManager().requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
        @Override
        public void onProviderEnabled(String provider) {
        }
            @Override
        public void onProviderDisabled(String provider) {
        }
        @Override
        public void onLocationChanged(final Location location) {
    }
});

使用 LocationClient。用于位置更新的新 API(刚刚推出)。这些 API 不需要您找到最好的提供者,而是在下面做所有这些事情。

关于Android getBestProvider 从不返回 GPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17480042/

相关文章:

java - 如何将整型变量传递给另一个类

android 从可用的最佳提供商处获取位置

android - 图像像素维度与字节数组长度的关系

swift - 如何使用 swift 在 iOS 中打开定位服务页面?

ios - 定位服务不在后台运行

rest - Elasticsearch:地理位置距离查询错误

android - RequestLocationUpdates with Pendingintent 以及如何获取位置提供者(GPS,网络)状态?

android - 为什么我不能通过编程在布局上设置 ImageView 的位置

android - 存储 Android View 的变量(按钮、TextView 等)