我正在使用NFC Android编程,我想阅读Mifare Classic卡。有人知道如何读取这种卡片上的扇区吗?
我的问题是transceive()
方法。我不知道如何用它来阅读一个扇区
例如,阅读第1部分。
身份验证方法返回true,表示身份验证已完成。在身份验证之后,扇区应该为任何IO操作做好准备,但每当我使用readBlock()方法或者transmitive()方法时,我都会遇到IOException异常(“收发失败”)。 我找不到任何使用Mifare Classic的例子,所以我想知道是否可以用这个API阅读Mifare Classic。
亲切的问候。
答案 0 :(得分:8)
肯定可以使用此API阅读Mifare Classic - 我们有应用程序可以执行此操作。
如果您只是想读取卡片,则不需要直接使用transceive()
- 只需使用readBlock()
便捷方法即可。
常见的缺陷是认证是在扇区级别完成的,而读取是在块级别完成的。在Mifare Classic上,一个部门由几个街区组成。不幸的是,每个扇区的块数可能会有所不同,即使在同一张卡上也是如此。
使用MifareClassic.sectorToBlock(sector)
检索您进行身份验证的扇区的第一个起始块。然后,您可以阅读该扇区的所有块。可以使用MifareClassic.getBlockCountInSector(sector)
检索扇区中的块数。
如果它仍然不起作用,你可以发布一些代码吗?