删除 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