nfc-felica アップデート

nfc-felicaをアップデートしました。
nfc-felica - android 2.3 nfc access felica command

※なお、今回のアップデートに関しては、以前にコメント頂いたちきん(mokemokechicken)さんのコードをいくつか参考にさせて頂きました。
AndroidのNFC機能でFeliCaの読み書きをする (ゆめ技:ゆめみスタッフブログ)
ちきん(mokemokechicken)さん、ありがとうございました。


以下変更点。

nfc-felica
    • NFCFeliCaReader

FeliCa Liteの読みこみ/書き込みに対応しました。
FeliCa Liteのデータの書き込みのため、FeliCaLiteWriterアクティビティを追加しました。

    • FeliCa Liteの読み込み/書き込みの様子

タグ・ディスカバリのインテント処理時にFeliCaFeliCa Liteを自動的に判別します。FeliCa Liteの場合、IDm、PMmの他に、MC(MemoryConfigurationBlock)領域のダンプを行います。


FeliCa Liteで書き込みが可能な場合、「書き込み画面」ボタン押下でこの画面に遷移します。この画面(FeliCaLiteWriter)では、読み書き可能なブロックとして開放されているS_PAD(スクラッチパッド)領域のアクセス属性(R/W又はRO)と、格納されているデータをListViewに表示します。


アクセス属性がR/W(リード/ライト)のブロックに対応した行をタップすると、EditTextビューに現在のデータを表示して編集することができます。16バイト以内のデータを入力して「書きこみ」ボタンを押下することでFeliCa Liteデバイスの選択されているブロックにデータを実際に書き込みます。(UTF-8エンコードするので日本語もOKです)


書きこまれたデータが反映されています。


最初の画面(NFCFeliCaReader)に戻って再読込を行うと、書き換えたデータが読み込まれていることが分かります。(ブロックデータ、という見だしで16進数でダンプされている部分がそうです)


nfc-felica-lib
    • FeliCa仕様とNfc仕様を分離するためnet.kazzz.nfcパッケージを追加しました
    • FeliCaLibクラスからリフレクションを用いているコードをNfcWrapperに分離しました。※
    • FeliCaLibクラスにMemoryConfigurationBlockクラスを追加しました
    • FeliCaクラスをFeliCaTagクラスに変更しました。
    • FeliCaLiteTagクラスを追加しました。(polling、readWithoutEncryption、writeWithoutEncryptionメソッドを実装)
    • FeliCaTagクラス、FeliCaLiteTagクラスのルートとしてNfcTagクラスを追加しました。
    • net.kazzz.felica.commandパッケージに WriteResponseクラスを追加しました。
    • net.kazzz.utilパッケージを追加、IPredicateインタフェース及びFinder等のユーティリティを追加しました
    • その他細かいバグFix
動作確認

ライブラリィの動作確認には以下の機器を使用しています。

  ・ NFCリーダ/ライタ
   Google Nexus S ( android 2.3.2, Build GRH78C)


  ・ FeliCa PICC
   PASMO (自分で使用している定期券)


  ・ FeliCa Lite PICC
   FeliCa Liteカード RC-S886
   FeliCa Liteシール RC-S701


以上です。

android 2.3.3以降、@hideアノテーションが取れてリフレクションが不要になった際に取り除かれることを前提にしています。

追記: git版の同期が完了しました。(https://github.com/Kazzz)