0

我正在使用 NFC Android 编程,我想阅读 Mifare Classic 卡。有人知道如何从这样的卡上读取扇区吗?

我的问题是transceive()方法。我不知道如何使用它来读取扇区,例如读取扇区 1。

Authentication 方法返回 true,表示认证完成。身份验证后,扇区应该为任何 IO 操作做好准备,但每当我使用 readBlock() 方法或 transceive() 方法时,我都会遇到 IOException(“transceive failed”)异常。我找不到任何使用 Mifare Classic 的示例,所以我想知道是否可以使用此 API 阅读 Mifare Classic。

亲切的问候。

4

1 回答 1

9

使用此 API 阅读 Mifare Classic 肯定是可行的——我们有应用程序可以做到这一点。

transceive()如果您只想读取卡片,则不需要直接使用- 只需使用readBlock()便捷方法即可。

一个常见的缺陷是认证是在扇区级别完成的,而读取是在级别完成的。在 Mifare Classic 上,一个扇区由几个块组成。不幸的是,即使在同一张卡上,每个扇区的块数也可能不同。

用于MifareClassic.sectorToBlock(sector)检索您对其进行身份验证的扇区的第一个起始块。然后,您可以读取该扇区的所有块。可以使用 检索扇区中的块数MifareClassic.getBlockCountInSector(sector)

如果它仍然不起作用,您可以发布一些代码吗?

于 2011-04-11T15:04:48.290 回答