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.

Windows phone 8のデバイスを使おう~近接通信編~(公開用)

2,469 views

Published on

  • Be the first to comment

  • Be the first to like this

Windows phone 8のデバイスを使おう~近接通信編~(公開用)

  1. 1. Windows Phone 8の デバイスを使おう ~近接通信編~ 第5回まどべんよっかいち 2013/4/6 青木宣明 @kumar0001
  2. 2. Agenda 1. Windows Phoneのデバイス 1. Windows Phone 7.8 2. Windows Phone 8 2. 近接通信プログラミング~端末間通 信編~ 3. まとめ
  3. 3. Windows Phoneのデバイス • Windows Phone 7.8のデバイス • Windows Phone 8のデバイス
  4. 4. Windows Phoneのデバイス Windows Phoneではシャシー規格に よって、ハードウェア仕様が決められ ている • 規格をそろえることで、端末が異なっても ユーザが同等のエクスペリエンスを体験で きる OS側のサポートコスト低減 アプリケーション開発のコスト低減 • ただし、端末間の差異が少なく、メーカー 側は差別化しにくい問題も
  5. 5. Windows Phone 7.8のデバイス ・GPS ・カメラ ・FMラジオ 通信 (3G/Wi-fi) センサー ・加速度 ・地磁気 ・近接 ・照度 ・ジャイロスコープ APから制御 不可 搭載は任意 Bluetooth ・A2DP・AVRCP ・HFP ・HSP ・PBAP
  6. 6. WP7.8端末の連携 ①APのデータを クラウド上のス トレージ経由で 受け渡しする ②Webサービスを 経由する WP7.8まではクラウド・Webサービスを 経由して連携するしかなかった Bluetooth
  7. 7. Windows Phone 8のデバイス(1) WP7.8から以下の機能が追加 • GPS バックグラウンドでの位置検出が可能に • MicroSDカード OSから保存: 写真、動画 OSから読み込み: 写真、動画、音楽 署名済みアプリのインストール • 音声 音声認識 音声合成 • Bluetoothプロファイル OPP(Object Push Profile)の追加 • NFC/Bluetooth/WiFi-Directによる近接通信
  8. 8. (参考)WP8のBTプロファイル Advanced Audio Distribution Profile (A2DP 1.2) Audio/Video Remote Control Profile (AVRCP 1.4) Hands Free Profile (HFP 1.5) Phone Book Access Profile (PBAP 1.1) Object Push Profile (OPP 1.1)
  9. 9. Windows Phone 8のデバイス(2) 特に注目を引くのがBluetooth OPPと 近接通信の追加 • WinRTのProximity APIで利用する 通信方法は3通り • NFC 近距離(~数cm)での通信 ICタグや端末同士での通信 • Bluetooth 数m~10mでの通信 デバイスや端末同士での通信 • WiFi-Direct、TCP/IP 端末同士での通信
  10. 10. WP8端末の連携 ①APのデータを クラウド上のス トレージ経由で 受け渡しする ②Webサービスを 経由する WP8では端末間の直接通信、NFCによるICタグの 読み書き、SPPデバイスとの連携が可能に ③端末間で直接 通信する 近接通信 Bluetooth(OPP) NFCタグ SPPデバイス
  11. 11. 近接通信を活用したアプリ開発 近接通信対応のアプリはまだこれから サーバを経由せずに端末間で直接連携 できるメリットがあるが、検証環境の 準備が必要など取り組みにくい面も 近接通信対応のアプリ開発のきっかけ になるよう、近接通信について見てい きます
  12. 12. デバイスプログラミング ~近接通信編~ • OS標準機能の近接通信 • ShareMediaTask • Proximity API • 端末間通信 • TappingによるAP起動 • Bluetoothデバイスとの通信
  13. 13. WP8での近接通信 標準アプリでもサポートされている • 例)Pictureハブの共有 送信側 受信側 自分のアプリではどう やって実現できるのか?
  14. 14. 自作アプリでの近接通信 方法1 • ShareMediaTaskを使う メリット: 簡単。ファイルパスを与えるだけ デメリット: タップによるファイル転送しか できない 方法2 • Proximity APIを使ってPeerの探索~接続 ~通信を自前で行う メリット: 詳細に制御できる デメリット: 手順を踏まえて使う必要がある。 やや複雑
  15. 15. ShareMediaTaskでの近接通信 使い方は簡単 • FilePathプロパティに共有するファイルの パスを設定してShow()する var photoChooserTask = new PhotoChooserTask { ShowCamera = true }; photoChooserTask.Completed += (s, e2) => { var shareMediaTask = new ShareMediaTask { FilePath = e2.OriginalFileName }; shareMediaTask.Show(); }; photoChooserTask.Show(); PhotoChooserTaskとの組み合わせ例 デモ
  16. 16. Proximity APIプログラミング Proximity API • Windows Runtimeに含まれる Windows.Networking.Proximity名前空間 Peer(端末・デバイス)との通信をサ ポートする • TapによるPeerの検出 • Peerのブラウジング Bluetooth, WiFi-Direct, TCP/IP • Peerとの接続、ソケットの取得 • NFCでのICタグへのアクセス
  17. 17. 近接通信のシナリオ Peer間の近接通信のパターン 1. Bluetoothペアリング済みデバイスを列 挙→接続してソケット取得 2. ICタグにメッセージをP&S
  18. 18. 近接通信のシナリオ(1/3) A. Tappingしてメッセージを 送受信する 近接させる Publish/Subscribeで メッセージを送受信 B. Tappingして接続した後 ソケット通信を行う 近接させて 接続を確立 Socketによる ストリーム通信 ・Bluetooth ・WiFi-Direct ・TCP/IP NFCが使える場合 NFCが使える場合
  19. 19. 近接通信のシナリオ(2/3) C. Browsingで見つけたPeerと接続 した後ソケット通信を行う Socketによる ストリーム通信 ・Bluetooth ・WiFi-Direct ・TCP/IP Peerを探索 Advertising 接続を確立
  20. 20. 近接通信のシナリオ(3/3) D. ペアリング済みのBluetoothデバイ スと接続してソケット通信を行う Socketによる ストリーム通信 Peerを探索 E. ICタグとメッセージを Publish/Subscribeする 接続を確立
  21. 21. 近接通信の基本的な手順 •Windows.Networking.Proximity.ProximityDevice.GetDefault() != null ① Tappingサポートの確認 •ProximityDevice.PublishMesage •ProximityDevice.PublishUriMessage •ProximityDevice.PublishBinaryMessage ②-1 送信側: メッセージのPublish •ProximityDevice.SubscribeForMessage ②-2 受信側: メッセージのSubscribe •StopPublishingMessage •StopSubscribingForMessage ③ 終了時 A. TappingでのPublish/Subscribe デモ
  22. 22. 近接通信の基本的な手順 •PeerFinder.SupportedDiscoveryTypes & PeerDiscoveryTypes.Triggeredを確認 •PeerFinder.TriggeredConnectionStateChangedを設定 ① Tappingによる接続のサポート有無の確認 •PeerFinder.Start()を実行すると、自端末がリモート端末で検出可能になる ② Advertisingの開始 •TriggeredConnectionStateChangedイベントで状態が TriggeredConnectState.Completedになったら通信を行う •このとき接続が完了していてStreamSocketが渡される ③ 接続の完了待ち •InputStream, OutputStreamを利用して通信を行う ④ Socketの利用 B. Tapping Triggerでの接続 デモ
  23. 23. 近接通信の基本的な手順 • PeerFinder.SupportedDiscoveryTypes & PeerDiscoveryTypes.Browseを確認 • PeerFinder.ConnectionRequestedを設定 ① Tappingによる接続可否の確認 • PeerFinder.Start()を実行すると、自端末がリモート端末で検出可能になる ② Advertisingの開始 • PeerFinder.FindAllPeersAsync()で検出したPeer情報を取得 • その中のPeerに対してPeerFinder.ConnectAsync()で接続する ③-1 Peerの探索 •ConnectionRequestedイベントに対してPeerFinder.ConnectAsync()で接続する ③-2 接続要求の受け入れ • StreamSocket.InputStream, StreamSocket.OutputStreamを利用して通信を行う ④ Socketの利用 C. Peer Browsingでの接続 デモ
  24. 24. Peerの接近・離脱の検出 DeviceArrived, DeviceDepartredイベ ントでPeerの接近、離脱を検知できる • 例)接近したらAdvertising→接続→通信 デモ proximityDevice = ProximityDevice.GetDefault(); proximityDevice.DeviceArrived += proximityDevice_DeviceArrived; proximityDevice.DeviceDeparted += proximityDevice_DeviceDeparted; private void proximityDevice_DeviceArrived(ProximityDevice sender) { PeerFinder.Start(); } private void proximityDevice_DeviceDeparted(ProximityDevice sender) { PeerFinder.Stop(); }
  25. 25. Tappingによるアプリの起動 Tappingにより、他端末のAPを起動できる • APがインストールされていない場合、ストアから ダウンロードさせる Advertisingを実行中のAP OSがAPを起動するか 確認する APを起動して いない端末 近接させる
  26. 26. Tappingによるアプリの起動 デモ protected override void OnNavigatedTo(NavigationEventArgs e) { if (e.Uri.ToString().Contains( "ms_nfp_launchargs=Windows.Networking.Proximity.PeerFinder: StreamSocket")) { PeerFinder.Start(); } } 起動されたページのURIに以下のパラ メータが含まれる • ms_nfp_launchargs=Windows.Networking.Proximity.PeerFinder: StreamSocket Advertisingを実行すると、APを起動し たリモート端末のPeer探索に反応できる • 後は通常通りに接続→ソケット通信
  27. 27. まとめ WP8から近接通信がサポートされて、 端末間の直接通信が可能になった。 近接通信を利用するシナリオは複数あ るが、どれも利用方法は簡易である。 近接通信を活用して、アプリの提供機 能に+αを実現したい

×