AndroidのBTLE対応情報まとめ

GoogleIO 1日目。
一番おもしろいと感じたセッションはAndroid枠の"Best Practices for Bluetooth Development"
セッションタイトルにはBTLE(Bluetooth Low Energy)という文字はまったく出てないのですが
ふたを開けてみるとほとんどBTLEの話でした。


コイン電池で1〜2年無線通信できるということでiPhoneが先行してBTLEを採用していた背景があり
Android対応はまだかまだかと騒がれていたため、会場に来ていた人たちはBTLEにかなり期待していたようで
"Bluetooth Low Energy"というタイトルページが出てきただけで大きな歓声が沸き上がっていました。


で、結論から先にいうと、BTLEはAndroid API level 18から正式対応になるとのことです。
(2013/05/15時点でlevel 18の情報は未発表)


セッションで発表されたBTLE Android対応のポイントをかいつまんで整理すると。
・BTLEはBluetooth 4.0対応の端末で利用可
(4.0=BTLE+3.0と見ていいらしい)
・Single-mode(BTLE)とDual-mode(BTLE+Basic Bluetooth)どちらも対応する
Android端末⇔デバイスの通信はOKだけど、Android端末⇔Android端末の通信はNG
GATT(generic attribute profile)に対応ということでイケてるらしい


BTLEの接続フローとしては
1.BTLEスキャンを繰り返す(電力を抑えるためON/OFFを繰り返す。NFCと同じ?)
2.BTLEデバイスがみつかる
3.コネクションを張る
4.サービスを判定し、通信を始める
というごく単純なフロー。
具体的なコードとして挙がっていたのは
LeScanCallbackクラスでLEスキャンのたびにonLeScanメソッドがコールされるということ。
そして、BTLE対応判別後は
BluetoothGattCallbackクラスのメソッド
onConnectionStateChange,onServicesDiscoverd,onCharacteristicRead
などを使うということ。


より詳しい話はAndroid開発者向けBluetoothページで公開していくらしいです。
http://developer.android.com/guide/topics/connectivity/bluetooth.html
(2013/05/15時点ではまだBTLE情報は未掲載)



また、これに関するツイートを流したところ
@tnoho氏から「SAMSUNG BLE SDKをベースにしているのでは」という情報をもらいました。
http://developer.samsung.com/ble
http://img-developer.samsung.com/onlinedocs/samsung_ble_docs_200/index.html
なるほど、メソッド名もほぼ一致してるぞということで、このBLE SDKを元にしているのはほぼ間違いないかと思います。



Bluetooth Low Energyってなんぞ?という人は @u_akihiro 氏によるプレゼン資料を参考にすると良いかと。
Bluetooth LE体験講座」http://www.slideshare.net/reinforcelab/20130322-btle
とても良くまとめられています。


セッションを終えて、低消費電力な無線通信を活かしたプロダクトの開発にトライしてみようかなと思いました。
さて何を作ろうかな、と考え始めるとワクワクしますね。