0

私の質問は、Android NFC API が値ブロックを「インクリメント」および「デクリメント」することを既に提供しているということですが、新しい MifareClassic タグ (内部に値ブロックがありません) がある場合、Android NFC API を使用して構築するにはどうすればよいですか?この新しいタグの値ブロック?

4

1 に答える 1

3

適切にフォーマットされたデータをタグに書き込むだけです。例については、 MIFARE クラシック データシートのセクション 8.6.2 を参照してください。

整数valueを値ブロックとして blockに格納する 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 に答える