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

Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)WSO2
 
Back to [Jaspersoft] basics: visualize.js 101
Back to [Jaspersoft] basics: visualize.js 101Back to [Jaspersoft] basics: visualize.js 101
Back to [Jaspersoft] basics: visualize.js 101TIBCO Jaspersoft
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Adriano Tavares
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingBen Wilcock
 
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!Kwiil Kang
 
Visual Analytics Best Practices
Visual Analytics Best PracticesVisual Analytics Best Practices
Visual Analytics Best PracticesTableau Software
 
Requisitos de Qualidade de Usabilidade
Requisitos de Qualidade de UsabilidadeRequisitos de Qualidade de Usabilidade
Requisitos de Qualidade de UsabilidadeRoberto Paldês
 
Monoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesMonoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesRandy Shoup
 
Engenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia SoftwareEngenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia Softwareelliando dias
 
Modern Enterprise integration Strategies
Modern Enterprise integration StrategiesModern Enterprise integration Strategies
Modern Enterprise integration StrategiesJesus Rodriguez
 
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech Talks
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech TalksDeep Dive - Amazon Kinesis Video Streams - AWS Online Tech Talks
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech TalksAmazon Web Services
 
WebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIWebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIRajkattamuri
 
PART 1: Intro To JasperReports IO And How To Build Your First Report
PART 1: Intro To JasperReports IO And How To Build Your First ReportPART 1: Intro To JasperReports IO And How To Build Your First Report
PART 1: Intro To JasperReports IO And How To Build Your First ReportTIBCO Jaspersoft
 
Power BI : A Detailed Discussion
Power BI : A Detailed DiscussionPower BI : A Detailed Discussion
Power BI : A Detailed DiscussionSwatiTripathi44
 
Catálogo de serviços ITIL template
Catálogo de serviços ITIL templateCatálogo de serviços ITIL template
Catálogo de serviços ITIL templateFernando Palma
 
Ifw framework for banking industry presentation
Ifw framework for banking industry presentationIfw framework for banking industry presentation
Ifw framework for banking industry presentationRavi Sarkar
 

What's hot (20)

Event-driven Architecture
Event-driven ArchitectureEvent-driven Architecture
Event-driven Architecture
 
Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)Service-Oriented Architecture (SOA)
Service-Oriented Architecture (SOA)
 
Back to [Jaspersoft] basics: visualize.js 101
Back to [Jaspersoft] basics: visualize.js 101Back to [Jaspersoft] basics: visualize.js 101
Back to [Jaspersoft] basics: visualize.js 101
 
Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1Modelagem Arquitetural e Visão 4+1
Modelagem Arquitetural e Visão 4+1
 
Microservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event SourcingMicroservice Architecture with CQRS and Event Sourcing
Microservice Architecture with CQRS and Event Sourcing
 
Why Microservices
Why MicroservicesWhy Microservices
Why Microservices
 
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!
あなたの ”Cloud” も ”One” ダフル!トレンドマイクロの新セキュリティ!
 
Visual Analytics Best Practices
Visual Analytics Best PracticesVisual Analytics Best Practices
Visual Analytics Best Practices
 
Requisitos de Qualidade de Usabilidade
Requisitos de Qualidade de UsabilidadeRequisitos de Qualidade de Usabilidade
Requisitos de Qualidade de Usabilidade
 
Monoliths, Migrations, and Microservices
Monoliths, Migrations, and MicroservicesMonoliths, Migrations, and Microservices
Monoliths, Migrations, and Microservices
 
SIPOC
SIPOCSIPOC
SIPOC
 
Engenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia SoftwareEngenharia Reversa e Reengenharia Software
Engenharia Reversa e Reengenharia Software
 
Modern Enterprise integration Strategies
Modern Enterprise integration StrategiesModern Enterprise integration Strategies
Modern Enterprise integration Strategies
 
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech Talks
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech TalksDeep Dive - Amazon Kinesis Video Streams - AWS Online Tech Talks
Deep Dive - Amazon Kinesis Video Streams - AWS Online Tech Talks
 
WebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDIWebServices SOAP WSDL and UDDI
WebServices SOAP WSDL and UDDI
 
PART 1: Intro To JasperReports IO And How To Build Your First Report
PART 1: Intro To JasperReports IO And How To Build Your First ReportPART 1: Intro To JasperReports IO And How To Build Your First Report
PART 1: Intro To JasperReports IO And How To Build Your First Report
 
Power BI : A Detailed Discussion
Power BI : A Detailed DiscussionPower BI : A Detailed Discussion
Power BI : A Detailed Discussion
 
Music on cloud
Music on cloudMusic on cloud
Music on cloud
 
Catálogo de serviços ITIL template
Catálogo de serviços ITIL templateCatálogo de serviços ITIL template
Catálogo de serviços ITIL template
 
Ifw framework for banking industry presentation
Ifw framework for banking industry presentationIfw framework for banking industry presentation
Ifw framework for banking industry presentation
 

Android iOS BLE 20180823