0

我正在做一个应用程序,我想在互联网上查看一些信息,但我只想在设备移动X米时才这样做。例如,如果用户移动了 300 米,则调用服务器,如果没有,则不执行任何操作。但我认为我不能启动一项服务,一直在听 gps 坐标和计算距离,因为电池会很快耗尽。

我的问题是:Android 有什么方法可以启动服务或发送广播警告我 GPS 坐标已更改 X 米?

目前我有一个 AlarmManager,每 30 分钟获取一次 gps 坐标,但我需要更准确。

4

1 回答 1

1

使用LocationManager.requestLocationUpdates();方法;您可以指定应发送更新的最短时间(以秒为单位),以及更新前的最小计量数。

应该看起来像这样:

//以毫秒为单位
private final int MINIMUM_TIME_BETWEEN_UPDATES = 5000;

//以米为单位
private final int MINIMUM_DISTANCE_BETWEEN_UPDATES = 1;

LocationManager lManager =(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); 
LocationListener = listener = new LocationListener() {

          public void onStatusChanged(String provider, int status, Bundle extras) {           
}

          public void onProviderEnabled(String provider) {
          }


          public void onProviderDisabled(String provider) {
          }

          public void onLocationChanged(Location location) {
          }

      };

lManager.requestLocationUpdates(bestProvider, MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_BETWEEN_UPDATES, listener);

这将创建一个LocationManager具有指定位置提供商(GPS 或网络)、指定秒数和指定量表的数据。位置管理器将更新发送到`LocationListener。每当收到更新时都会调用 onLocationChanged。可以使用 LocationManager.getBestProvider() 找到 bestProvider 变量;和标准类。

于 2012-11-12T10:03:50.307 回答