一部有nfc的手机,一张有nfc标签的卡
nfc(近距离无线通讯技术),是由非接触式射频识别(RFID)及互连互通技术整合演变而来,通过在单一芯片上集成感应式读卡器,感应式卡片和点对点通信的功能,利用移动终端实现移动支付,电子票务,门禁,移动身份识别,防伪等应用。
<强> 3 - 1在清单添加权限:强>
在xml里添加nfc的使用权限
& lt; uses-permission android: name=" android.permission。NFC "/祝辞
这个是限制安装权限,只给有nfc功能的手机安装(可选)
& lt; uses-feature android: name=" android.hardware。nfc“android:=" true "/祝辞
<强> 3 - 2 nfc的过滤方式有以下:强>
-
<李> ACTION_NDEF_DISCOVERED,李>
<李> ACTION_TECH_DISCOVERED,李>
<李> ACTION_TAG_DISCOVERED三种。过滤器的作用是过滤掉杂质,剩下的就是我们需要的了。这三种过滤方式可同时配置,可以比方成从上到下三层,只要是符合某一层过滤器要求的,过滤完就停止往下一层。李>
在活动的过滤器里面添加对应需要的权限:
ACTION_NDEF_DISCOVERED,
& lt; activity> … & lt; intent-filter> & lt;行动android: name=" android.nfc.action。NDEF_DISCOVERED”/比; & lt;/intent-filter> … & lt;/activity> >之前ACTION_TECH_DISCOVERED:
在& lt; project-root>/res/xml(自己新建xml文件夹)下新建一个nfc_tech_filter.xml文件,添加进你需要支持的标签类型。(下面的配置项可多选)。下列示例是支持与NfcA和Ndef技术的NFC标签匹配。
& lt;资源xmlns: xliff=" urn: oasis: names: tc: xliff:文档:1.2”比; & lt; tech-list> 祝辞& lt;资源; & lt; tech-list> & lt; !——& lt; tech> android.nfc.tech.IsoDep——比; & lt; tech> android.nfc.tech.NfcA & lt; !——& lt; tech> android.nfc.tech.NfcB——比; & lt; !——& lt; tech> android.nfc.tech.NfcF——比; & lt; !——& lt; tech> android.nfc.tech.NfcV——比; & lt; tech> android.nfc.tech.Ndef & lt; !——& lt; tech> android.nfc.tech.NdefFormatable——比; & lt; !——& lt; tech> android.nfc.tech.MifareClassic——比; & lt; !——& lt; tech> android.nfc.tech.MifareUltralight——比; & lt;/tech-list> & lt;/resources> & lt;/tech-list> & lt;/resources> & lt; activity> … & lt; intent-filter> & lt;行动android: name=" android.nfc.action。TECH_DISCOVERED”/比; & lt;/intent-filter> & lt;元数据 android: name=" android.nfc.action.TECH_DISCOVERED " android:资源=癅xml/nfc_tech_filter”/比; & lt;元数据android: name=" android.nfc.action.TECH_DISCOVERED " android:资源=癅xml/nfc_tech_filter”/比; … & lt;/activity> ACTION_TAG_DISCOVERED,可以添加如下权限 & lt; activity> ··· & lt; intent-filter> & lt;行动android: name=" android.nfc.action。TAG_DISCOVERED”/比; & lt;/intent-filter> ··· & lt;/activity> >之前<强> 3 - 3识别标签的顺序强>
1初始化nfc工具,判断是否存在nfc和nfc是否打开
2感应到nfc标签后,读取解析对应nfc类型的标签数据
3回传显示
代码如下:
公开课NfcActivity延伸活动{ 私有静态最终字符串标签=癗fcActivity”; 私人TextView tvNFCMessage; 私人PendingIntent mPendingIntent; 私人NfcAdapter mNfcAdapter; 私人按钮btnClean; @Override 保护空白>//初次判断是什么类型的NFC卡 公共静态NdefMessage [] getNdefMsg(目的意图){ 如果(意图==null) 返回null;//nfc卡支持的格式 标签标签=intent.getParcelableExtra (NfcAdapter.EXTRA_TAG); String [] temp=tag.getTechList (); (字符串s: temp) { 日志。我(标签,“resolveIntent标签:”+ s); } 字符串action=intent.getAction (); 如果(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(行动)| | NfcAdapter.ACTION_TECH_DISCOVERED.equals(行动)| | NfcAdapter.ACTION_TAG_DISCOVERED.equals(行动)){ Parcelable [] rawMessage=intent.getParcelableArrayExtra (NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage [] ndefMessages;//判断是哪种类型的数据默认为NDEF格式 如果(rawMessage !=null) { 日志。我(标签,“getNdefMsg: ndef格式”); ndefMessages=new NdefMessage [rawMessage.length]; for (int i=0;我& lt;rawMessage.length;我+ +){ ndefMessages[我]=(NdefMessage) rawMessage[我]; } 其他}{//未知类型(公交卡类型) 日志。我(标签,“getNdefMsg:未知类型”);//对应的解析操作,在Github上有 } 返回ndefMessages; } 返回null; }Android使用手机NFC的读取NFC标签数据的方法