0

我的问题是 Android NFC API 已经提供了“增量”和“减量”一个值块,但是如果我有一个新的 MifareClassic 标签(里面没有任何值块),我该如何使用 Android NFC API 来构造这个新标签上的值块?

4

1 回答 1

3

您应该只将格式正确的数据写入标签。有关示例,请参见MIFARE Classic 数据表的第 8.6.2 节。

value将整数作为值块存储在块中的示例 Android 代码blockIndex

// connect to the tag using a Tag object from an NFC intent
MifareClassic mifare = MifareClassic.get(tag);
mifare.connect();

// need to authenticate first to get access
int sector = blockToSector(blockIndex);
mifare.authenticateSectorWithKeyA(sector, keyA); // you need to know key A
// mifare.authenticateSectorWithKeyB(sector, keyB); // in case you know key B

// construct value block of value zero; "address" byte is set to 0 in this example
byte[] zeroValue = {0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 0, 255 };
mifare.writeBlock(blockIndex, zeroValue);

// increase the value block by some amount
mifare.increment(blockIndex, value);
// result is stored in scratch register inside tag; now write result to block
mifare.transfer(blockIndex);

请记住,需要正确设置块的访问控制位,以允许对用于身份验证的密钥进行增量操作。

于 2012-08-31T21:28:05.013 回答