Android getBestProvider永远不会返回GPS

时间:2013-07-05 01:50:03

标签: android location location-provider

我一直致力于基于位置的应用。

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

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

但是,当我尝试在标签页上运行应用程序时,getBestProvider()即使启用了GPS提供程序也从未返回过。

S4有android 4.2.2,而标签有4.1.1,这可能是问题,如果不是,那是什么?

2 个答案:

答案 0 :(得分:2)

无论您使用GPS,NETWORK或哪种提供商,所有提供的工作都基于从本地(设备上)缓存获取位置的相同原则。

如果你想立即获得GPS,你需要破解系统来更新缓存,然后阅读它。在三星手机上需要这种黑客攻击。在HTC和其他型号上你不需要这个黑客。 我(幸运的是)找到了用黑客触发缓存更新的方法。

只需在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) {
    }
});

OR

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

答案 1 :(得分:1)

getBestProvider()不会总是返回GPS。因为GPS并不总是最好的供应商。标签是否连接到wifi?来自wifi的位置非常准确,因此如果您连接到wifi,可能会返回。

此外,您应切换到属于Google Play服务的新位置服务。使用保险丝位置提供商将消除管理提供商的所有麻烦,并为您提供最佳结果。