我有一项服务来模拟 GPS 位置,在坐标列表之间循环,但是 onLocationChanged() 方法只检测到 GPS 的第一个模拟。我的意思是,如果我启动一个 GPS 程序,它只会检测到我的服务的第一次调用,不介意它是列表的第一个位置还是最后一个位置,只检测它发出的第一个调用。
我确定我正在调用以更改我的服务中的坐标,因为我使用了 Toast 消息,但不起作用..
米码。首先我设置了 LocationManager
ls = new MyLocationListener();
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
lm.addTestProvider(Context.LOCATION_SERVICE, false, false,
false, false, true, true, true, 0, 5);
lm.requestLocationUpdates(Context.LOCATION_SERVICE, 0, 0, ls);
lm.setTestProviderEnabled(Context.LOCATION_SERVICE, true);
MyLocationListener 在方法 onLocationChanged() 中只有一条显示消息。然后我使用计时器定期调用该函数来模拟 GPS。
private void setMockLocation(double latitude, double longitude, float accuracy) {
Location newLocation = new Location(Context.LOCATION_SERVICE);
newLocation.setLatitude(latitude);
newLocation.setLongitude(longitude);
newLocation.setAccuracy(accuracy);
newLocation.setTime(System.currentTimeMillis());
lm.setTestProviderEnabled(mocLocationProvider, true);
lm.setTestProviderStatus(Context.LOCATION_SERVICE,
LocationProvider.AVAILABLE,
null,System.currentTimeMillis());
lm.setTestProviderLocation(Context.LOCATION_SERVICE, newLocation);
}
但它只适用于第一次调用,而不是下一次调用。
编辑
经过一些调查工作,我知道代码适用于 2.2 和 4.2。具有我需要使用的设备的版本是 4.0。我不知道为什么,但没有在那个版本中运行。有任何想法吗?