您的位置:首页 > 移动开发 > Android开发

Android GPS状态改变与监听

2016-04-21 14:53 483 查看
/**
* 获取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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: