上一篇提到用内容观察者通过来监听数据库变化获取GPS状态,其实在GPS状态或模式改变时,
会发出相应的广播LocationManager.MODE_CHANGED_ACTION,LocationManager.PROVIDERS_CHANGED_ACTION
这里贴出关键代码:
注册广播
IntentFilter filter = new IntentFilter();
filter.addAction(LocationManager.MODE_CHANGED_ACTION);
filter.addAction(LocationManager.PROVIDERS_CHANGED_ACTION);
mServiceBroadcast = new ServiceBroadcast();
registerReceiver(mServiceBroadcast,filter);
///接收广播并进行相应处理
String action = intent.getAction();
if(action.equals(LocationManager.MODE_CHANGED_ACTION) || action.equals(LocationManager.PROVIDERS_CHANGED_ACTION)){
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = manager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(gpsEnabled){
if(!Pedometer.isServiceStart(context,"")){
bindService(new Intent(PedometerService.this,GpsService.class),gpsconnection,Context.BIND_AUTO_CREATE);
}
}
}