SlideShare a Scribd company logo
1 of 15
Download to read offline
Android/iOS端末間で
データを送る。BLEで
2018/08/23 日向強
自己紹介
• 日向強(tsuyoshi hyuga)
• @coffeegyunyu
• iPhone OS 2.2
• Android Donut
• Titanium
• 株式会社アールラーニングに
て主にiPhone、Androidの受
託開発を担当
BLEでデータ送信
• BLEでは大きなデータの送信はできないので、データを分
割して連続送信する必要がある
• データの分割数を増やすとその分送信リクエスト数が増え、
データを完全に送信するまで時間がかかる
• Maximum Transmission Unit(MTU)を調整すること
で、送信速度の最適化をはかる
基本的な流れ
• 端末同士の接続
• 一度に送れるデータの量を拡張する(Exchange MTU
Request)
• 接続した端末からデータ送信サービスを発見する
• データを適切なサイズに分割し、連続送信する
• あくまで端末間データ送信の一例です
Android(Central)→iOS(Peripheral)
Android(Central)→iOS(Peripheral)
• requestMtuで、MTU(一回の転送量)をPeripheralに要求することが可能
•BluetoothGatt.requestMtu(517)で要求するのが今の所最適値
• iOS側はこれをハンドリングする手段は無し
• Android側はBluetoothGattCallback.onMtuChanged()でMTU値が取得
できるので、(MTU値-5)でデータ分割して書き込みを繰り返す
iOS(Central)→Android(Peripheral)
iOS(Central)→Android(Peripheral)
• iOSは接続後、自動でMTU変更要求を行う(コントロールできない)
•MTU変更要求時の値は、iOSバージョンやデバイスで異なる
•Peripheral側はCentral側のMTUを把握しておくことが必要(あとで使
います)
• Androidの場合、BluetoothGattServerCallback.onMtuChanged()で
Central側のMTU値が取得可能
iOS(Central)→Android(Peripheral)
•iOS側は、Peripheral側にMTU値の読み込み要求を行う
• AndroidがPeripheralの場合、
BluetoothGattServerCallback.onMtuChanged()で取得したMTU値を
BluetoothGattServer.sendResponse()で送信する
• iOS(Central)→iOS(Peripheral)であれば、
CBPeripheralManagerDelegate.didReceiveRead()の時に
CBATTRequest.central.maximumUpdateValueLengthを返す
iOS(Central)→Android(Peripheral)
• データ分割は、
min(peripheral.maximumWriteValueLength,MTU値)-5で
分割して、送信を繰り返す

自分と相手のMTUを比較して、低い方でデータ送信を行う
Q&A(Android編)
• なぜMTUの値を517に指定するのか 

→おそらく端末ごとに最適なMTUは異なるが、現状、
APIでMTUの最適な値が取れないので517に決め打ち
Nexus5(2013)で動作するので問題ないんじゃないかと



端末の最適なMTUを取得する方法をお持ちの方は教えて
ください
Q&A(iOS編)
• なぜ、MTUをreadValue()で読み込みに行くのか

→自分自身のMTU値が現状のAPIでは取得できないため

自身がCentral時に、Peripheral側のMTUを取得すること

自身がPeripheral時に、Central側のMTUを取得すること
は可能





端末の最適なMTUを取得する方法をお持ちの方は教えて
ください
まとめ
•端末の最適なMTUを取得する方法を
お持ちの方は教えてください

More Related Content

What's hot

Marko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetuMarko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetumakih135
 
글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또Seongyun Byeon
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなしMITSUNARI Shigeo
 
Bezbednost na internetu
Bezbednost na internetuBezbednost na internetu
Bezbednost na internetuJelena Popara
 
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJJIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ満徳 関
 
култура и цивилизација
култура и цивилизацијакултура и цивилизација
култура и цивилизацијаangelinabrankovic51
 
Advanced Chrome extension exploitation
Advanced Chrome extension exploitationAdvanced Chrome extension exploitation
Advanced Chrome extension exploitationKrzysztof Kotowicz
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8Koichiro Matsuoka
 
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話DigitalCube Co. Ltd.
 
Безопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникацииБезопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникацииstaille
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November増田 亨
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldMilo Yip
 
Tehnologija i deca
Tehnologija i decaTehnologija i deca
Tehnologija i decaperazdera9
 
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019昌桓 李
 

What's hot (20)

Marko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetuMarko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetu
 
글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또
 
Bezbednost na internetu
Bezbednost na internetuBezbednost na internetu
Bezbednost na internetu
 
GoogleのSHA-1のはなし
GoogleのSHA-1のはなしGoogleのSHA-1のはなし
GoogleのSHA-1のはなし
 
Bezbednost na internetu
Bezbednost na internetuBezbednost na internetu
Bezbednost na internetu
 
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJJIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
 
култура и цивилизација
култура и цивилизацијакултура и цивилизација
култура и цивилизација
 
Advanced Chrome extension exploitation
Advanced Chrome extension exploitationAdvanced Chrome extension exploitation
Advanced Chrome extension exploitation
 
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
 
Kontroliranje
KontroliranjeKontroliranje
Kontroliranje
 
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
 
Безопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникацииБезопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникации
 
JQuery
JQueryJQuery
JQuery
 
Psihopatologija
PsihopatologijaPsihopatologija
Psihopatologija
 
DDD 20121106 SEA Forum November
DDD 20121106 SEA Forum NovemberDDD 20121106 SEA Forum November
DDD 20121106 SEA Forum November
 
How to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the WorldHow to Write the Fastest JSON Parser/Writer in the World
How to Write the Fastest JSON Parser/Writer in the World
 
Ucenje
UcenjeUcenje
Ucenje
 
Tehnologija i deca
Tehnologija i decaTehnologija i deca
Tehnologija i deca
 
Elektronsko poslovanje
Elektronsko poslovanjeElektronsko poslovanje
Elektronsko poslovanje
 
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019
 

Android iOS BLE 20180823