2

我使用函数 onLocationChanged 来识别用户的位置,我希望它发生在手机的每一次移动Android

究竟何时调用该函数?

我的代码如下所示:

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);  
locationListener = new GPSLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);

GPS定位监听器:

public class GPSLocationListener extends DroidGap implements LocationListener 
{
  @Override
  public void onLocationChanged(Location location) {
      AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("onLocationChanged");
        AlertDialog alert = alt_bld.create();
        alert.show();
  }

@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 永远不会出现。

4

4 回答 4

2

根据此链接: http: //developer.android.com/reference/android/location/LocationListener.html#onLocationChanged (android.location.Location ) 每次位置更改时都会调用该方法。

根据我的观察,它背后有一些逻辑并且它不会每次都改变(例如,当新位置在旧位置附近并且准确性更差时)。

编辑:

“每一个小动作”最多可以是ACCURACY_HIGH ......我认为你不能比这更精确。参考:http: //developer.android.com/reference/android/location/Criteria.html#ACCURACY_HIGH

编辑 2:要使用 ACCURACY_HIGH 创建新的 Criteria 对象并使用设置器(setHorizontalAccuracy,...),然后像这样使用它

locationManager.requestLocationUpdates(locationManager.getBestProvider(locationCriteria, true), 1L, 2F, this);
于 2013-01-09T09:11:27.963 回答
1

这取决于发送到的参数:
requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener)

minTime - 位置更新之间的最小时间间隔,以毫秒为单位
minDistance - 位置更新之间的最小距离,以米为单位

LocationListener回调接收位置更新

请参阅此处了解更多信息。

于 2013-01-09T09:17:44.433 回答
0

从文档

requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)

关于minTime参数:

“通知的最小时间间隔,以毫秒为单位。此字段仅用作节省电量的提示,位置更新之间的实际时间可能大于或小于此值。”

public abstract void onLocationChanged (Location location)

Added in API level 1
Called when the location has changed.

There are no restrictions on the use of the supplied Location object.

Parameters
location    The new location, as a Location object.

如果这对您来说是个问题,如果没有经过一定的时间,您可以忽略对回调方法的调用。

希望对你有帮助

于 2013-01-09T09:14:54.583 回答
0

当位置改变时。当 GPS 接收器捕获新的位置详细信息时,该方法

onLocationChanged(Location location)

被自动调用。

于 2013-01-09T09:59:50.360 回答