Suche senden
Hochladen
Android BLEのつらみを予防するTips
•
8 gefällt mir
•
13,058 views
T
Taisuke Oe
Folgen
potatochips #29の発表資料です
Weniger lesen
Mehr lesen
Software
Melden
Teilen
Melden
Teilen
1 von 14
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話
Kenta Harada
System.Drawing 周りの話
System.Drawing 周りの話
Satoru Fujimori
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
[CB19] S-TIP: サイバー脅威インテリジェンスのシームレスな活用プラットフォーム by 山田 幸治, 里見 敏孝
[CB19] S-TIP: サイバー脅威インテリジェンスのシームレスな活用プラットフォーム by 山田 幸治, 里見 敏孝
CODE BLUE
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
youten (ようてん)
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
Empfohlen
ツライと評判のAndroid BLEを頑張って使い続けた話
ツライと評判のAndroid BLEを頑張って使い続けた話
Kenta Harada
System.Drawing 周りの話
System.Drawing 周りの話
Satoru Fujimori
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Azure AD とアプリケーションを SAML 連携する際に陥る事例と対処方法について
Shinya Yamaguchi
[CB19] S-TIP: サイバー脅威インテリジェンスのシームレスな活用プラットフォーム by 山田 幸治, 里見 敏孝
[CB19] S-TIP: サイバー脅威インテリジェンスのシームレスな活用プラットフォーム by 山田 幸治, 里見 敏孝
CODE BLUE
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
やはりお前らのAndroidのBLEが不安定だという認識は間違っている
youten (ようてん)
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
Kuniyasu Suzaki
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)
iPride Co., Ltd.
Bloom filter
Bloom filter
Kumazaki Hiroki
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
Deflate
Deflate
7shi
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
ak_shio_555
例外設計における大罪
例外設計における大罪
Takuto Wada
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
広告がうざい
広告がうざい
Gen Ito
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号
akakou
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
Taisuke Oe
Wio lte iot_hub
Wio lte iot_hub
Yoshinori Hayashi
Weitere ähnliche Inhalte
Was ist angesagt?
とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)
iPride Co., Ltd.
Bloom filter
Bloom filter
Kumazaki Hiroki
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
Deflate
Deflate
7shi
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
Go Miyasaka
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
ak_shio_555
例外設計における大罪
例外設計における大罪
Takuto Wada
Keycloak拡張入門
Keycloak拡張入門
Hiroyuki Wada
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
Teppei Sato
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Takaya Saeki
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
広告がうざい
広告がうざい
Gen Ito
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Yusuke Wada
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号
akakou
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
Shuyo Nakatani
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
Was ist angesagt?
(20)
とある小型の青歯規格(ブルートゥース)
とある小型の青歯規格(ブルートゥース)
Bloom filter
Bloom filter
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
Deflate
Deflate
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
アプリの鍵が消える時_Droid kaigi2018
アプリの鍵が消える時_Droid kaigi2018
例外設計における大罪
例外設計における大罪
Keycloak拡張入門
Keycloak拡張入門
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
君はyarn.lockをコミットしているか?
君はyarn.lockをコミットしているか?
WebAssemblyのWeb以外のことぜんぶ話す
WebAssemblyのWeb以外のことぜんぶ話す
Docker Compose 徹底解説
Docker Compose 徹底解説
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
広告がうざい
広告がうざい
僕がつくった 70個のうちの48個のWebサービス達
僕がつくった 70個のうちの48個のWebサービス達
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
犬でもわかる公開鍵暗号
犬でもわかる公開鍵暗号
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
画像をテキストで検索したい!(OpenAI CLIP) - VRC-LT #15
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Ähnlich wie Android BLEのつらみを予防するTips
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
Taisuke Oe
Wio lte iot_hub
Wio lte iot_hub
Yoshinori Hayashi
Android端末のroot化について
Android端末のroot化について
Shuichi Takaya
Winストアアプリでble接続
Winストアアプリでble接続
エンジニア勉強会 エスキュービズム
Node-REDについて
Node-REDについて
Atsushi Kojo
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
Jingun Jung
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low Energyデバイス
Shin Ise
試してGOTTEN READY! Azure Sphere
試してGOTTEN READY! Azure Sphere
Knowledge & Experience
Bluetoothデュアルモジュールを使ってみた話 @IoTLT vol.50
Bluetoothデュアルモジュールを使ってみた話 @IoTLT vol.50
NorioIkedo
IoT LT 大阪 20160406
IoT LT 大阪 20160406
Yoshinori Hayashi
Embedded Master2
Embedded Master2
android sola
ADKでロボット with NFC
ADKでロボット with NFC
Takao Sumitomo
ふぃじかるこんぴゅ〜てぃんぐしてみた
ふぃじかるこんぴゅ〜てぃんぐしてみた
Takao Sumitomo
ABC2012 Spring: Android Design for Dummies
ABC2012 Spring: Android Design for Dummies
Nobuya Sato
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
Kenichi Kambara
FlutterでBLEを いい感じにする
FlutterでBLEを いい感じにする
chigichan24
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料
Kenichi Yoshida
ABS2015 のセッション紹介
ABS2015 のセッション紹介
l_b__
BlocklyDuino Editorの紹介
BlocklyDuino Editorの紹介
岡田 裕行
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Hiramatsu Ryosuke
Ähnlich wie Android BLEのつらみを予防するTips
(20)
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
BONXを支える技術:Bluetooth編 ~Bluetoothを120%使い倒す方法~
Wio lte iot_hub
Wio lte iot_hub
Android端末のroot化について
Android端末のroot化について
Winストアアプリでble接続
Winストアアプリでble接続
Node-REDについて
Node-REDについて
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
Azure IoT Edge for Linux on Windows (EFLOW)を学ぶ!
CoreBluetoothでつくるBluetooth Low Energyデバイス
CoreBluetoothでつくるBluetooth Low Energyデバイス
試してGOTTEN READY! Azure Sphere
試してGOTTEN READY! Azure Sphere
Bluetoothデュアルモジュールを使ってみた話 @IoTLT vol.50
Bluetoothデュアルモジュールを使ってみた話 @IoTLT vol.50
IoT LT 大阪 20160406
IoT LT 大阪 20160406
Embedded Master2
Embedded Master2
ADKでロボット with NFC
ADKでロボット with NFC
ふぃじかるこんぴゅ〜てぃんぐしてみた
ふぃじかるこんぴゅ〜てぃんぐしてみた
ABC2012 Spring: Android Design for Dummies
ABC2012 Spring: Android Design for Dummies
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
FlutterでBLEを いい感じにする
FlutterでBLEを いい感じにする
イチからはじめるADK北海道支部勉強会発表資料
イチからはじめるADK北海道支部勉強会発表資料
ABS2015 のセッション紹介
ABS2015 のセッション紹介
BlocklyDuino Editorの紹介
BlocklyDuino Editorの紹介
iPhoneアプリ開発を楽に楽しくするサイトまとめ
iPhoneアプリ開発を楽に楽しくするサイトまとめ
Mehr von Taisuke Oe
プレScalaMatsuri2019「スピーカー入門」
プレScalaMatsuri2019「スピーカー入門」
Taisuke Oe
How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1
Taisuke Oe
Monix Taskが便利だという話
Monix Taskが便利だという話
Taisuke Oe
How to get along with implicits
How to get along with implicits
Taisuke Oe
What Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミット
Taisuke Oe
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版
Taisuke Oe
AuxパターンをDottyで解決する
AuxパターンをDottyで解決する
Taisuke Oe
Real World Android Akka
Real World Android Akka
Taisuke Oe
Real world android akka
Real world android akka
Taisuke Oe
多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターン
Taisuke Oe
Mehr von Taisuke Oe
(10)
プレScalaMatsuri2019「スピーカー入門」
プレScalaMatsuri2019「スピーカー入門」
How to start functional programming (in Scala): Day1
How to start functional programming (in Scala): Day1
Monix Taskが便利だという話
Monix Taskが便利だという話
How to get along with implicits
How to get along with implicits
What Dotty fixes @ Scala関西サミット
What Dotty fixes @ Scala関西サミット
Real World Android Akka - 日本語版
Real World Android Akka - 日本語版
AuxパターンをDottyで解決する
AuxパターンをDottyで解決する
Real World Android Akka
Real World Android Akka
Real world android akka
Real world android akka
多相な関数の定義から学ぶ、型クラスデザインパターン
多相な関数の定義から学ぶ、型クラスデザインパターン
Android BLEのつらみを予防するTips
1.
Android BLEのつらみ を予防するTips Twitter :
@OE_uia / GitHub: taisukeoe
2.
自己紹介 麻植泰輔 / OE
TAISUKE - Twitter: @OE_uia - GitHub: taisukeoe - ScalaMatsuri co-chair - deeplearning4j/nd4s author - Android Developer 最近のお仕事 - BONX - Scala研修 などなど
3.
今日話すこと ● Bluetooth Low
Energyとは? ● Android BLEのサポート状況 ● Android BLE Central機能のつらみ ● つらみを予防するためのTips
4.
● Bluetooth 4.0 ●
2つの役割 ○ Central: 見つける、接続する ○ Peripheral: 見つけられる、接続される ● IoTの文脈でしばしば用いられるため、BLEデバイスをiOS, Android両方から触ることも少なくない ● iOS, Androidともに対応しているが、iOSの方が基本的に安 定動作している ● というより、Android BLEが不安定 Bluetooth Low Energy
5.
BLEにおける2つの役割: CentralとPeripheral Scan 見つける側 (Central) 見つけられる側 (Peripheral) BLE Advertise Connect
6.
AndroidのBLEのサポート状況 ● OS Central: 4.3以上〜 Peripheral:
5.0以上~ ● チップセット Central: 全てのチップが対応している(ハズだが、安定性の端末 差が激しい・・・) Peripheral: Advertiseするには、BroadcomのHCIコマンド `multiple advertisement`に対応している必要がある(そして、公 開されている端末仕様からはわからない) 詳しくは「BONXを支える技術: Bluetooth編 」
7.
Android BLE Centralが不安定? ●
Scanはおおよそ安定的に動作する ○ Advertise Packet ○ RSSI強度 ○ MACアドレス ● Connectは端末差が大きいが、基本的に不安定。主な失敗 ポイント: ○ Peripheralに接続要求をしても、成功しない ○ 接続できても、目的の Service/Characteristicが見つからない ○ 目的のService/Characteristicが見つかっても、値の読み込み /書き 込みができない ※「成功しない」にも2パターン:「エラーが発生」or「返事が 返ってこない」
8.
Android BLEつらい ● コード上で完全に克服するのは難しい ●
仕様で克服しよう
9.
Android BLEのつらみを乗り超える仕様 ● BLEを極力使わない ●
Androidの動作対象端末を限定する ● BLE接続の頻度を下げる ● UUID指定のスキャンを前提にしない
10.
Android BLEを極力使わない ● そもそも使わなければ問題が生じない ●
それってBLE以外の技術、例えばClassic BT (SPP)で出来な いのか? ● 実際、BONXではAndroid BLEの一部機能を、SPP経由で IoTデバイスに肩代わりさせています。
11.
Androidの動作対象端末を絞る ● ここ2年に発売されたフラッグシップ級の端末なら「比較的」 安定動作するものが多い。 ● できるだけAndroid
4.3以下のサポートをしない。 ● 可能なら、Android 4.4もサポート対象外とし、Android 5.0 以上のみ対応とする(BLE APIが4系と5系で異なるため)。 ● さらに可能なら、発売当時Android 4.xだった端末もサポー トしない。その当時のチップはAdvertiseに対応していないこ とが多いなど、問題の元になることがある。
12.
BLE接続の頻度を下げる ● Android BLEは接続のたびに、失敗するリスクがある ●
接続せずに、スキャンだけで済むならそれが良い ● 接続する必要があっても、接続回数および接続相手の数を 減らす ● 短時間の間にいろんな相手と接続/切断を繰り返すアプリが 一番大変
13.
UUID指定のスキャンを前提にしない ● BLEスキャンのAPIには、Advertise Packetに含まれる UUIDを指定したスキャンが用意されている。これにより接 続対象候補の端末を絞ることができる。 ●
しかし、iOSのAdvertisePacketは、データ領域が足りなく なった場合などに`overflow領域`と呼ばれる特別な領域に 格納されるという仕様がある。`overflow領域`に格納された UUIDは、iOSからのスキャンでは利用できるが、Android のUUID指定スキャンでは利用できない ● iOSがAdvertiseする仕様において、AndroidはUUID指定 スキャンは実質使用することが難しい。
14.
● BLEは節度を守って使う限りにおいて、とても便利な規格。 Android BLEに関してAPIが用意されているからと言って、 全面的に信頼したりしない。 ●
Android BLEを使用した機能の仕様を決める前に、以下の ポイントはチェックしておくとつらみが減る(かもしれない) ○ BLEがベストな選択肢なのか? ○ サポート対象端末は? ○ 接続頻度は? ○ BLEスキャンの対象は? ● こんな方法でつらさを回避してるよ!って話があったらぜひ 教えてください まとめ
Jetzt herunterladen