知道设备是否已移动并注册gps坐标

时间:2012-11-12 09:23:03

标签: java android gps

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

我的问题是:Android有什么办法启动服务o发送广播警告我gps coord已经改变了X米?

目前我有一个AlarmManager,每隔30分钟就可以获得gps坐标,但我需要更准确。

1 个答案:

答案 0 :(得分: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或网络),指定的秒数和指定的米数。 locationmanager将更新发送到`LocationListener。每当收到更新时都会调用onLocationChanged。可以使用LocationManager.getBestProvider()找到bestProvider变量;和Criteria类。

相关问题