我正在做一个应用程序,我想在互联网上查看一些信息,但我只想在设备被移动 X 米时才这样做。 例如,如果用户移动了300米,则拨打服务器,如果没有,则不执行任何操作。但是我觉得我无法一直听到gps坐标和计算距离的服务,因为电池会快速耗尽。
我的问题是:Android有什么办法启动服务o发送广播警告我gps coord已经改变了X米?
目前我有一个AlarmManager,每隔30分钟就可以获得gps坐标,但我需要更准确。
答案 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类。