Android Settings中包含有无线通信功能,其中有NFC,蓝牙,wifi等部分。最近看了和NFC有关的部分逻辑代码。做一个大概的记录。
首先是WirelessSettings结构图:
NFC的开关控制
NfcEnabler.java
NfcEnabler类就是对NFC进行开关状态管理的类
关键属性:
SwitchPreference mSwitch; //代表NFC这个SwitchPreference选项
PreferenceScreen mAndroidBeam; //代表AndroidBeam这个PreferenceScreen
NfcAdapter mNfcAdapter; //NfcAdapter适配器
mBeamDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(context,
UserManager.DISALLOW_OUTGOING_BEAM,UserHandle.myUserId()); //根据UserManage判断当前用是人否可以用AndroidBeam
主要方法:
handleNfcStateChanged(int newState) //newState是mNfcAdapter.getAdapterState():NfcAdapter.STATE_OFF,NfcAdapter.STATE_ON, STATE_TURNING_ON,STATE_TURNING_OF。根据newState来对 mSwitch,mAndroidBeam设置
// 一个对nfcAdapter的state改变的广播监听来调用handleNfcStateChanged方法
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {