作为一个编码新手,这是我的第一个问题,如果它的边缘有点粗糙而且代码不是史诗,那就道歉了。
我在Android中嘲笑位置,我能够成功模拟GPS_PROVIDER。但是,当我的模拟应用程序未运行时,该位置不会返回到用户的实际位置。有没有办法停止模拟位置,以便真正的GPS位置返回并正常更新?
我用来模拟位置的代码是(从活动中提取):
try
{
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 50, 0, lis);
lm.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, Criteria.POWER_LOW, Criteria.ACCURACY_FINE);
loc = new Location(LocationManager.GPS_PROVIDER);
loc.setLatitude(51.5219145);
loc.setLongitude(-0.1285495);
loc.setTime(System.currentTimeMillis());
loc.setAccuracy(10);
loc.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
loc.setTime(System.currentTimeMillis());
loc.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
lm.setTestProviderLocation(LocationManager.GPS_PROVIDER, loc);
}
}, 0, 2000);
}catch(SecurityException e){
e.printStackTrace();
}
我尝试使用以下方法删除模拟的位置提供程序:
lm.setTestProviderEnabled(LocationManager.GPS_PROVIDER, false);
lm.clearTestProviderLocation(LocationManager.GPS_PROVIDER);
if (lm.getProvider(LocationManager.GPS_PROVIDER) != null){
Log.i("REMOVE", "test provider");
lm.removeTestProvider(LocationManager.GPS_PROVIDER);
}
上面确实运行但似乎没有做任何事情。我怀疑我已经替换了默认的位置提供程序。有没有办法恢复它?我很感激您提供的任何建议。感谢。
答案 0 :(得分:1)
lm.removeTestProvider(LocationManager.GPS_PROVIDER);
删除提供商时,只需让Gps接收新的位置,然后就可以修复。你可以测试一下