Android 在不移动任何位置的情况下更改GPS坐标

Android 在不移动任何位置的情况下更改GPS坐标,android,Android,**我已经使用gps坐标通过位置更新来计算距离。但问题是,如果我站在同一个地方,坐标会发生变化,距离也会发生变化,而不会移动到任何地方。我想改变它只有当我已经移动了至少10米 我应该看看你写的代码。但是如果没有它,我可以说有一个函数,你可以调用它,它会每X毫秒给你一次位置更新。或者你可以得到最新更新的位置,同样,我应该看到你的代码 更新: 换行 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0L, 0.0

**我已经使用gps坐标通过位置更新来计算距离。但问题是,如果我站在同一个地方,坐标会发生变化,距离也会发生变化,而不会移动到任何地方。我想改变它只有当我已经移动了至少10米


我应该看看你写的代码。但是如果没有它,我可以说有一个函数,你可以调用它,它会每X毫秒给你一次位置更新。或者你可以得到最新更新的位置,同样,我应该看到你的代码

更新:

换行

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0L, 0.0f, this);

移动10米后,您将收到更新


第二个参数是以毫秒为单位的时间,第三个参数是最小距离。但这并不意味着您将在请求的时间或请求的距离获得准确的更新,而是关于它的更新。

您可以使用android market上的位置欺骗应用程序,并指定欺骗位置的持续时间,以及距离。

//在类上初始化的先前速度的公共或类变量。 //浮动速度

public void onLocationChanged(Location location) {
   // TODO Auto-generated method stub

   new_latitude=location.getLatitude();
   new_longitude=location.getLongitude();

   float speed = location.getSpeed();
   //You could also use location.hasSpeed(), which is a boolean, but it almost 
   //always returns True

   if(speed > DESIRED_LIMIT && previousSpeed > DESIRED_LIMIT){

      lat1=new_latitude;
      lon1=new_longitude;

   }

   previousSpeed = speed;
}

差不多吧。这种情况没有得到很好的优化或设计。但这就是如何从定位对象获得GPS速度。您可以调整速度限制或整个条件以获得最佳效果。或者在监视器中添加更多的速度历史记录

对locationChanged事件的接收者进行筛选。计算距离后,忽略小于10米的结果。@Gjordis:-谢谢您的重播,但在我的应用程序中,我是根据每秒的频繁位置计算距离的。当我在没有停止移动的情况下从一个位置移动到另一个位置时,它显示了正确的距离。但这里的问题是,如果我想在任何地方等待,比如交通信号灯,那时候它也在计算距离。我已经在上面添加了我的代码。请帮忙。提前谢谢。您可以使用GPS速度来确定您是否正在移动。比较两个连续的GPS速度值将给出比只检查一个更可靠的结果。因为当坐标根据GPS信号质量“振动”时,当静止不动时,GPS速度也可能显示一些东西。但比较两个值会减少这种“静态”。但这并不能完全解决问题。例如,SportsTracker也遇到了同样的问题,@Gjordis:-你能帮我编写GPS速度代码并比较两个连续的GPS速度值吗?@SajjadHeydari-我已经通过添加代码编辑了我的问题。请帮帮我。提前谢谢。@SajjadHeydari-刚才我在我的设备上试用过,但它显示的距离是1.71公里,在5分钟内,任何地方都不移动。我想要的是,它必须只计算我移动时的距离,在我不移动时停止计算。这可能是因为你使用了最后一个已知的位置,我认为这是在1.71公里之外使用的。您可以在按下按钮时请求更新。在我按下按钮后,Runnable正在工作。所以,在我按下按钮之后,更新也会发生。位置策略有什么用吗。那么,我们如何使用定位策略呢?考虑到您的需求,Sajjiad的答案可能更好,但当以低速移动时,与以前位置相差10米的绝对限制可能会限制您获得的更新量。我认为他的答案可能更容易实现,但我仍然面临着同样的问题。我的代码中的定位策略是否有用。那么,我们如何使用定位策略呢。
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0L, 10.0f, this);
public void onLocationChanged(Location location) {
   // TODO Auto-generated method stub

   new_latitude=location.getLatitude();
   new_longitude=location.getLongitude();

   float speed = location.getSpeed();
   //You could also use location.hasSpeed(), which is a boolean, but it almost 
   //always returns True

   if(speed > DESIRED_LIMIT && previousSpeed > DESIRED_LIMIT){

      lat1=new_latitude;
      lon1=new_longitude;

   }

   previousSpeed = speed;
}