6. NFCとは
• Near Field Communication
• 13.56MHz帯を使った近距離無線通信
o FeliCaやMIFAREなど
• 搬送波を使ってカードに給電する
o http://www.youtube.com/watch?v=xoQcdOux5rg
• NFC Forumで仕様策定
o http://www.nfc-forum.org/home/
• ISO/IEC 18092(NFC-IP1),ISO/IEC 21481(NFC-IP2)…
• NFC Lab WIki
o https://sites.google.com/site/nfclabo/
8. NFCの3つのモード
• Card Emulation Mode
o まるでカードのように振る舞う
• R/W(Reader/Writer) Mode
o カードを読みこむ
o カードに書き込む
o NDEF(NFC Data Exchange Format)
o RTD(Record Type Definition)
• P2P(Peer-to-Peer) Mode
o 端末同士でデータのやり取りをする
o DEP(Data Exchange Protocol)
• NFC-DEP
o LLCP(Logical Link Control Protocol)
• SNEP(Simple NDEF Exchange Protocol)
o Android BEAM
• ISO-DEP
o FALP(FeliCa Adhoc Link Protocol)
11. アプリケーションまでの道のり
• NFC Service
o NFCチップがいないか常にpollingをつづける
o NFCチップを発見した場合Intentを作成
o Intentを発行
• NFC Application
o NFC対応であるIntent-Filterを予め定義しておく
o 発行されたIntentを受信
o Intent(Extra)内に入っているデータを使って楽しむ
12. Intent内のデータ(1)
• NfcAdapter.EXTRA_ID
o “android.nfc.extra.ID”
o byte配列が入っている
o カードを識別するための製造ID
o 製造時に付与される
o FeliCa → IDm MIFARE → UID
o 同じ通信範囲内にカードがあった場合に識別する用途に使われる
o できるだけ一意に発行されるが、一意である保証はない
14. Intent内のデータ(3)
• NfcAdapter.EXTRA_TAG
o “android.nfc.extra.TAG”
o android.nfc.TAG(Parcelable)が入っている
o カードのメタ情報が入っている
• メモリサイズ
• カードの種類
o カードに直接コマンドを送るために使われる
• Tag → NfcF → transceive(byte[])
29. 課題
• FeliCa以外のカードに反応するようにしてみよう
o ヒント:android.nfc.tech.Xxx
• どんなカードを読み取ったか表示してみよう
o ヒント:android.nfc.Tag#getTechList()
• アプリ起動中のみ反応するようにしてみよう
o ヒント:NfcAdapter#enableForegroundDispatch()
• 同じActivityがいくつも起動してしまう事を回避するには
o ヒント:launchMode
30. 情報
• Android NFC Tutorial
o http://developer.android.com/guide/topics/nfc/nfc.html
• NFC Lab
o ML http://groups.google.com/group/nfc-lab
o Wiki https://sites.google.com/site/nfclabo/
• NFC Forum
o http://www.nfc-forum.org/home/
• @hiro99ma
o http://hiro99ma.blogspot.jp/
o http://twitter.com/hiro99ma