nfc

NFC测试

試著忘記壹切 提交于 2019-12-07 11:30:03
NFC功能点介绍 : NFC英文全称Near Field Communication,近距离无线通信。 NFC采用主动和被动两种读取模式,NFC应用模式分为三种: 1、NFC卡模式(被读模式,手机终端可以模拟成为一张普通的非接触卡被pos机读取,相当于银行卡、门禁卡、公交卡等,又可以支持客户端对SE的访问,实现SE中存储的银行卡、公交卡的余额读取、空中充值等功能), 2、读写器模式(主读模式,手机终端可以读取一张非接触卡或者一个非接触标签中的内容,相当于将NFC手机当做POS机去读取银行卡、公交卡、或者将NFC手机读取NFC定义的标签中的标准数据,如名片、海报等) 3、点对点模式(是指两个手机终端在近距离内通过触碰直接传递数据) 具有SE功能的NFC硬件结构 手机终端NFC功能由NFC Controller、NFC协议栈、SE、SE访问API、SE访问控制及AP访问SE芯片构成,其主要功能如下: 1、NFC Controller:即NFC芯片,实现NFC卡模拟、读写器、点对点模式所定义的模拟、数字协议的处理 2、NFC协议栈:配置NFC芯片工作模式并实现NFC Forum定义的各项标准 3、SE:即安全芯片,所有涉及敏感数据,加密运算等业务(如银行卡、公交卡)均需要单独安全芯片处理 4、SE访问 API:向客户端开发访问SE的接口,以实现余额读取、空中充值等功能 5、SE访问控制

NFC开发入门篇

﹥>﹥吖頭↗ 提交于 2019-12-07 11:29:50
之前做过一些关于NFC的项目,比如手机羊城通卡芯片的充值,粤通卡的充值(与微信的羊城通充值功能类似),NFC功能是需要硬件的支持的,不过现在越来越多手机支持NFC功能了,所以这里简单的介绍它的开发流程吧。 一、NFC简介 NFC(Near Field Communication)近距离无线通信技术。工作模式分为两种:卡模式(Card emulation)、点对点模式(P2P mode)。这里主要是介绍卡模式的的开发,卡模式的开发又分为机卡通道和非机卡通道两种,机卡通道就是手机卡里面集成了相关的芯片,一卡多用,卡离开手机之后无法工作,比如手机卡里面又附带羊城通的芯片的功能,这样既可以打电话又可以刷公交和地铁。非机卡通道就是卡和手机是分开使用的,就是平常使用单独一张公交卡一样。 二、开发流程 1、非机卡通道模式 (1)在AndroidManifest.xml中声明权限 < uses-permission android:name = ”android.permission.NFC” /> < uses-feature android:name = ”android.hardware.nfc” android:required = ”true” /> (2)在AndroidManifest.xml 中的activity中声明可以处理的NFC Tag。 当手机开启了NFC

深入分析RFID与NFC的关系

若如初见. 提交于 2019-12-07 11:28:15
这是一个看似简单,但是很让人困惑的问题,即使是在这个行业工作多年,有时也未必能很清楚地表述这两者之间的关联和区别。为了弄清这个问题,我们先从一个简单的图例开起说起 从上图可以非常清晰地看出,两者有很大的差别,同时又有交集。 起源 最早的RFID雏形可以追溯到二战,当时盟军雷达为了有效地进行敌我飞机识别,在雷达上加了一种无线电发射装置,雷达探测到飞机之后给飞机发送一段特定的无线电波,如果是自己的飞机则会回执一段无线电波,雷达接收到之后就可以判定为自己的飞机,如果没有回应则认为是敌方飞机。历经几十年的发展,根据用途的差异现已延伸出很多的频段。作用领域也从最早的单一物体识别延伸到近场支付等场景。 相比RFID来说NFC起步晚很多,大概是2003年前后,PHLIPS、SONY、NOKIA三大IT巨头聚在一块,在原有RFID的基础之上统一了一下并增加了一些特有的东西推出了NFC技术。 RFID分类 RFID的分类方式很多,例如按有源还是无源来分,按能量传递方式来分,本文只为了说清RFID与NFC的关系所以此处只讨论按频段来分。 根据作用领域不同,RFID分很多的频段,从低到高可分为: 1、低频 125K、134K 2、高频 13.56M 3、超高频 900M 4、微波 2.4G、5.8G 当然,这并不是所有的频率,只是我们日常接触得最多的几个而已。 需要注意的是900M、13.56M

浅聊NFC

谁说胖子不能爱 提交于 2019-12-07 11:27:58
在项目中使用到nfc是,聊一聊NFC的试用范围 通过项目中遇到的各种坑,认识到使用nfc传输只能传输较小的内容 比如只能传输小于100k的内容 当nfc传输大于200k时,会出现文件过大异常 然后查询资料找到一般通过nfc传输文件都是通过Android Beam实现 在传输文件中NFC的功能是进行蓝牙或者wifi连接,然后使用蓝牙或者wifi进行传输文件 对于nfc传输,一般看的的都是传输一段字符串,进行校验 nfc传输速度较慢,一般为10k/s左右 项目中遇到只有nfc而无蓝牙的情况 做出了一个传输文件的nfcDemo 实现是将文件转为Byte[] 使用字节流传输文件 然后在接收端将流转为需要的文件的过程 代码写的很随意,请见谅! 项目代码 import android.app.Activity; import android.app.AlertDialog; import android.app.PendingIntent; import android.content.ContentResolver; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content

android nfc intent-filter to show my application when nfc discover a tag

穿精又带淫゛_ 提交于 2019-12-07 05:49:40
问题 I am writing an app that works with NFC and MIFARE CARD. When my NFC device detect a card, it shows me the list of application that can use NFC, but my application is not mentioned. What I am missing on my android manifest file? <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> <application android:icon="@drawable/ic_launcher" android

CPU卡调试与发卡总结

和自甴很熟 提交于 2019-12-07 03:41:02
1、 CPU卡的操作步骤:寻卡-防冲突-选卡-ATS,前面三步和M1操作完全一样,属于ISO14443A前面三层的操作,ATS成功后就进入ISO14443A-4协议层了,也就进入了CPU卡的操作层。[喝小酒的网摘]http://blog.hehehehehe.cn/a/17513.htm 2、 PPS是可以不做的,只有RATS的返回值表明其接收能力大于PCD的发送即可。PPS用来设置通信时的波特率,通过RATS命令响应数据07 77 80 A0 02 47 56可以判断该卡仅支持106K波特率。所以PCD也没有通过PPS指令修改通信波特率的必要了。当然PPS指令重新按106K波特率设置一下也是可以 的,RATS以及后续的PCD指令都需要加上CRC的。 3、 ISO14443-4只规定到PPS指令,后续的指令都需要由CPU卡内部的软件COS来解释,所以卡片完成SELECT,通过RATS和PPS指令后,必须发COS支持的指令。发COS支持的指令一般都需要加CRC的。 4、 发送取随机数命令00 84 00 00 04,根据块格式规定,除了发送这个指令外,还要发送PCB和CID,即实际发送的字符是0A 01 00 84 00 00 04,0A01这两个字节必须加在每个指令字符串的前面,并且块号不能重复,即如果你连续2次取随机数,需如下发送:0A 01 00 84 00 00 04 ,0B

Android : Reading NFC tag in service class

时光怂恿深爱的人放手 提交于 2019-12-07 03:05:38
问题 I am working on an application where i need to read the data stored in NFC tag, by data i mean is simple integer values as such 0,1,2,3 and so. The functions to read the data from NFC works fine when it's in Activity class but i need to run the application in the background so even when application is not running in foreground i can read the data from the NFC. So i wrote a service class and moved the function from the Activity to the service class. But it didn't work. This is the

Android NFC java.io.IOException: Transceive failed

依然范特西╮ 提交于 2019-12-07 01:45:19
问题 I am working on an android application which can read and write on an NFC tag. I have no problem reading a tag which I already wrote something on, but when I use a blank tag I have difficulties reading the UID of the tag in the HEX code. I am using mifare classic tags and I read the UID directly in the hex with the readblock method. The strange thing is, it works perfectly on debugger mode where I get the UID. But when I am trying without debbuger I get the following exception: java.io

在重庆如何利用NFC给一卡通充值

蹲街弑〆低调 提交于 2019-12-06 19:58:25
本于写于2018年11月7日。若日后政策发生变化或一卡通充值方式发生改变,方法或将失效。 平时在重庆充值城市一卡通,许多人都会在地铁进出站口或者指定充值地点排队充值,显得比较耗时。并且要是发现自己在上公交时发现余额不足又没有零钱,这种充值方式的缺陷便更加明显。利用NFC,我们可以在任何地方给重庆一卡通充值,只要你有微信钱包,相信一定会比跑到指定地方用现金充值方便许多。 目前的充值条件 一个具备NFC功能的手机(具体情况可自行查询你使用的手机) 一张宜居畅通卡 (截至目前我只试过饭卡尺寸的,小号的暂时没有尝试过) “重庆市民通”APP 操作流程 打开“重庆市民通”APP,注册或登录账号。之后进入如下界面,选择NFC充值: 在手机设置中开启NFC功能(以三星S8轻奢版为例): 将宜居畅通卡放置手机背部,直至手机读卡成功: 选择充值数目: 选择充值方式(现只支持建行龙和微信支付): 选取某一支付方式(以微信为例),支付成功后切记点击“返回商家” 返回APP后,系统自动处理,充值完毕 正常情况下,宜居畅通卡的充值便已经成功。 来源: CSDN 作者: Sebastian- 链接: https://blog.csdn.net/qq_38250960/article/details/83820759

Transceive Failed on ISO15693 / Tag-it HF-I

旧城冷巷雨未停 提交于 2019-12-06 17:53:37
I have some ISO15693 / Tag-it HF-I Plus chips and need to write something on them. These chips are completly fresh, and i read now a ton of pdf's telling me all the same. But nothing work, and i get all the time the Transceive Failed error. I send these Data in the transceive command: Byte: <data> 0: 0x00 // pdf says the tag understands only flag = 0x00 1: 0x21 // write single block 2-10: ID // needs to be send for this tag, only supports addressed mode 11: 0x00 // Block ID, try to write to block 0 12-16: DATA // LSB First 17-18: CRC16 // do i need to send this? and if yes, LSB first? I tried