Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 了解设备是否已移动并注册gps坐标_Java_Android_Gps - Fatal编程技术网

Java 了解设备是否已移动并注册gps坐标

Java 了解设备是否已移动并注册gps坐标,java,android,gps,Java,Android,Gps,我正在做一个应用程序,我想在互联网上查看一些信息,但我只想在设备移动了X米的情况下这样做。 例如,如果用户移动了300米,则向服务器打电话,如果没有,则什么也不做。但我想我不能启动一项服务,一直听gps的声音,计算距离,因为电池会消耗得太快 我的问题是:有没有办法让Android启动一项服务,发送一条广播警告我gps坐标已经改变了X米 目前我有一个AlarmManager,每30分钟获取一次gps坐标,但我需要更精确的信息。使用LocationManager.requestLocationUpd

我正在做一个应用程序,我想在互联网上查看一些信息,但我只想在设备移动了X米的情况下这样做。 例如,如果用户移动了300米,则向服务器打电话,如果没有,则什么也不做。但我想我不能启动一项服务,一直听gps的声音,计算距离,因为电池会消耗得太快

我的问题是:有没有办法让Android启动一项服务,发送一条广播警告我gps坐标已经改变了X米


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

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

应该是这样的:

//以毫秒为单位
私有最终整数更新之间的最小时间=5000

//以米为单位
私有最终整数更新之间的最小距离=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);

这将使用指定的位置提供程序(GPS或网络)、指定的秒数和指定的米数创建
LocationManager
。locationmanager将更新发送到“LocationListener”。每当收到更新时,都会调用onLocationChanged。可以使用LocationManager.getBestProvider()找到bestProvider变量;和Criteria类。

谢谢你的回答,我在更新之间的最小距离上传递0值,我认为你的解决方案应该是可行的。