NXP が開発した NFC タグを Android アプリケーションで読み取ろうとしています。Android でタグを読み取ることができます: NXP のアプリともう 1 つが正しく読み取れます。
正確なタグ タイプは「ICODE SLI-L (SL2ICS50)」で、RF テクノロジは「タイプ V / ISO 15693」です (動作中のアプリから取得したデータ)。メモリは、それぞれ 4 ブロックの 2 ページで構成され、ブロックにはそれぞれ 4 バイトがあります。データ全体をメモリに保存したいだけです。
タグは Android のNfcV
クラスで処理する必要があり、タグのデータシートはこちらから入手できますが、 を使用した実際のコード例を見つけるのは困難NfcV
です。データシートで結論付けたいくつかのことを自分で試し、Google で見つけたこの PDFの通信サンプルを試しましたが、何も機能しません。
私のアクティビティ (NFC Foreground Dispatch を使用) で対応するメソッドは次のようになります。
public void onNewIntent(Intent intent) {
android.nfc.Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV tech = NfcV.get(tag);
try {
tech.connect();
byte[] arrByt = new byte[9];
arrByt[0] = 0x02;
arrByt[1] = (byte) 0xB0;
arrByt[2] = 0x08;
arrByt[3] = 0x00;
arrByt[4] = 0x01;
arrByt[5] = 0x04;
arrByt[6] = 0x00;
arrByt[7] = 0x02;
arrByt[8] = 0x00;
byte[] data = tech.transceive(arrByt);
// Print data
tech.close();
} catch (IOException e) {
// Exception handling
}
}
電話をタグに配置すると、メソッドは正しく呼び出されますtransceive()
が、オブジェクトのメソッドはNfcV
常に IOException: をスローしますandroid.nfc.TagLostException: Tag was lost.
。これは私が試したすべてのバイト配列の結果です (上記のものはおそらく正しいとは言えませんが、ここ数日で他の多くの配列を試しましたが、すべて同じ動作になりました。
インターネットで読んだところによると、間違ったコマンドをタグに送信したためにエラーが発生したと結論付けましたが、正しいコマンドを思い付くことができませんでした。何か案は?