删除模拟GPS提供程序无法恢复真实GPS

时间:2014-02-21 09:01:01

标签: android gps android-location

我正在编写一个程序,在许多方面,它使用来自辅助源的GPS数据。我一直在使用Mock Location API实现这个:

LocationManager locationManager = ...

locationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, false, true, true, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
locationManager.setTestProviderStatus(LocationManager.GPS_PROVIDER, LocationProvider.AVAILABLE, null, System.currentTimeMillis());

Location location = ...
location.setLatitude(...);
location.setLongitude(...);
... // etc.
locationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, location);

好消息:这很棒!有聚会,五彩纸屑和一个游行乐队。坏消息:如果我决定再次使用主GPS源,删除这个模拟似乎不起作用;相反,我没有得到任何新的GPS更新。就好像通过添加模拟来禁用主要GPS源并删除模拟从未将其重新打开。

locationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false);
locationManager.clearTestProviderEnabled(LocationManager.GPS_PROVIDER);
locationManager.clearTestProviderLocation(LocationManager.GPS_PROVIDER);
locationManager.removeTestProvider(LocationManager.GPS_PROVIDER);

是否需要执行另一个步骤才能恢复主要GPS源?

1 个答案:

答案 0 :(得分:0)

问题原来是第三方组件行为不端。我希望我可以发布代码说明发生了什么变化,但我个人没有改变,所以实际问题与Android API无关。