android定位
开头
此文档主要介绍在android中的基本定位方式。
如何偷偷打开GPS
偷偷把GPS打开,这样就可以用GPS定位了。
当然不用GPS也可以通过网络或者基站信息等定位。
/**
* Toggles the state of GPS. Actually turn on the gps
*
* @param context
*/
private void toggleGps(Context context, boolean flag) {
ContentResolver resolver = context.getContentResolver();
boolean enabled = getGpsState(context);
if (enabled ^ flag) {
Settings.Secure.setLocationProviderEnabled(resolver,
LocationManager.GPS_PROVIDER, flag);
}
}
/**
* get the state of GPS location.
*
* @param context
* @return true if enabled.
*/
private static boolean getGpsState(Context context) {
ContentResolver resolver = context.getContentResolver();
boolean open = Settings.Secure.isLocationProviderEnabled(resolver,
LocationManager.GPS_PROVIDER);
if (originGpsState == null) {
originGpsState = open ? "open" : "close";
}
return open;
}
监听地理位置变化
这里主要介绍使用GPS和NET的方式。
这两种方式基本是一样的。
LocationManager locationManager;
locationManager = (LocationManager) mContext
.getSystemService(contextService);
String provider = LocationManager.GPS_PROVIDER;
// 5000: every 5 seconds
// 1: every 1 meters change.
locationManager.requestLocationUpdates(provider, 5000, 1,
gpsLocationListener, Looper.myLooper());
// Add NETWORK_PROVIDER
provider = LocationManager.NETWORK_PROVIDER;
locationManager.requestLocationUpdates(provider, 5000, 1,
netLocationListener, Looper.myLooper());
Looper.loop();