1. 相关知识简介
通过LocationManagerService可以获取位置,这个service的aidl文件在frameworks/base/location/java/android/location/里,从LocationManager.java可以看到应该如何调用它。在定位的时候需要指定采用哪种provider,常用有三种:
LocationManager.GPS_PROVIDER 精确定位,精度在十几米内
LocationManager.NETWORK_PROVIDER 粗略定位,精度在上百米
LocationManager.PASSIVE_PROVIDER 悄悄定位,也就是不启动定位,但是当别的应用使用gps/network定到位了就会把location告诉给它
要使用LocationManagerService,首先需要获取到LocationManager,然后通过这个LocationManager执行启动定位、关闭定位等操作。
import android.location.LocationManager;
private LocationManager mLocationManager;
mLocationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
接下来看下通过LocationManager启动定位的方法:
public void requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
public void requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent)
public void requestLocationUpdates(long minTime, float minDistance, Criteria criteria, PendingIntent intent)
minTime - 最小时间,单位毫秒,
如果本次得到的location离上次的location时间间隔小于minTime,那么LocationManagerService就不会把这个location报告给我们