android-x86でNFC開発
  電話は嫌いなので買いたくない篇

     2012年03月23日
今はやりのNFCといえば・・・
• NFCとモバイルの相性はよい
 – カードにもR/Wにもなれる
 – 持ち運べるのでタッチしやすい
• しかし・・・
 – NFC対応端末自体が少ない
 – スマートホンは買いたくないわ
  • 電話代が高くなる
  • 次に買い換えるとき、スマートホンからくらくホ
    ンか…
とはいえ、NFC開発はしたい
• 今のところ、NFCできるモバイルはAndroid
 – 他にもあるけど、Androidは手に入りやすい
  • FN APIはAndroid標準じゃないのでちょっと…
 – オープンソースなので、自分で解決しやすい
• では、残る問題は?
 – NFC端末がないので、動かせない
  • アプリを作ることまではできるのだが


ならば、NFC端末を作ればいいじゃな
         いの
なんてことは無理なので
• パソコンなら、手近にある
 – しかしAndroidエミュレータではNFCは動かな
   い
• パソコンで直接動くAndroid環境
 – android-x86プロジェクト
 – ICSに対応中(2012/02/27・・・ 4.0 RC1)


 これにPaSoRiをつければいいのでは?
やってみよう
• 開発ベース
 – Ubuntu 11.10 64bit
 – android-x86 4.0 RC1


• 実行環境
 – パソコン
    • VirtualBox上でISOファイルを動かす
 – NFC
    • Sony PaSoRi (RC-S370)
もくろみ
• PaSoRiの接続
 – USB Host機能があるので、それを使う


• PaSoRiで動かす
 – 標準では、PN544が動くようにしてある
 – packages/apps/Nfc以下を差し替える
   • ICSになって、ソースファイルの整理が進んでいる
     – PN544依存部分がまとめられている
目標
• まずはNfcFが動くこと
 – NFC-Fは環境もソフトも手に入りやすい
 – 余裕ができたらNfcAとNfcBに対応すればよい


• 3段階でやっていこう
  1. カードをかざしてインテントを投げるまで
  2. NfcFを使ったサンプルを動かす
    –   自分で作ってないものの方がよい
  3. NDEF対応
    –   NDEFはlibnfc-nxpがやっているので、自作せんといかん
    –   壁が高いので、ぼちぼちと
進行現状 (2012/03/11)
1. カードをかざしてインテントを投げる
 ⇒OK!
 – NfcService内でUSB Host機能を動かす
  •   普通だとユーザにUSB機器の認証を求めてくるの
      で、PaSoRiは強制的に許可デバイスにしておく
 – 定期的にポーリング
  •   0xFFFFのポーリングに成功したら0x12FC
      –   逆にした方がよいか?
  •   搬送波出しっ放しも格好が悪いので、終わった
      らすぐに無線停止させる
      –   あとでまずいことに気づく
進行現状 (2012/03/18)
2. NfcFを使ったサンプルを動かす
 – Kazzzさんのnfc-felica
   •   CommunicateThruEXが無応答
       –   ポーリング後、無線を止めていたため
           » 捕捉が途切れたのだろう
   •   CommunicateThruEXがエラー
       –   NFC-Fは先頭にデータ長があることを忘れていた
 – 深くは試していないが、特に問題もない
   •   OKとしよう
進行現状 (2012/03/20)
2. NfcFを使ったサンプルを動かす
 – アイオイさんのSmartTagSample
  •   extendedフレームを使っている
      –   私は面倒なので、対応してなかった・・・
      –   手を抜いて、CommunicateThruEXのみ暫定対応
  •   ST1020には転送された
      –   リトライを繰り返しているので、まだどっか足りてな
          い
          » 調査中!

android-x86でNFC開発(2012/03/23)

  • 1.
  • 2.
    今はやりのNFCといえば・・・ • NFCとモバイルの相性はよい –カードにもR/Wにもなれる – 持ち運べるのでタッチしやすい • しかし・・・ – NFC対応端末自体が少ない – スマートホンは買いたくないわ • 電話代が高くなる • 次に買い換えるとき、スマートホンからくらくホ ンか…
  • 3.
    とはいえ、NFC開発はしたい • 今のところ、NFCできるモバイルはAndroid –他にもあるけど、Androidは手に入りやすい • FN APIはAndroid標準じゃないのでちょっと… – オープンソースなので、自分で解決しやすい • では、残る問題は? – NFC端末がないので、動かせない • アプリを作ることまではできるのだが ならば、NFC端末を作ればいいじゃな いの
  • 4.
    なんてことは無理なので • パソコンなら、手近にある –しかしAndroidエミュレータではNFCは動かな い • パソコンで直接動くAndroid環境 – android-x86プロジェクト – ICSに対応中(2012/02/27・・・ 4.0 RC1) これにPaSoRiをつければいいのでは?
  • 5.
    やってみよう • 開発ベース –Ubuntu 11.10 64bit – android-x86 4.0 RC1 • 実行環境 – パソコン • VirtualBox上でISOファイルを動かす – NFC • Sony PaSoRi (RC-S370)
  • 6.
    もくろみ • PaSoRiの接続 –USB Host機能があるので、それを使う • PaSoRiで動かす – 標準では、PN544が動くようにしてある – packages/apps/Nfc以下を差し替える • ICSになって、ソースファイルの整理が進んでいる – PN544依存部分がまとめられている
  • 7.
    目標 • まずはNfcFが動くこと –NFC-Fは環境もソフトも手に入りやすい – 余裕ができたらNfcAとNfcBに対応すればよい • 3段階でやっていこう 1. カードをかざしてインテントを投げるまで 2. NfcFを使ったサンプルを動かす – 自分で作ってないものの方がよい 3. NDEF対応 – NDEFはlibnfc-nxpがやっているので、自作せんといかん – 壁が高いので、ぼちぼちと
  • 8.
    進行現状 (2012/03/11) 1. カードをかざしてインテントを投げる ⇒OK! – NfcService内でUSB Host機能を動かす • 普通だとユーザにUSB機器の認証を求めてくるの で、PaSoRiは強制的に許可デバイスにしておく – 定期的にポーリング • 0xFFFFのポーリングに成功したら0x12FC – 逆にした方がよいか? • 搬送波出しっ放しも格好が悪いので、終わった らすぐに無線停止させる – あとでまずいことに気づく
  • 9.
    進行現状 (2012/03/18) 2. NfcFを使ったサンプルを動かす – Kazzzさんのnfc-felica • CommunicateThruEXが無応答 – ポーリング後、無線を止めていたため » 捕捉が途切れたのだろう • CommunicateThruEXがエラー – NFC-Fは先頭にデータ長があることを忘れていた – 深くは試していないが、特に問題もない • OKとしよう
  • 10.
    進行現状 (2012/03/20) 2. NfcFを使ったサンプルを動かす – アイオイさんのSmartTagSample • extendedフレームを使っている – 私は面倒なので、対応してなかった・・・ – 手を抜いて、CommunicateThruEXのみ暫定対応 • ST1020には転送された – リトライを繰り返しているので、まだどっか足りてな い » 調査中!