我有一个位置感知的Android应用,它使用FusedLocationApi进行位置管理。
当应用需要获取其位置时,它首先获取最后一个已知位置。如果位置不超过一分钟,则使用该位置,否则等待新的位置更新。
现在,当移动时,从位置A到B,我观察到以下行为。一旦我到达B,应用程序就会报告B的位置,这很棒,并且是预期的行为。但是,有时,应用程序很快就会报告A的位置。如果它已经将当前位置更新为B,那该怎么办呢?
答案 0 :(得分:0)
当你到达B时,它应该显示最后一个位置为" B" 但请确保您经常更新您的位置,您可以设置位置请求。
LocationRequest locationRequest locationRequest = new LocationRequest();
locationRequest.setInterval("4000"); //Interval
locationRequest.setFastestInterval("4000");//Fast Interval
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
答案 1 :(得分:0)
作为FusedLocationAPI结果的类位置具有getTime()函数。当您收到位置更新时,您可以使用getTime函数与前一个进行比较,以查看哪个更新。
答案 2 :(得分:0)
确保明智地使用这些参数。因为它会影响电池和应用程序的性能。
//update interval
setInterval(UPDATE_INTERVAL);
//Fastest interval
setFastestInterval(FASTEST_INTERVAL);
//Accuracy required
setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//Smallest variation in between locations
setSmallestDisplacement(MIN_DISTANCE_CHANGE_FOR_UPDATES);
由于您可能未设置setSmallestDisplacement
,因此可能会导致返回相同的旧位置。