如果需要监听wifi、蓝牙个状态变化,可以通过原生方式来监听,google原生源码里面用的就是广播机制。
wifi监听广播:
private IntentFilter mWifiStatusIntentFilter=new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED");
private String WIFI_STATE_CHANGED = WifiManager.WIFI_STATE_CHANGED_ACTION;
private BroadcastReceiver mWifiStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (WIFI_STATE_CHANGED.equals(action)) {
// wifi status
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_DISABLED);
// sutatus on
if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
}
// sutatus off
else if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
}
}
}
};
蓝牙监听广播:
private static int BLUE_TOOTH_STATUS_TURNING_ON = 11;
private static int BLUE_TOOTH_STATUS_ON = 12;
private static int BLUE_TOOTH_STATUS_OFF = 10;
private static int BLUE_TOOTH_STATUS_TURNING_OFF = 13;
private IntentFilter mBlueToothIntentFilter=new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
private String BLUETOOTH_STATE_CHANGED = BluetoothAdapter.ACTION_STATE_CHANGED;
private BroadcastReceiver mBlueToothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (BLUETOOTH_STATE_CHANGED.equals(intent.getAction())) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
//todo when state update
}
}
};