#java #android #location
#java #Android #Расположение
Вопрос:
Я пытаюсь создать макет службы GPS в приложении для Android. Я продолжаю сталкиваться со следующей ошибкой:
java.lang.IllegalArgumentException: incomplete location object, missing timestamp or accuracy?
Я не вижу, как мой объект location является неполным, поскольку у меня есть как временная метка, так и точность, установленные в объекте.
static LocationManager lm;
@RequiresApi(api = Build.VERSION_CODES.O)
private void setMock(String mocLocationProvider, double latitude, double longitude){
lm.addTestProvider(mocLocationProvider,
false,
false,
false,
false,
true,
true,
true,
1,
2);
Location loc = new Location(mocLocationProvider);
Location mockLocation = new Location(mocLocationProvider); // a string
mockLocation.setLatitude(latitude); // double
mockLocation.setLongitude(longitude);
mockLocation.setAltitude(loc.getAltitude());
mockLocation.setTime(System.currentTimeMillis());
mockLocation.setAccuracy(1);
mockLocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
mockLocation.setBearingAccuracyDegrees(0.1F);
mockLocation.setVerticalAccuracyMeters(0.1F);
mockLocation.setSpeedAccuracyMetersPerSecond(0.01F);
lm.setTestProviderEnabled(mocLocationProvider, true);
lm.setTestProviderLocation(mocLocationProvider, loc);
}
@RequiresApi(api = Build.VERSION_CODES.O)
public int onStartCommand(Intent intent, int flags, int startId) {
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
double[] rand_coords = random_location_generator();
rand_gen_lat = rand_coords[0];
rand_gen_long = rand_coords[1];
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE );
setMock(LocationManager.GPS_PROVIDER, rand_gen_lat, rand_gen_long);
setMock(LocationManager.NETWORK_PROVIDER, rand_gen_lat, rand_gen_long);
startMockLocationUpdates();
return START_STICKY;
}
Как вы можете видеть, я установил свою точность и временную метку, так почему я все еще получаю эту ошибку? Надеюсь, я предоставил достаточно информации для постановки правильного диагноза. Спасибо.
Комментарии:
1. Вы заполняете
mockLocation
, но на самом деле никогда не используете его — вы хотели использовать его вsetTestProviderLocation
вызове?2. @Andy Спасибо, я не могу поверить, что пропустил это!