NfcF#transceiveのdataにはlengthも入れるべし
というどうでも良いところで詰まっていた私でした。アホす。
つまり、
res = nfcf.transceive(data);
のdataは、
// ※例としてRequest Serviceのカードコマンド
// <ノード数(1byte)> <システムコード(2byte)>
byte[] data = { 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0xcd, 0xab };
ではなくて
// ...
byte[] data = { 0x0d, 0x02, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x01, 0xcd, 0xab };
としなきゃいけないわけですね。resも同様にindexの0番目にlengthが入っています。ちなみにPollingはカード検知の段階でやってくれてるっぽいのでやらなくても大丈夫みたいです。
それにつけても先人の方々は偉大ですよ。あぁ、しにたくなってきた。あとコードの表示され方が酷いですね。
参考リンク
- Sony Japan | FeliCa | 法人のお客様 | 技術情報 …… FeliCaカードコマンドリファレンス。
- Androidで動く携帯Javaアプリ作成入門(38):AndroidアプリでNFCタグを読み書きするための基礎知識 (2/3) – @IT …… コラム欄を実践中。
- Advanced NFC | Android Developers …… Android公式ドキュメント。
- hiro99ma blog: NfcF.transceive()も何とか動いたが、課題も残る …… 「NfcF.transceive」で検索したら一番上にw
- mokemokechicken/Android_NFC_FelicaEdit …… コードを参照。
- nfc-felica …… コードを参照。