Your SlideShare is downloading. ×
0
Now Loading. Please Wait ...                      Twitter @yokmama AndroidでNFC その1 第2回NFCLab勉強会 関西支部 夜子まま                 ...
自己紹介               本名  :寺園聖文(てらぞの まさふみ)               別名  :夜子まま               肩書  :株式会社Re:Kayo-System 代表取締役社長             ...
こんにちは、               姉のけいです。                         Re:Kayo-System Co.,Ltd.12年11月23日金曜日
ねぇ、けいー、突然で悪いんだけど、               NFCタグリーダーを作ってみたいんだ                 ー、だから作り方教えてくれる?           たっ!たしかに突然ね!          ま、、いいわよ教...
講義内容               NFCタグ               タグディスパッチ               フォアグラウンドディスパッチ               次回予告                           ...
ねぇー、ところで、ゆいは、NFC               についてどのぐらい知ってるの?                えーと、この前もらったカードが                NFCカードっていうのらしくて、             ...
じゃーまずはNFCタグとは何か?           ってところから説明するわね                たのむ!                             Re:Kayo-System Co.,Ltd.12年11月23日金曜日
NFCタグ                       Re:Kayo-System Co.,Ltd.12年11月23日金曜日
NFCタグはNFCで規定された               形式のデータを読み書きでき                  るタグのことです。                             Re:Kayo-System Co.,Ltd....
NFCタグにはいろんな種                 類のタグあります               へぇー、色々               あるんやね!                              Re:Kayo-Syste...
これらのタグにはそれぞれ規格がある     のだけど、NFCはそれらのタグを統一     するために作られた新しい規格なの。                      Re:Kayo-System Co.,Ltd.12年11月23日金曜日
ISO/IEC 21481(NFC IP-2)        ISO/IEC 18092(NFC IP-1)           ISO/IEC          JIS            ISO/IEC         ISO/IEC  ...
規格                               採用例           MIFARE                            taspoカードのほか、欧州では交通系カード等で広く普及   (ISO/IEC 1...
そして、これが実際にAndroidから読み         取ることができるタグの種類               クラス                                説明        TagTechnology    すべ...
なので、NFCタグリーダーを作るな   らまずはこのタグの取得のところか     らはじめないといけないわ                       Re:Kayo-System Co.,Ltd.12年11月23日金曜日
ちょっとまって、、まさかNFC               ってひとつだけじゃなくていろん               な種類のタグに合わせてプログラ                 ムしないといけないの?                   ...
えーと、そこは大丈夫!        心配しないで、基本的な部分は同じよ        うに処理できるし、あくまでタグの種        類に合わせて処理が出来るようにする             ための分類なのよ               ...
NFCタグへの操作は                        TagTechnologyが基本に                              なってるの                                 Tag...
ただ・・・タグへのアクセスは分かりや    すいんだけど、実際にタグを取得す     るところがややこしいんだよねぇ               そんな驚かさんといてー                             Re:Kayo-S...
NFCタグ    Android      Intent                             Tag                         TagTechnology                        ...
TagTechnologyの取得例    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);    if (Arrays.asList(tag.getTechList()).co...
なるほど!じゃ、早速タグを取得                するプログラムを作ってみる!                   がんばって!                            Re:Kayo-System Co.,Ltd.1...
けいーー、早速タグを取得、、               ておもったけど、どうやったら                 Intentを受け取れるの?                   ごめん!                大事なこといい忘れ...
タグディスパッチ                     Re:Kayo-System Co.,Ltd.12年11月23日金曜日
Androidでタグの入ったIntentを受け    取るにはタグディスパッチシステムと    いう仕組みを使ってどんなタグを受信     するのか設定する必要があります。                              Re:Kay...
それでは、Intentフィルターを使った受       信設定の方法を説明しますね。   Intentフィルターには次の3つのフィル           ターがあります。      ACTION_TAG_DISCOVERED      ACTI...
ACTION_TAG_DISCOVERED                            使用用途の応じてこれら   NFCタグ全般に対するIntentフィルター                                 のAct...
それじゃ、とりあえずTAGを読みたい!               て時は、ACTION_TAG_DISCOVEREDを使                     えばよさそうだね!                    さっそくやってみる! ...
けいーー!早速作ってみたけど、                   全然!だめ!               タグに反応しないんですけどぉー                   フフフ、               早速、罠に嵌ったようね。  ...
実は、NFCの読み取りはより正確               にフィルターを宣言されたアプリを                優先する仕様になっているの。               だから、反応しないのは他のアプリ              ...
優先順位               ACTION_NDEF_DISCOVERED               ACTION_TECH_DISCOVERED               ACTION_TAG_DISCOVERED        ...
フォーマット済                           NDEF_DISCOVERDがActivity                    NDEF_DISCOVERD     みタグ                       ...
なるほどー、               じゃACTION_TAG_DISCOVEREDだと、標準で               はいっているタグリーダーが起動するのはそうい                      う理由だったんだねー。  ...
TECH_DISCOVERDと NDEF_DISCOVERD     はより詳細にタグを指定するためにオプショ         ンがあるのでそれを説明するわね               おっけー!                       ...
データのMIMEタイプをtext/plainにした例   <intent-filter>       <action android:name="android.nfc.action.NDEF_DISCOVERED"/>       <cate...
AndroidManifest.xml   <intent-filter>       <action android:name="android.nfc.action.TECH_DISCOVERED"/>   </intent-filter>...
ANDの例 NfcBでかつNdefのタグ    <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">        <tech-list>            <tec...
よーし!今度こそ作れる?               できるわよ、やってみて!                              Re:Kayo-System Co.,Ltd.12年11月23日金曜日
ねぇ、けい               とりあえずタグリーダぽいのできたんだけど読               み取る時に、毎回選択画面がでてきてすっごい               使い勝手悪いんだけど、これもしかして対応ア         ...
毎回これがでるんじゃ                            問題の画面             だめよねぇ         サンプル・コード        https://github.com/yokmama/ykmjuku-s...
フォアグラウンド                ディスパッチ                     Re:Kayo-System Co.,Ltd.12年11月23日金曜日
フォアグラウンドディスパッチは、Activityがフォア  グラウンドにある場合において、他のアプリよりも優  先順位が高い設定を行うことができる仕組みで、これ    により選択画面なしでタグを受信できます。               まさに...
NfcAdapter    public void enableForegroundDispatch (Activity activity,    PendingIntent intent, IntentFilter[] filters, Str...
使用例)    public void onResume() {        super.onResume();        mAdapter.enableForegroundDispatch(this, pendingIntent,   ...
ACION_NDEF_DISCOVEREDの定義      IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);      try {         ...
使用例           public void onNewIntent(Intent intent) {               Tag tagFromIntent =           intent.getParcelableExt...
これで、NFCの受信からタグの取得                 までの説明は終わったわ。                   あとは作るだけ!                     頑張って!                   うん! ...
タグディスパッチのサンプル          https://github.com/yokmama/ykmjuku-samples/                     tree/master/NFCSample01            ...
次回予告                      Re:Kayo-System Co.,Ltd.12年11月23日金曜日
次回は、NDEFの解説と、ハンズオン形式           でNFC勤怠管理システムの作り方を解説し                たいと思っています。               時期:2013年1月中旬頃               場所...
Upcoming SlideShare
Loading in...5
×

関西支部 第二回 NFCLab勉強会 

1,028

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,028
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
14
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Transcript of "関西支部 第二回 NFCLab勉強会 "

  1. 1. Now Loading. Please Wait ... Twitter @yokmama AndroidでNFC その1 第2回NFCLab勉強会 関西支部 夜子まま Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  2. 2. 自己紹介 本名  :寺園聖文(てらぞの まさふみ) 別名  :夜子まま 肩書  :株式会社Re:Kayo-System 代表取締役社長 クラスタ:日本Androidの会、関西Unity、NFCLab Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  3. 3. こんにちは、 姉のけいです。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  4. 4. ねぇ、けいー、突然で悪いんだけど、 NFCタグリーダーを作ってみたいんだ ー、だから作り方教えてくれる? たっ!たしかに突然ね! ま、、いいわよ教えてあげるわ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  5. 5. 講義内容 NFCタグ タグディスパッチ フォアグラウンドディスパッチ 次回予告 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  6. 6. ねぇー、ところで、ゆいは、NFC についてどのぐらい知ってるの? えーと、この前もらったカードが NFCカードっていうのらしくて、 それがAndroidから読めるってい うぐらい? Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  7. 7. じゃーまずはNFCタグとは何か? ってところから説明するわね たのむ! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  8. 8. NFCタグ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  9. 9. NFCタグはNFCで規定された 形式のデータを読み書きでき るタグのことです。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  10. 10. NFCタグにはいろんな種 類のタグあります へぇー、色々 あるんやね! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  11. 11. これらのタグにはそれぞれ規格がある のだけど、NFCはそれらのタグを統一 するために作られた新しい規格なの。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  12. 12. ISO/IEC 21481(NFC IP-2) ISO/IEC 18092(NFC IP-1) ISO/IEC JIS ISO/IEC ISO/IEC 14443(Type A) X6319(Type F) 14443(Type B) 15693(Type V) NFCの規格はISO/IEC 18092とISO/IEC 21481 の2つ、このふたつに色 んなタグが含まれる形で 規定されてるの Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  13. 13. 規格 採用例 MIFARE taspoカードのほか、欧州では交通系カード等で広く普及 (ISO/IEC 14443 TYPE-A) ISO/IEC 14443 TYPE-B 住民基本台帳カード、免許証など  Suica、Edy、WAON、nanaco、おサイフケータイな FeliCa ど、国内では交通カードや電子マネーとして広く普及 ISO/IEC 15693 物流、小売などのICタグ、ICラベル NFCの規格に含まれた、各タグは この表に書かれているような所で 使われています。 Re:Kayo-System Co.,Ltd. ※表はTOPPAN FORUMSより http://www.nfc-world.com/about/03.html12年11月23日金曜日
  14. 14. そして、これが実際にAndroidから読み 取ることができるタグの種類 クラス 説明 TagTechnology すべてのタグテクノロジークラスで実装する必要があるインターフェイス NfcA NFC-A ( ISO 14443-3A ) プロパティと I/O オペレーションへのアクセスを提供する NfcB NFC-B ( ISO 14443-3B ) プロパティと I/O オペレーションへのアクセスを提供する NfcF NFC-F ( JIS 6319-4 ) プロパティと I/O オペレーションへのアクセスを提供する NfcV NFC-V ( ISO 15693 ) プロパティと I/O オペレーションへのアクセスを提供する IsoDep ISO-DEP ( ISO 14443-4 ) プロパティと I/O オペレーションへのアクセスを提供する NDEF としてフォーマットされた NFC タグの NDEF データとオペレーションへのア Ndef クセスを提供する NDEF にフォーマットできる可能性があるタグに対するフォーマットのオペレーシ NdefFormatable ョンを提供する Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  15. 15. なので、NFCタグリーダーを作るな らまずはこのタグの取得のところか らはじめないといけないわ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  16. 16. ちょっとまって、、まさかNFC ってひとつだけじゃなくていろん な種類のタグに合わせてプログラ ムしないといけないの? Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  17. 17. えーと、そこは大丈夫! 心配しないで、基本的な部分は同じよ うに処理できるし、あくまでタグの種 類に合わせて処理が出来るようにする ための分類なのよ いいね! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  18. 18. NFCタグへの操作は TagTechnologyが基本に なってるの TagTechnology NfcA NfcF NfcB NfcV IsoDep Ndef MifareClassic MifareUltralight NdefFormatable NfcBarcode Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  19. 19. ただ・・・タグへのアクセスは分かりや すいんだけど、実際にタグを取得す るところがややこしいんだよねぇ そんな驚かさんといてー Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  20. 20. NFCタグ Android Intent Tag TagTechnology Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  21. 21. TagTechnologyの取得例 Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); if (Arrays.asList(tag.getTechList()).contains(NfcA.class.getName())){ NfcA nfca = NfcA.get(tag); } 取得したタグにはそれがサポート しているタグの種類が入っている ので、それからどの TagTechnologyが取得できるか調 べることができるの Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  22. 22. なるほど!じゃ、早速タグを取得 するプログラムを作ってみる! がんばって! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  23. 23. けいーー、早速タグを取得、、 ておもったけど、どうやったら Intentを受け取れるの? ごめん! 大事なこといい忘れた Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  24. 24. タグディスパッチ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  25. 25. Androidでタグの入ったIntentを受け 取るにはタグディスパッチシステムと いう仕組みを使ってどんなタグを受信 するのか設定する必要があります。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  26. 26. それでは、Intentフィルターを使った受 信設定の方法を説明しますね。 Intentフィルターには次の3つのフィル ターがあります。 ACTION_TAG_DISCOVERED ACTION_NDEF_DISCOVERED ACTION_TECH_DISCOVERED Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  27. 27. ACTION_TAG_DISCOVERED 使用用途の応じてこれら NFCタグ全般に対するIntentフィルター のActionを ACTION_NDEF_DISCOVERED AndroidManifest.xmlに NFCのデータが書かれているタグへの 書いてあげればいいの Intentフィルター ACTION_TECH_DISCOVERED NFCのタグの種類にに対する Intentフィルター Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  28. 28. それじゃ、とりあえずTAGを読みたい! て時は、ACTION_TAG_DISCOVEREDを使 えばよさそうだね! さっそくやってみる! そ、そうかな・・ まぁやってみて! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  29. 29. けいーー!早速作ってみたけど、 全然!だめ! タグに反応しないんですけどぉー フフフ、 早速、罠に嵌ったようね。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  30. 30. 実は、NFCの読み取りはより正確 にフィルターを宣言されたアプリを 優先する仕様になっているの。 だから、反応しないのは他のアプリ がより詳細に書かれているので横取 りされてることになるのよ もぉー、そういうこと 先に言ってよー Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  31. 31. 優先順位 ACTION_NDEF_DISCOVERED ACTION_TECH_DISCOVERED ACTION_TAG_DISCOVERED このように基本的には上か ら順にチェックしていって反 応するんです Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  32. 32. フォーマット済 NDEF_DISCOVERDがActivity NDEF_DISCOVERD みタグ にハンドルされている? 未フォーマット TECH_DISCOVERDがActivity TECH_DISCOVERD タグ にハンドルされている? TAG_DISCOVERDがActivityに TAG_DISCOVERD ハンドルされている? このフロー図はActivityにIntent IntentをActivityに渡す を渡すまでのフロー図よ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  33. 33. なるほどー、 じゃACTION_TAG_DISCOVEREDだと、標準で はいっているタグリーダーが起動するのはそうい う理由だったんだねー。 てことは・・このActionは何のためにあるの? さぁーー、それが謎というかなんという か、実質使い物になるようにするにはカー ドの種類をいれるか、タグのデータの種類 をいれるかしないと反応しないですし。 それがAndroidらしいということなのかな。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  34. 34. TECH_DISCOVERDと NDEF_DISCOVERD はより詳細にタグを指定するためにオプショ ンがあるのでそれを説明するわね おっけー! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  35. 35. データのMIMEタイプをtext/plainにした例 <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter> まずは、NDEF_DISCOVERDのオプションに ついて。このフィルターはNFCのデータの中身 についてのフィルターをつけるため、dataタ グを使います Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  36. 36. AndroidManifest.xml <intent-filter> <action android:name="android.nfc.action.TECH_DISCOVERED"/> </intent-filter> <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/nfc_tech_filter" /> xml/nfc_tech_filter.xml <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NfcB</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> </resources> つぎに、TECH_DISCOVERDのオプションに ついて。このフィルターはNFCタグの種類でフ ィルタリングするため、別ファイルでタグの種 類を列挙します。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  37. 37. ANDの例 NfcBでかつNdefのタグ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NfcB</tech> <tech>android.nfc.tech.Ndef</tech> </tech-list> </resources> ここにはAndroidの実際 のクラス名を書く ORの例 NfcBまたはNfcAのタグ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <tech-list> <tech>android.nfc.tech.NfcB</tech> </tech-list> <tech-list> <tech>android.nfc.tech.NfcA</tech> </tech-list> </resources> タグの種類を列挙する定義ファイルは、ORと ANDの書き方があるので注意してくださいね Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  38. 38. よーし!今度こそ作れる? できるわよ、やってみて! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  39. 39. ねぇ、けい とりあえずタグリーダぽいのできたんだけど読 み取る時に、毎回選択画面がでてきてすっごい 使い勝手悪いんだけど、これもしかして対応ア プリたくさんいれるとどんどん増えるの? それは、フォアグラウンドディ スパッチを使ってないからね Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  40. 40. 毎回これがでるんじゃ 問題の画面 だめよねぇ サンプル・コード https://github.com/yokmama/ykmjuku-samples/tree/master/NFCSample01 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  41. 41. フォアグラウンド ディスパッチ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  42. 42. フォアグラウンドディスパッチは、Activityがフォア グラウンドにある場合において、他のアプリよりも優 先順位が高い設定を行うことができる仕組みで、これ により選択画面なしでタグを受信できます。 まさに、それ! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  43. 43. NfcAdapter public void enableForegroundDispatch (Activity activity, PendingIntent intent, IntentFilter[] filters, String[][]techLists) public void disableForegroundDispatch (Activity activity) フォアグラウンドディスパッチの使い方は 簡単で有効にするときはNfcAdapterの enableForegroundDispachを呼び出し て、無効にするときは、 disableForegroundDispatchを呼び出すだ けでいいの Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  44. 44. 使用例) public void onResume() { super.onResume(); mAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray); } public void onPause() { super.onPause(); mAdapter.disableForegroundDispatch(this); } だけど、これを使う場合は Activityがフォアグラウンドでない といけないという制約があるので、 onResumeで有効にしてonPause で無効にするのが一般的です。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  45. 45. ACION_NDEF_DISCOVEREDの定義 IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); try { ndef.addDataType("text/plain"); } catch (MalformedMimeTypeException e) { throw new RuntimeException("失敗", e); } IntentFilter[] intentFiltersArray = new IntentFilter[] { ndef }; ACION_TECH_DISCOVEREDの定義 techListsArray = new String[][] { new String[] { NfcA.class.getName(), Ndef.class.getName() }, new String[] { NfcF.class.getName() } }; 引数のフィルターはタグディスパッ チと考え方は同じなので、書き方が 違うと考えてみるといいです。 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  46. 46. 使用例 public void onNewIntent(Intent intent) { Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); } あと、フォアグラウンドディスパッ チはずっと画面が表示されている状 態での受信なのでIntentは onResumeで受け取るのではなく onNewIntentでうけとるといいわよ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  47. 47. これで、NFCの受信からタグの取得 までの説明は終わったわ。 あとは作るだけ! 頑張って! うん! やってみる! Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  48. 48. タグディスパッチのサンプル https://github.com/yokmama/ykmjuku-samples/ tree/master/NFCSample01 フォアグラウンドディスパッチのサンプル https://github.com/yokmama/ykmjuku-samples/ tree/master/NFCSample02 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  49. 49. 次回予告 Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  50. 50. 次回は、NDEFの解説と、ハンズオン形式 でNFC勤怠管理システムの作り方を解説し たいと思っています。 時期:2013年1月中旬頃 場所:多分ECC 情報:NFCLabメーリングリスト このサイトで登録できます http://lab-nfc.com/ Re:Kayo-System Co.,Ltd.12年11月23日金曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×