Submit Search
Upload
Android iOS BLE 20180823
•
0 likes
•
2,200 views
T
Tsuyoshi Hyuga
Follow
Android/iOS端末間でデータを送る。BLEで
Read less
Read more
Devices & Hardware
Report
Share
Report
Share
1 of 15
Download now
Download to read offline
Recommended
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
kumaryu
Kong, Keyrock, Keycloak, i4Trust - Options to Secure FIWARE in Production
Kong, Keyrock, Keycloak, i4Trust - Options to Secure FIWARE in Production
FIWARE
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Kazuto Kusama
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
Sho Nakazono
HTTP/2 入門
HTTP/2 入門
Yahoo!デベロッパーネットワーク
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
Recommended
ライブストリーミングの基礎知識
ライブストリーミングの基礎知識
kumaryu
Kong, Keyrock, Keycloak, i4Trust - Options to Secure FIWARE in Production
Kong, Keyrock, Keycloak, i4Trust - Options to Secure FIWARE in Production
FIWARE
Cloud Foundry V2を、もうちょっと深掘りしよう
Cloud Foundry V2を、もうちょっと深掘りしよう
Kazuto Kusama
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
ストリーム処理におけるApache Avroの活用について(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
Naoki Nagazumi
詳説データベース輪読会: 分散合意その2
詳説データベース輪読会: 分散合意その2
Sho Nakazono
HTTP/2 入門
HTTP/2 入門
Yahoo!デベロッパーネットワーク
筋肉によるGoコードジェネレーション
筋肉によるGoコードジェネレーション
lestrrat
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Openv switchの使い方とか
Openv switchの使い方とか
kotto_hihihi
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
閉域網接続の技術入門
閉域網接続の技術入門
Masayuki Kobayashi
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
Hidenori Ishii
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
J-Stream Inc.
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
Masayuki Kobayashi
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
Kohei Tokunaga
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
Takaki Hoshikawa
リクルート式Hadoopの使い方
リクルート式Hadoopの使い方
Recruit Technologies
Integrating Fiware Orion, Keyrock and Wilma
Integrating Fiware Orion, Keyrock and Wilma
Dalton Valadares
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
Hideo Harada
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
Yuya Rin
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
VirtualTech Japan Inc.
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Treasure Data, Inc.
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
akira6592
비디오 코덱
비디오 코덱
greenday96
IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3
Noriyuki Yamaguchi
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
さくらインターネット株式会社
More Related Content
What's hot
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
akira6592
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Openv switchの使い方とか
Openv switchの使い方とか
kotto_hihihi
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
Uptime Technologies LLC (JP)
閉域網接続の技術入門
閉域網接続の技術入門
Masayuki Kobayashi
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
Hidenori Ishii
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
J-Stream Inc.
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
Masayuki Kobayashi
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
Kohei Tokunaga
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
Takaki Hoshikawa
リクルート式Hadoopの使い方
リクルート式Hadoopの使い方
Recruit Technologies
Integrating Fiware Orion, Keyrock and Wilma
Integrating Fiware Orion, Keyrock and Wilma
Dalton Valadares
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
Hideo Harada
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
Yuya Rin
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
VirtualTech Japan Inc.
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Treasure Data, Inc.
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
akira6592
비디오 코덱
비디오 코덱
greenday96
IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3
Noriyuki Yamaguchi
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
さくらインターネット株式会社
What's hot
(20)
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
Openv switchの使い方とか
Openv switchの使い方とか
PostgreSQLバックアップの基本
PostgreSQLバックアップの基本
閉域網接続の技術入門
閉域網接続の技術入門
今さらだけどMySQLとライセンス
今さらだけどMySQLとライセンス
CDNの仕組み(JANOG36)
CDNの仕組み(JANOG36)
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
リクルート式Hadoopの使い方
リクルート式Hadoopの使い方
Integrating Fiware Orion, Keyrock and Wilma
Integrating Fiware Orion, Keyrock and Wilma
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
構成情報データベースをGitで管理したいネットワーク運用者の憂鬱
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
Prestoで実現するインタラクティブクエリ - dbtech showcase 2014 Tokyo
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
비디오 코덱
비디오 코덱
IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3
eBPFを用いたトレーシングについて
eBPFを用いたトレーシングについて
Android iOS BLE 20180823
1.
Android/iOS端末間で データを送る。BLEで 2018/08/23 日向強
2.
自己紹介 • 日向強(tsuyoshi hyuga) •
@coffeegyunyu • iPhone OS 2.2 • Android Donut • Titanium • 株式会社アールラーニングに て主にiPhone、Androidの受 託開発を担当
3.
BLEでデータ送信 • BLEでは大きなデータの送信はできないので、データを分 割して連続送信する必要がある • データの分割数を増やすとその分送信リクエスト数が増え、 データを完全に送信するまで時間がかかる •
Maximum Transmission Unit(MTU)を調整すること で、送信速度の最適化をはかる
4.
基本的な流れ • 端末同士の接続 • 一度に送れるデータの量を拡張する(Exchange
MTU Request) • 接続した端末からデータ送信サービスを発見する • データを適切なサイズに分割し、連続送信する • あくまで端末間データ送信の一例です
5.
Android(Central)→iOS(Peripheral)
6.
7.
Android(Central)→iOS(Peripheral) • requestMtuで、MTU(一回の転送量)をPeripheralに要求することが可能 •BluetoothGatt.requestMtu(517)で要求するのが今の所最適値 • iOS側はこれをハンドリングする手段は無し •
Android側はBluetoothGattCallback.onMtuChanged()でMTU値が取得 できるので、(MTU値-5)でデータ分割して書き込みを繰り返す
8.
iOS(Central)→Android(Peripheral)
9.
10.
iOS(Central)→Android(Peripheral) • iOSは接続後、自動でMTU変更要求を行う(コントロールできない) •MTU変更要求時の値は、iOSバージョンやデバイスで異なる •Peripheral側はCentral側のMTUを把握しておくことが必要(あとで使 います) • Androidの場合、BluetoothGattServerCallback.onMtuChanged()で Central側のMTU値が取得可能
11.
iOS(Central)→Android(Peripheral) •iOS側は、Peripheral側にMTU値の読み込み要求を行う • AndroidがPeripheralの場合、 BluetoothGattServerCallback.onMtuChanged()で取得したMTU値を BluetoothGattServer.sendResponse()で送信する • iOS(Central)→iOS(Peripheral)であれば、 CBPeripheralManagerDelegate.didReceiveRead()の時に CBATTRequest.central.maximumUpdateValueLengthを返す
12.
iOS(Central)→Android(Peripheral) • データ分割は、 min(peripheral.maximumWriteValueLength,MTU値)-5で 分割して、送信を繰り返す 自分と相手のMTUを比較して、低い方でデータ送信を行う
13.
Q&A(Android編) • なぜMTUの値を517に指定するのか →おそらく端末ごとに最適なMTUは異なるが、現状、 APIでMTUの最適な値が取れないので517に決め打ち Nexus5(2013)で動作するので問題ないんじゃないかと 端末の最適なMTUを取得する方法をお持ちの方は教えて ください
14.
Q&A(iOS編) • なぜ、MTUをreadValue()で読み込みに行くのか →自分自身のMTU値が現状のAPIでは取得できないため 自身がCentral時に、Peripheral側のMTUを取得すること 自身がPeripheral時に、Central側のMTUを取得すること は可能 端末の最適なMTUを取得する方法をお持ちの方は教えて ください
15.
まとめ •端末の最適なMTUを取得する方法を お持ちの方は教えてください
Download now