我创建了一个模拟gps位置的Android应用程序,它的作品非常适合大多数程序,如igo,waze,osmAnd,GPS状态等,但不适用于谷歌地图仍然显示我的实际位置。Android模拟位置不适用于谷歌地图
我禁用了gps和网络位置。
任何想法是为什么?如何解决它?由于
我使用的代码:
public void setLocation(double latitude, double longitude, double altitude, float bearing, float speed){
String PROVIDER_NAME = LocationManager.GPS_PROVIDER;
locationManager.addTestProvider(PROVIDER_NAME, false, false, false, false, true, true, true, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);
locationManager.setTestProviderEnabled(PROVIDER_NAME, true);
locationManager.setTestProviderStatus(PROVIDER_NAME, LocationProvider.AVAILABLE, null, System.currentTimeMillis());
Location location = new Location(PROVIDER_NAME);
location.setLatitude(latitude);
location.setLongitude(longitude);
location.setAltitude(altitude);
location.setBearing(bearing);
location.setSpeed(speed);
location.setTime(System.currentTimeMillis());
locationManager.setTestProviderLocation(PROVIDER_NAME, location.getLocation());
}
要使用你必须把你想用模拟物locations-工作它是一个单独的许可您的清单一个模拟的位置。你确定谷歌地图有这样的权限吗?它可能已经决定不有意使用模拟。 – 2013-02-25 16:11:24
感谢您的帮助。我想他们已经在其他模拟程序中使用它,比如在“伪造我的位置”的作品中。 – Arnold 2013-02-25 16:16:02
我的猜测是Google Map的活动/片段在被带到前台时采取行动,以避免成为欺骗场所的受害者。 模拟LocationProviders在系统范围内生效,这也意味着另一个应用程序可以删除您的应用程序添加的模拟提供程序。如果您在查看Google地图后返回Waze,那么Waze是否仍会收到您的模拟GPS位置更新? – 2013-02-27 23:13:09