BLEのコールバックが複数回呼ばれる現象

928 views
Skip to first unread message

talby

unread,
Aug 18, 2016, 9:55:25 AM8/18/16
to 日本Androidの会
こんばんは

AndroidのBLE開発をしております。
環境はAndroid studio2.1.3
targetSDK23 minSDK21
端末はNexus9 Nexus6P osはともに6.0.1

BLE端末とペアリングありで通信するアプリを作成しています。
基本的には一通り実装してあり、動作もしています。
BLEのコールバックで不可解な動作が出てしまい、
ご存知の方がおりましたらご教示いただけますでしょうか。

現象:BLEのコールバックonConnectionStateChangeが複数回呼ばれる
スマホとBLEは1対1で通信をするように組んでおります。
mBluetoothDevice.connectGatt(mContext, false, mGattCallback, BluetoothDevice.TRANSPORT_LE);
もしくは
mBluetoothDevice.connectGatt(mContext, false, mGattCallback);
で接続するとonConnectionStateChangeが呼ばれます(newState = BluetoothProfile.STATE_CONNECTED)。
切断すると再度onConnectionStateChangeが呼ばれます(newState = BluetoothProfile.STATE_DISCONNECTED)。
この流れは問題ないと認識していますが、そこから再度スキャン、connectGattを行うと
接続、切断それぞれについてonConnectionStateChangeが2回ずつ呼ばれます。
さらに接続、切断を繰り返すと、繰り返した回数分onConnectionStateChangeが呼ばれる回数が増えていきます。

確認点などお教えいただけると助かります。
以上、よろしくお願いします。

talby

unread,
Aug 19, 2016, 8:11:17 AM8/19/16
to 日本Androidの会
本件、自己解決いたしました。
connectGattで返ってくるBluetoothGattを保存しておき、
再接続の際はこのインスタンスの.connect()で接続すればこの現象は起きませんでした。

2016年8月18日木曜日 22時55分25秒 UTC+9 talby:
Reply all
Reply to author
Forward
0 new messages