删除 Mock GPS Provider 不会恢复 Real GPS

Posted

技术标签:

【中文标题】删除 Mock GPS Provider 不会恢复 Real GPS【英文标题】:Removing Mock GPS Provider does not restore Real GPS 【发布时间】:2014-03-22 16:32:29 【问题描述】:

我正在编写一个程序,其中包括使用来自辅助来源的 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】:

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

【讨论】:

以上是关于删除 Mock GPS Provider 不会恢复 Real GPS的主要内容,如果未能解决你的问题,请参考以下文章

无法通过 LocationManager.GPS_PROVIDER 获取 GPS 坐标

LocationManager 他的 Network_Provider 不会启用

使用带有 GPS 提供程序的 requestLocationUpdates 永远不会调用 onLocationChanged

使用 GPS_PROVIDER 和 NETWORK_PROVIDER 获取当前位置的问题

GPS_PROVIDER 的位置

Android 应用程序中的 GPS_PROVIDER 错误