Android时,正是onLocationChanged调用

在我看来,它被称为第一次活动开始,只是在onCreate之后,它似乎随机间隔调用,无论我是否移动?

无论如何,它只是自动调用,如果我在onCreate方法有这样的代码?

locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); 

是对的吗???

干杯,迈克。

Solutions Collecting From Web of "Android时,正是onLocationChanged调用"

您的问题最初不清楚,您的代码和标题不匹配。 我只给你的标题提供答案。

您必须为位置pipe理器注册位置侦听器,然后只有在注册位置侦听器时根据您提供的设置调用onLocationChanged()。

看下面的代码如何做到这一点。 我使用GPS提供商,您也可以使用任何提供商的基础上的标准。

 LocationManger lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, new LocationListener() { @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }); 

来到你的问题,onLocationChanged()将被调用,如果当前的位置更新不匹配最后一个已知的位置。

更新的位置将在每minTime(在我的情况下1000毫秒),以及如果设备移动minDistance(在我的情况下,0米)距离更改。

我希望你能理解这一点。

如果你想捕捉新的位置,你必须像这样注册一个LocationListener:

 LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); LocationListener listener = new LocationListener() { ... } locationManager.requestLocationUpdates(GPS_PROVIDER, intervall, distance, listener); 

随着intervall距离,你可以configuration:

  1. 如果intervall大于0,则LocationManager可能会在位置更新之间rest几毫秒
  2. 如果距离大于0,则只有当设备移动距离米时才会播放位置。

LocationListener注册后,LocationManager开始获取您的地理位置并调用onLocationChanged()。 如果距离很短,可能会在很短的时间内频繁地调用该方法。 根据intervall ,LocationManager将在之后rest。

我认为,当LocationListener被注册时,LocationManager将只开始工作。

希望有帮助…

干杯,托比

 public void onLocationChanged(Location location) 

一旦你的位置已经改变,上述方法会自动调用。