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() {

本文详细介绍了Android系统中WirelessSettings的NFC功能,包括NFC开关控制的NfcEnabler类,以及如何通过NfcAdapter获取NFC服务。关键涉及NfcAdapter的getServiceInterface()方法,该方法通过ServiceManager获取远程服务NfcService,并探讨了为何采用此方式以确保跨进程安全。同时阐述了如何通过NfcManager.getDefaultAdapter(Context context)获取NfcAdapter对象。
最低0.47元/天 解锁文章
3113

被折叠的 条评论
为什么被折叠?



