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