Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
やはりお前らのAndroidのBLE
が不安定だという認識は間違っ
ている
#potatotips #6
2014/04/09 @youten_redo(ようてん)
Bluetooth Low Energy
http://www.bluetooth.com/Pages/Bluetooth-
Brand.aspx
BLEはあんまりよく知らない
という人への補足説明
旧来のBluetoothとは結構違うけど、iOS(OS X)とAndroid
でどっちでも使える楽しいやつだよ
WiFi・Cellular経由でのHTTP(IP)通信以外で、MFi不要で
iO...
Android BLE unstable?
4.3 cause unstable?
Device List
Device Nexus 4 Nexus 5
HTC One
GPE
Nexus 7
2013
Android
version.
4.4.2 4.4.2 4.4.2 4.4.2
Image
Target: iOS 7.1 Peripheral
P
C
https://github.com/
youten/ImmPeri
https://github.com/youten/
BLERW/tree/rwbench
Test Environment
全機WiFiオン、自宅の無線LANルータ(b/g/n, 2.4GHz)
に接続状態で試験
木造アパートなので近所のルータ多数
iBeacon含めBLEデバイスは5つほど存在
Benchmark
DISCONNECTED
CONNECTING
CONNECTED
SERVICE DISCOVERED
READING CHARACTERISTIC
WRITING CHARACTERISTIC
How many seco...
100 laps average and
read+write success rate
Device Nexus 4 Nexus 5
HTC One
GPE
Nexus 7
2013
Android
version.
4.4.2 4.4.2 ...
Add wait before re-connect
DISCONNECTED
CONNECTING
CONNECTED
SERVICE DISCOVERED
READING CHARACTERISTIC
WRITING CHARACTERIS...
Result
Device Nexus 4 Nexus 5
HTC One
GPE
Nexus 7
2013
Android
version.
4.4.2 4.4.2 4.4.2 4.4.2
[no wait]
100 laps avr.
su...
まとめ
Android 4.4.2にしたら致命的な機種差がなくなった
WiFiを同時に使うと不安定(Nexus 7 2013)みたいな話はなくなった模様。
BluetoothGatt#close忘れるな。インスタンス使い切ってスキャン不可になる...
検証内容に対する追記
たかだか100回読み書きするのに数十秒かかってるとか遅い
じゃないか、って読み取っちゃうケースがあると思いますが、
通常はこんなにCONNECT-DISCONNECTを連続で行わないので
もっと速いです。
アプリケーション...
Upcoming SlideShare
Loading in …5
×

やはりお前らのAndroidのBLEが不安定だという認識は間違っている

17,955 views

Published on

AndroidのBLEの安定性について、Android4.4.2が4機種手元にあったので、「つなぐ→読む→書く→切る」×100みたいなコードで試してみたところ、顕著な機種差分はなかったよ、というお話。

Published in: Software
  • Be the first to comment

やはりお前らのAndroidのBLEが不安定だという認識は間違っている

  1. 1. やはりお前らのAndroidのBLE が不安定だという認識は間違っ ている #potatotips #6 2014/04/09 @youten_redo(ようてん)
  2. 2. Bluetooth Low Energy http://www.bluetooth.com/Pages/Bluetooth- Brand.aspx
  3. 3. BLEはあんまりよく知らない という人への補足説明 旧来のBluetoothとは結構違うけど、iOS(OS X)とAndroid でどっちでも使える楽しいやつだよ WiFi・Cellular経由でのHTTP(IP)通信以外で、MFi不要で iOS(OS X)-Android間通信ができるよ 2年先輩のiOSと比べると遅れてるし、かなり新しい Androidじゃないと標準対応していないけど、外部デバ イスとの連携等、いろいろ魅力的でオススメだよ
  4. 4. Android BLE unstable?
  5. 5. 4.3 cause unstable?
  6. 6. Device List Device Nexus 4 Nexus 5 HTC One GPE Nexus 7 2013 Android version. 4.4.2 4.4.2 4.4.2 4.4.2 Image
  7. 7. Target: iOS 7.1 Peripheral P C https://github.com/ youten/ImmPeri https://github.com/youten/ BLERW/tree/rwbench
  8. 8. Test Environment 全機WiFiオン、自宅の無線LANルータ(b/g/n, 2.4GHz) に接続状態で試験 木造アパートなので近所のルータ多数 iBeacon含めBLEデバイスは5つほど存在
  9. 9. Benchmark DISCONNECTED CONNECTING CONNECTED SERVICE DISCOVERED READING CHARACTERISTIC WRITING CHARACTERISTIC How many seconds 100 laps
  10. 10. 100 laps average and read+write success rate Device Nexus 4 Nexus 5 HTC One GPE Nexus 7 2013 Android version. 4.4.2 4.4.2 4.4.2 4.4.2 Image [no wait] 100 laps avr. success rate 25.36sec. 52.6% 23.93sec. 50.0% 28.02sec. 52.8% 22.37sec. 49.2%
  11. 11. Add wait before re-connect DISCONNECTED CONNECTING CONNECTED SERVICE DISCOVERED READING CHARACTERISTIC WRITING CHARACTERISTIC How many seconds 100 laps Add 50ms wait
  12. 12. Result Device Nexus 4 Nexus 5 HTC One GPE Nexus 7 2013 Android version. 4.4.2 4.4.2 4.4.2 4.4.2 [no wait] 100 laps avr. success rate 25.36sec. 52.6% 23.93sec. 50.0% 28.02sec. 52.8% 22.37sec. 49.2% [50ms wait] 100 laps avr. success rate 44.07sec. 87.8% 45.44sec. 92.8% 50.152sec. 94.0 43.864sec. 92.4%
  13. 13. まとめ Android 4.4.2にしたら致命的な機種差がなくなった WiFiを同時に使うと不安定(Nexus 7 2013)みたいな話はなくなった模様。 BluetoothGatt#close忘れるな。インスタンス使い切ってスキャン不可になる。 アプリのスワイプキル or Bluetoothのon/offで復帰できるが、不安定だと勘違いしないよ うに。ただのバグです。 対向装置はiOS/OS Xが楽。 Random Device Addressに注意、MACアドレスがランダムで変わる。 StickNFindとか実製品はおそらく省電力目的でセクシーにチューニングされている、また、 ファームウェアバージョンも制御できないため、再現性の観点でもあまりオススメしない。 SNF、最新ファーム焼いちゃうとImmediate Alert Service非対応になっちゃったっぽい。
  14. 14. 検証内容に対する追記 たかだか100回読み書きするのに数十秒かかってるとか遅い じゃないか、って読み取っちゃうケースがあると思いますが、 通常はこんなにCONNECT-DISCONNECTを連続で行わないので もっと速いです。 アプリケーションとして、接続先を探したりしながら繋いだり 切ったりしても妥当な範囲のリトライで、この程度安定して読 み書き( 送受信)ができますよ、という検証です。 BLEとしては向いていない(やるべきでない)ため意地悪試験 になってしまうのですが、バイト列送受信のスループットがど の程度まで出るのかはそのうち試してみたいと思います。

×