android NFC开发

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了android NFC开发脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、概述:Nfc蓝牙wifi是一种通信技

        牛逼1:通信的一方可以通过磁场供。无

        牛逼2:靠的近,不用搜、不用手工连接、不用输入密码。

二、难点:协议,这么多标准,一上来就说这个,完全没必要。

        所有通信:就是连接,发与收,断开。就像Linux万物皆文件。

我就简单协议分类:

    1.标准NDEF(主要)。     2.非标准NDEF:系统目前支持的Tag TECH:表1和表2。

表 1. 支持的标签技术

说明
TagTechnoLOGy这是所有标签技术类都必须实现的接口。
NfcA提供对 NFC-A (ISO 14443-3A) 属性和 I/O 操作的访问权限。
NfcB提供对 NFC-B (ISO 14443-3B) 属性和 I/O 操作的访问权限。
NfCF提供对 NFC-F (JIS 6319-4) 属性和 I/O 操作的访问权限。
NfcV提供对 NFC-V (ISO 15693) 属性和 I/O 操作的访问权限。
IsoDep提供对 ISO-DEP (ISO 14443-4) 属性和 I/O 操作的访问权限。
Ndef提供对 NDEF 格式的 NFC 标签上的 NDEF 数据和操作的访问权限。
NdefFormatable为可设置为 NDEF 格式的标签提供格式化操作。

表 2. 可选择支持的标签技术

说明
MifareClassic提供对 MIFARE Classic 属性和 I/O 操作的访问权限(如果此 AndROId 设备支持 MIFARE)。
MifareUltralight提供对 MIFARE Ultralight 属性和 I/O 操作的访问权限(如果此 Android 设备支持 MIFARE)。

三、工作模式:读卡器、仿真卡、点对点。比如手机可以读ic卡,当卡使用,与其它手机传文件

四、卡分类:IC卡、ID卡(只存ID)、M1卡和CPU卡。

五、标签调度系统:即刷卡自动启动对应的APP处理。

android NFC开发

六、开发步骤:

1.获取NFC权限/添加Intent过滤器

2.获取NFC适配器

3.捕获NFC Intent。intent.getAction()可判断是否是NDEF?具体看下面源码

是NDEF处理:不懂就一步步调试解析,对象里包含了所有信息。

非NDEF处理:

4.处理该Intent(获取信息Tag)

5.判断标签类型,并执行相关操作,核心函数: get(Tag tag)得到对象 ,connect()连接,transceive(byte[] data)发送接收,close()断开。

@override
	PRotected void onNewIntent(Intent intent) {
		suPEr.onNewIntent(intent);
		Log.d("NFCTAG", intent.getAction()); //刷卡的信息都在这里
		try {
			if (NfCADapter.ACTION_NDEF_DISCOVEred.equals(intent.getAction())) {
				Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
				if (rawMessages != null) {
					NdefMessage[] messages = new NdefMessage[rawMessages.length];
					for (int i = 0; i < rawMessages.length; i++) {
						messages[i] = (NdefMessage) rawMessages[i];
					}
					// Process the messages array.
					//...
				}
			} else {
				final Parcelable rawMessage = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
				if (rawMessage != null) {
					final Tag tag = (Tag) rawMessage; //ID and Supported tag technologies is here
					Log.d("NFCTAG", tag.toString());
					final IsoDep isodep = IsoDep.get(tag); //就可以根据支持的类型来收发数据了
					if (isodep != null) {
						isodep.connect();
						byte[] send_hex=new byte[]{0x00, (byte) 0xA4,0x04,0x00,0x0E,0x32}; //发的命令得卡支持才有响应,我这删几个字节
						byte[] recv_buffer = isodep.transceive(send_hex);
						String recv = "";
						for (int i = 0; i < recv_buffer.length; i++)
							recv += String.format("%02X ", recv_buffer[i]);
						Log.d("NFCTAG", "(" + recv_buffer.length + ")" + recv);
						isodep.close();
					}
				}
			}
		} catch (Exception e) {
			Log.d("NFCTAG", "error " + e);
		}
	}

android NFC开发

 简单吧。

脚本宝典总结

以上是脚本宝典为你收集整理的android NFC开发全部内容,希望文章能够帮你解决android NFC开发所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。