Submit Search
Upload
Android iOS BLE 20180823
•
0 likes
•
2,196 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
Mac から Python で BLE ペリフェラルを操作する
Mac から Python で BLE ペリフェラルを操作する
Takuya Nishimoto
Resource-Oriented Architecture (ROA)
Resource-Oriented Architecture (ROA)
WSO2
Računarske mreže - uvod
Računarske mreže - uvod
Dejan Stancic
Računarske mreže
Računarske mreže
Jelena Jovetic
Програмне забезпечення (1).pptx
Програмне забезпечення (1).pptx
Flashb4ekBS
Fitness Dependent Optimizer (FDO)
Fitness Dependent Optimizer (FDO)
Jaza Abdullah
Organizacija podataka
Organizacija podataka
majapts
Scrum with Redmine Backlogs
Scrum with Redmine Backlogs
Ryuta Hamasaki
Recommended
Mac から Python で BLE ペリフェラルを操作する
Mac から Python で BLE ペリフェラルを操作する
Takuya Nishimoto
Resource-Oriented Architecture (ROA)
Resource-Oriented Architecture (ROA)
WSO2
Računarske mreže - uvod
Računarske mreže - uvod
Dejan Stancic
Računarske mreže
Računarske mreže
Jelena Jovetic
Програмне забезпечення (1).pptx
Програмне забезпечення (1).pptx
Flashb4ekBS
Fitness Dependent Optimizer (FDO)
Fitness Dependent Optimizer (FDO)
Jaza Abdullah
Organizacija podataka
Organizacija podataka
majapts
Scrum with Redmine Backlogs
Scrum with Redmine Backlogs
Ryuta Hamasaki
Marko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetu
makih135
글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또
Seongyun Byeon
Bezbednost na internetu
Bezbednost na internetu
Bezbednost Netu
GoogleのSHA-1のはなし
GoogleのSHA-1のはなし
MITSUNARI Shigeo
Bezbednost na internetu
Bezbednost na internetu
Jelena Popara
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
満徳 関
култура и цивилизација
култура и цивилизација
angelinabrankovic51
Advanced Chrome extension exploitation
Advanced Chrome extension exploitation
Krzysztof Kotowicz
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
Kontroliranje
Kontroliranje
Karlo asdasdasd
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
DigitalCube Co. Ltd.
Безопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникации
staille
JQuery
JQuery
Zakaria SMAHI
Psihopatologija
Psihopatologija
antivladinforum
DDD 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 World
Milo Yip
Ucenje
Ucenje
Profpsiholog
Tehnologija i deca
Tehnologija i deca
perazdera9
Elektronsko poslovanje
Elektronsko poslovanje
Slavica Dimovska
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019
昌桓 李
More Related Content
What's hot
Marko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetu
makih135
글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또
Seongyun Byeon
Bezbednost na internetu
Bezbednost na internetu
Bezbednost Netu
GoogleのSHA-1のはなし
GoogleのSHA-1のはなし
MITSUNARI Shigeo
Bezbednost na internetu
Bezbednost na internetu
Jelena Popara
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
満徳 関
култура и цивилизација
култура и цивилизација
angelinabrankovic51
Advanced Chrome extension exploitation
Advanced Chrome extension exploitation
Krzysztof Kotowicz
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Koichiro Matsuoka
Kontroliranje
Kontroliranje
Karlo asdasdasd
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
DigitalCube Co. Ltd.
Безопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникации
staille
JQuery
JQuery
Zakaria SMAHI
Psihopatologija
Psihopatologija
antivladinforum
DDD 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 World
Milo Yip
Ucenje
Ucenje
Profpsiholog
Tehnologija i deca
Tehnologija i deca
perazdera9
Elektronsko poslovanje
Elektronsko poslovanje
Slavica Dimovska
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019
昌桓 李
What's hot
(20)
Marko vilenica-komunikacija na-internetu
Marko vilenica-komunikacija na-internetu
글쓰는 개발자 모임, 글또
글쓰는 개발자 모임, 글또
Bezbednost na internetu
Bezbednost na internetu
GoogleのSHA-1のはなし
GoogleのSHA-1のはなし
Bezbednost na internetu
Bezbednost na internetu
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
JIRA Agileを活用したアジャイル開発実践事例 #AUGJ
култура и цивилизација
култура и цивилизација
Advanced Chrome extension exploitation
Advanced Chrome extension exploitation
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
ドメイン駆動設計 モデリング_実装入門勉強会_2020.3.8
Kontroliranje
Kontroliranje
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Wiki と Figma で情報連携したら 全員ちょっとだけ幸せになった話
Безопасност и защита на Android – мобилни комуникации
Безопасност и защита на Android – мобилни комуникации
JQuery
JQuery
Psihopatologija
Psihopatologija
DDD 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 World
Ucenje
Ucenje
Tehnologija i deca
Tehnologija i deca
Elektronsko poslovanje
Elektronsko poslovanje
MongoDB Atlasの構成について 2019
MongoDB Atlasの構成について 2019
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