21
NearFieldCommunication わかめ まさひろ(@v vakame) Android appengine Curry(Rice) 201119日日曜日

ABC2011Winter デ部 NFC

Embed Size (px)

Citation preview

Page 1: ABC2011Winter デ部 NFC

NearFieldCommunicationわかめ まさひろ(@vvakame)

Androidappengine

Curry(Rice)

2011年1月9日日曜日

Page 2: ABC2011Winter デ部 NFC

NFCって何?

2011年1月9日日曜日

Page 3: ABC2011Winter デ部 NFC

NFCって何?

• NearFieldCommunication の略

• 簡単に言うとFeliCaとかRFID的なもの

• 駅の改札とかにあるアレとかっす

2011年1月9日日曜日

Page 4: ABC2011Winter デ部 NFC

NFCの概要

トッパン・フォームズさんの解説 http://bit.ly/nfc-about

NFC (NearFieldCommunication)

FeliCa MifareISO14443

TypeBother

運転免許証TaspoSuica Edy

2011年1月9日日曜日

Page 5: ABC2011Winter デ部 NFC

Gingerbread NFC API

2011年1月9日日曜日

Page 6: ABC2011Winter デ部 NFC

Gingerbread NFC API

2011年1月9日日曜日

Page 7: ABC2011Winter デ部 NFC

Gingerbread NFC API

1

2

3

2011年1月9日日曜日

Page 8: ABC2011Winter デ部 NFC

以上2011年1月9日日曜日

Page 9: ABC2011Winter デ部 NFC

Gingerbread NFC API

2011年1月9日日曜日

Page 10: ABC2011Winter デ部 NFC

残念2011年1月9日日曜日

Page 11: ABC2011Winter デ部 NFC

動作の流れ

• NFC TagをNexusS(端末)に近づける

• Intentが飛んでくる

• 自分のアプリで解析する

2011年1月9日日曜日

Page 12: ABC2011Winter デ部 NFC

android.nfc.NfcAdapter• 端末上のNFCアダプタの抽象• あんまオモロない…• Intentの扱いに便利な定数がある

String action = intent.getAction();if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) { // タグのID 各バイトをHexStringに変換すると、FeliCaでいうIDmになります

intent.getByteArrayExtra(NfcAdapter.EXTRA_ID); // NDEF(後で説明します)をNdefMessage[]として取得します

intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); // android.nfc.Tag を取得します. @hide 指定なのでAPIには載ってません

Parcelable tag = intent.getParcelableExtra("android.nfc.extra.TAG");}

2011年1月9日日曜日

Page 13: ABC2011Winter デ部 NFC

NDEFって何?• NFC Data Exchange Format の略

• NFCによるデータ交換はこの形式!

• 手持ちのタグ(Suica, Edy, 運転免許証)だとこの値が取れないです><

• ぶっちゃけまだ実機でNDEFは取れるの確認できてません><

2011年1月9日日曜日

Page 14: ABC2011Winter デ部 NFC

android.nfc.NdefMessage

2011年1月9日日曜日

Page 15: ABC2011Winter デ部 NFC

android.nfc.NdefMessage

NdefRecord NdefRecord

NdefMessage

• NdefMessageは1つ以上のNdefRecord

から構成される

• 一般的には1レコードだけっぽい

2011年1月9日日曜日

Page 16: ABC2011Winter デ部 NFC

android.nfc.NdefRecord

2011年1月9日日曜日

Page 17: ABC2011Winter デ部 NFC

android.nfc.NdefRecord

NdefRecord NdefRecord

NdefMessage

MB ME CF SR IL TNF

LENGTH INFO(TYPE, PAYLOAD, ID)

BODY(TYPE, ID, PAYLOAD)

2011年1月9日日曜日

Page 18: ABC2011Winter デ部 NFC

どう解釈するの?

• TNFとTypeの値によってPayloadの解釈の仕方が変わる

• AndroidSDKに含まれるNFCDemoではText, Uri, SmartPosterに対応

• NFC RTD でぐぐれ

2011年1月9日日曜日

Page 19: ABC2011Winter デ部 NFC

今出来ること• READしかできない

• 端末間通信には使えない…• NDEF以外でデータ取る方法はほぼない

• 非公開APIに頼ればWriteも出来るとか• 勇者 @adamrocker 先生

• 非公開APIに頼ればSuicaの乗車履歴も取れるとか

• 勇者 @yanzm 先生2011年1月9日日曜日

Page 20: ABC2011Winter デ部 NFC

更なる情報

• 続きはWebで! (書き途中... 1/11くらいまでに書きます)

http://bit.ly/nfc-abc2011w

• 本スライドは以下で公開予定http://slidesha.re/abc2011w-nfc

2011年1月9日日曜日

Page 21: ABC2011Winter デ部 NFC

略語メモ• NFC Near Field Communication• NDEF NFC Data Exchange Format• MB Message Begin• ME Message End• CF Chunk Flag• SR Short Record• IL ID Length• TNF Type Name Format• RTD Record Type Definition

2011年1月9日日曜日