LG G WatchにBluetooth(SPP)で接続してみました。
実現可能なのはわかりきっていたのですが、あんまり試してみる人も少ないだろうなーと思いやってみました。ポイントだけ説明していきます。
ちなみに、Android Wearと母艦となるAndroidで通信するアプリを作る場合、Wear用のAPIを使うことが推奨されています。(Bluetoothで直接通信するなとドキュメントに書かれていた気がします)
ペアリング
Android Wearの設定画面にはBluetoothの設定項目が無いため、一般的なAndroidのように設定画面からBluetoothのペアリングを行うことはできません。ペアリング用の画面を自作する必要があります。
他端末から腕輪をペアリングする
Android端末をLG G Watchとペアリングしたい時はこの方法が簡単だと思います。手順は以下の3つ- LG G Watchを検出可能状態にする
- 接続したい端末の設定->Bluetoothからデバイスの検出を実行し、リストに表示されたLG G Watchを選択しペアリングを行う
- LG G Watchにペアリング要求画面が出るので承認
非常に簡単に思えたのですが、どうやら検出可能状態にするためのActivity(RequestPermissionActivity)がAndroid Wearには存在しないようです。検出可能にしてもよいかユーザに確認するDialogを出すためのActivityなので、画面の大きさ関係でDialogが使いにくいAndroid Wearで省略されていても納得できるといえば納得できます。
仕方ないのでRequestPermissionActivityのソースコードを追ったところ、BluetoothAdapter#setScanModeを使用すれば検出可能状態にできることがわかりました。非公開APIなのでリフレクションを使う必要があります。
また、ペアリング要求をされた後の画面はAndroid Wearに用意されており、勝手に立ち上がるのでアプリで何か用意する必要はありません。セットアップの時に出てくるあれです。
LG G Watchからペアリングを行う
Bluetooth機器に接続する場合はこの方法が必要になります。やることは2つ。- 接続可能なBluetooth機器をサーチしリストに表示
- 接続したいBluetooth機器を選択し、ペアリング要求を開始
接続
API GuidesのBluetooth->Connecting Devicesに書かれている接続方法に沿って接続します。LG G Watchをクライアントとして接続
ペアリング済みデバイス一覧を表示して、その中から繋ぎたいものを選択できるようにすればいいでしょう。普通に接続できますが、複数台接続していないので接続限度数等はわかりません。LG G Watchをサーバとして接続
少し癖がありました。息切れしてきたので簡潔に書くと- LG G Watchが母艦のAndroidと接続している時は、LG G Watchをサーバとして他のBluetooth機器と接続できない
- LG G Watchが母艦のAndroid端末と接続していない時は、LG G Watchをサーバとして他のBluetooth機器と接続出来る
- LG G Watchをサーバとして他のBluetooth機器と接続中に、母艦のAndroidと接続できる
0 件のコメント:
コメントを投稿