18

新しい 2.3.3 SDK には改善された NFC サポートが含まれており、これに依存するアプリを作成したいと考えています。最終的に、フィールドに同時に入る複数のタグからデータを読み取れるようにしたいのですが、Android はフィールドに入る最初のタグでのみトリガーされるようです - 後続のタグは無視されます。

私が使用しているタグ (Mifare Classic) の NFC 仕様 (ISO/IEC 14443-3) を読むと、「停止」コマンドをタグに送信できるはずです。フィールド内の次のタグを読み取ります。Android では、いずれのサブクラスでも停止コマンドを直接サポートしていないため、TagTechnologyを使用して自分で直接送信してみtransceive(new byte[] {0x50, 0x00})ました。IOExceptionこれにより、「送受信に失敗しました」というメッセージがスローされます。

確かに、私はメインスレッドからこれをすべて行っていますが、これは悪い考えだと理解していますが、コンセプトをできるだけ簡単にテストしたいだけです.

フィールド内で同時に複数のタグと通信することはできますか? 私は何を間違っていますか?

4

3 に答える 3

8

残念ながら、あなたが望むことは、あなたがかなり高度なハッカーをしない限り、現時点では不可能です.

transceive()おそらく、現在やろうとしているように、 で正しいバイトを送信すると、カードを停止できます。しかし、停止 (または、送信しようとしている HLTA) は ISO14443-3A コマンドであるため、これは「暗号化された」パイプを使用する MifareClassic インターフェイスでは機能しません。残念ながら、NfcA インターフェイスを介した直接送信は、現在のスタックでも機能しません。

カードを停止できたとしても、電話の NFC チップが新しいタグのポーリングを自動的に再開することはありません。これは、スタックを「回っている」ためです。

于 2011-04-11T15:35:26.533 に答える
1

私の短い経験によっては、複数のタグを操作することはできません。フィールドに 2 つのタグがあり、タグから ID を受信しない場合は、バイナリ ゼロです。したがって、この時点で、アクセスできるタグは 1 つだけであり、フィールドには 1 つしかアクセスできないと思います。

于 2011-03-16T08:43:27.820 に答える
0

読み取りブロック (0x30、0x(ブロック)) や認証セクター コマンドなど、送受信を使用した他のコマンドの送信に成功しましたか? そもそもトランシーバーを正しく使用していることを確認したいと思うかもしれません。

于 2011-03-13T22:20:16.980 に答える