Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

関西支部Android勉強会(ロボットxnfc)

1,093 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

関西支部Android勉強会(ロボットxnfc)

  1. 1. Now Loading. Please Wait ... Twitter @yokmama ロボット x NFC 「日本Androidの会 関西支部勉強会 - わたし、気になります!」 場所:ECCコンピュータ専門学校 日時:2012/09/01 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  2. 2. 自己紹介 氏名   :寺園聖文(てらぞの まさふみ) 肩書   :株式会社Re:Kayo-System 代表取締役社長 活動拠点 :神戸近郊∼日本→海外行きたい 著書   :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)       「HTML5によるAndroidアプリ開発入門」監修(日経BP) アプリ  :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等 好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環 嫌いなもの:とくになし 最近のテーマ:電子工作、運動すること、英語 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  3. 3. NFCとロボット Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  4. 4. NFCとは • 近距離無線通信の名称 • Android2.3で実装された • ICOCA、SUICAので使われている Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  5. 5. Androidの NFCでできる事① Tag IDカードもどき、カード判定 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  6. 6. Androidの NFCでできる事② NDEF NDEF NDEF 磁気カードもどき Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  7. 7. Androidの NFCでできる事③ NDEF NDEF P2P通信もどき Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  8. 8. Androidの NFCでできる事④ NfcF Tag NfcA NfcB NfcV カード通信ライト Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  9. 9. NFCとその他の違い NFC QR 磁気カード 紙カード 読み取り 専用リーダー カメラ+機器 専用リーダー 目 書き込み 専用ライター 不可 専用ライター 手 速度 ⃝ ☓ ◎ ⃝ 可搬性 ◎ ◎ ⃝ ☓ コスト ☓ ◎ ⃝ ◎ セキュリティー ◎ ☓ ⃝ ☓ 大きさ ◎ ☓ ☓ ☓ Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  10. 10. NFCとその他の違い NFC QR 磁気カード 紙カード 読み取り 専用リーダー カメラ+機器 専用リーダー 目 書き込み 専用ライター 不可 専用ライター 手 速度 ⃝ ☓ ◎ ⃝ 可搬性 ◎ ◎ ⃝ ☓ コスト ☓ ◎ ⃝ ◎ セキュリティー ◎ ☓ ⃝ ☓ 大きさ ◎ ☓ ☓ ☓ Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  11. 11. 書き込みしてなんぼ 僕の見解 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  12. 12. さて本題 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  13. 13. ロボット X NFC    Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  14. 14. DroidRobo01 制作:cattaka_net AndroidからADKを 用いてロボットの手足 目を制御する。 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  15. 15. NFCでどうかする Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  16. 16. NFCのカードをかざすことで 規定のモーションをするのではつまらん Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  17. 17. 書き込みしてなんぼ 僕の見解 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  18. 18. Led Led Led Led Arm Arm Arm Arm Wheel Wheel Wheel Wheel Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  19. 19. Demo Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  20. 20. プログラム解説 Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  21. 21. NFCの有効化 Filter設定 Filter Type private IntentFilter[] nfcfilters = new IntentFilter[] { new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED) }; private String[][] nfctechLists = new String[][] { new String[] { }, Ndef.class.getName() Tech Type new String[] { NdefFormatable.class.getName() } }; ForegroundDispach @Override protected void onPause() { super.onPause(); nfcadapter.disableForegroundDispatch(this); } @Override protected void onResume() { super.onResume(); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()), 0); nfcadapter.enableForegroundDispatch(this, pendingIntent, nfcfilters, nfctechLists); } Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  22. 22. TechTypeによる処理の分岐 @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); String action = intent.getAction(); if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) { Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 受信 writeNdefMotionTag(tag); } } if (Arrays.asList(tag.getTechList()).contains(NdefFormatable.class.getName())) { NdefFormatable ndef = NdefFormatable.get(tag); try { if (!ndef.isConnected()) { ndef.connect(); } ndef.format(createNdefMessage()); Toast.makeText(this, "Write Success.", Toast.LENGTH_SHORT).show(); } finally { ndef.close(); } } else if (Arrays.asList(tag.getTechList()).contains(Ndef.class.getName())) { Ndef ndef = Ndef.get(tag); 分岐 try { if (!ndef.isConnected()) { ndef.connect(); } if(ndef.isWritable()){ ndef.writeNdefMessage(createNdefMessage()); Toast.makeText(this, "Write Success.", Toast.LENGTH_SHORT).show(); } else{ Toast.makeText(this, "Writing is not supported", Toast.LENGTH_SHORT).show(); } } finally { ndef.close(); } } Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  23. 23. 書込処理 Header: Data: Data: Data: Data: Rep 8bit LED 8bit LED 8bit LED 8bit LED 8bit Size 8bit ARM_L 8bit ARM_L 8bit ARM_L 8bit ARM_L 8bit ARM_R 8bit ROT_L 8bit ARM_R 8bit ROT_L 8bit ARM_R 8bit ROT_L 8bit ARM_R 8bit ROT_L 8bit ・・・ ROT_R 8bit ROT_R 8bit ROT_R 8bit ROT_R 8bit TIME 8bit TIME 8bit TIME 8bit TIME 8bit private NdefMessage createNdefMessage() throws IOException { byte[] mimeBytes = "application/jp.co.kayo.android.droiddancermotionwriter".getBytes(Charset.forName("US-ASCII")); ByteArrayOutputStream bytes = new ByteArrayOutputStream(); byte[] header = new byte[2]; header[0] = new Integer(seekBar1.getProgress()).byteValue(); header[1] = new Integer(items.size()).byteValue(); bytes.write(header); for(MotionItem item : items){ byte[] data = new byte[6]; data[0] = new Integer(item.isLed()?1:0).byteValue(); data[1] = new Integer(item.getArmleft()).byteValue(); data[2] = new Integer(item.getArmright()).byteValue(); data[3] = new Integer(item.getRotleft()).byteValue(); data[4] = new Integer(item.getRotright()).byteValue(); data[5] = new Integer(item.getTime()).byteValue(); bytes.write(data); } NdefRecord record = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, mimeBytes, new byte[0], bytes.toByteArray()); return new NdefMessage(new NdefRecord[]{record}); } Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  24. 24. ソースコード https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  25. 25. 考察 https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  26. 26. NFCTagを使うことで複雑なロジックを隠蔽化 し誰でもタッチするだけでActionを起こすこ とができる。 https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  27. 27. しかし、今のままではだめ https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  28. 28. 対象の機器毎にタグを作る アプリを選ばないといけな いため、タグがガラパゴス になっている。 https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  29. 29. そこで考えてみた https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  30. 30. NFCTagのデータ・フォーマットを規定化し、 Tagへの書込読込処理をオープンにし、 タグに対応した機器は、 コマンドやパラメータを公開してはどうか? https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  31. 31. NFCTagの規格に従い 各メーカーは対応する電気製品を 作ってくれれば、 汎用的なNFCTagを作成する アプリを作れるはずだ。 https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  32. 32. 実はTAGの規格はある Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  33. 33. TNFとRTD TNF:Type Name Field TNF_ABSOLUTE_URI TNF_EMPTY TNF_EXTERNAL_TYPE TNF_MIME_MEDIA TNF_UNCHANGED TNF_UNKNOWN TNF_WELL_KNOWN RTD : Record Type Definition RTD_TEXT RTD_URI RTD_SMART_POSTER RTD_ALTERNATIVE_CARRIER RTD_HANDOVER_CARRIER RTD_HANDOVER_REQUEST RTD_HANDOVER_SELECT Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  34. 34. しかしこれは不十分 なのだ Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  35. 35. 課題 •一方通行 •複数アプリケーション •パラメータのフォーマットがない •送受信データの圧縮技術 •送信データの妥当性チェック •etc,etc Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  36. 36. クラウドサービス WAN SmartPhone,PC NFCTag デバイス デバイス デバイス デバイス Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  37. 37. 学習机にタグ 今日の宿題が画面にでてくる。宿題がお わったらもう一度タグにタッチする 冷蔵庫にタグ タグから子供がタッチしたことがわかる ので、誰々ようのおやつをナビし、温め 時間をタグに書き込む 電子レンジにタグ 冷蔵庫から書かれたタグから、電子レン ジの時間を設定する https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日
  38. 38. ご清聴ありがとうご ざいました。 https://github.com/yokmama/adkworks Re:Kayo-System Co.,Ltd.12年8月30日木曜日

×