NFC:全称是近场通信(Near Field Communication),是一种短距离无线技术
Android Beam是一个基于近场通信所做的新功能,这个功能可以为其他手机分享你正在使用的功能。 Android升级到4.1后,Android Beam现在可以在两台支持NFC的Android设备间分享照片和视频,还可以与支持NFC的蓝牙设备相连。
Android NFC同时支持三个主要的操作模式:
1.设备读/写模式,允许NFC设备的读/写NFC目标设备;
2.P2P模式,使NFC设备与其他NFC节点交换数据;这种运作模式被使用在Android Beam中;
3/卡仿真模式,使NFC设备本身作为一个NFC卡。然后模拟NFC卡可以通过一个外部的NFC读写访问,如销售终端NFC点。
<uses-permission android:name="android.permission.NFC"/>
外获取NFC设备数据需要在<activity/>内添加如下内容
- <intent-filter>
- <action android:name="android.nfc.action.TECH_DISCOVERED"/>
- </intent-filter>
-
- <meta-data
- android:name="android.nfc.action.TECH_DISCOVERED"
- android:resource="@xml/nfc_tech_filter"/>
nfc_tech_filter是在res/xml文件下的自定义xml文件:
- <?xml version="1.0" encoding="utf-8"?>
-
- <resources>
- <tech-list>
- <tech>android.nfc.tech.IsoDep</tech>
- </tech-list>
- <tech-list>
- <tech>android.nfc.tech.NfcA</tech>
- </tech-list>
- </resources>
2.三种模式的Demo运行
NFC的数据NfcAdapter来管理的,NfcAdapter有两种途径获取
NfcManager manager=(NfcManager)getSystemService(Context.NFC_SERVICE); NfcAdapter adapter= manager.getDefaultAdapter();
这是通过NFCmanager获取,

NfcManger的构造器 也是通过NcfAdapter.getNfcAdapter(Context)获取adapter的实例。
同理:我们也可以直接获取NfcAdapter,不通过NfcManger来获取。
NcfAdapter adapter=NfcAdapter.getDefaultAdapter(Context context)

这个adapter其实也是需要通过NfcManager来获取,直接调用静态方法,针对不熟悉getSystemService来说,可以直接使用封装现成的。
adapter的内部会有一个:
static HashMap<Context, NfcAdapter> sNfcAdapters = new HashMap(); //guard by NfcAdapter.class
,所以NFC是独立于Activity,因为adapter内部有一个静态变量,会把当前山下文使用的nfcadapter缓存起来。