/**
* 获取GPS当前状态
* @param context
* @return
*/
private boolean getGPSState(Context context){
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
boolean on = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
return on;
}
/**
* 注册监听广播
* @param context
* @throws Exception
*/
public void ready(Context context)throws Exception{
IntentFilter filter = new IntentFilter();
filter.addAction(LocationManager.PROVIDERS_CHANGED_ACTION);
context.registerReceiver(new GpsStatusReceiver(), filter);
}
boolean currentGPSState = false;
/**
* 监听GPS 状态变化广播
*/
private class GpsStatusReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(LocationManager.PROVIDERS_CHANGED_ACTION)){
currentGPSState = getGPSState(context);
}
}
}
/**
* 改变GPS状态
* @param context
* @throws Exception
*/
public void changeGPSState(Context context)throws Exception {
boolean before = getGPSState(context);
ContentResolver resolver = context.getContentResolver();
if (before){
Settings.Secure.putInt(resolver,Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_OFF);
}else {
Settings.Secure.putInt(resolver,Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_HIGH_ACCURACY);
}
currentGPSState = getGPSState(context);
}
Android GPS状态改变与监听
最新推荐文章于 2024-07-30 16:01:56 发布