0

私は NFC Android プログラミングを行っており、Mifare Classic カードを読みたいと思っています。そのようなカードからセクターを読み取る方法を知っている人はいますか?

私の問題はtransceive()方法です。たとえば、セクター1を読み取るなど、セクターを読み取るためにそれを使用する方法がわかりません。

認証メソッドは、認証が完了したことを意味する 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 に答える