Android + OPC, Bluetooth経由でカメラの電源を入れる方法
Androidでアプリ開発をしているのですが、BLE経由でカメラの電源を入れる具体的な手順について教えて下さい。
ドキュメントやwakeup()
を呼んだ時のエラーの内容から、現在のところ
camera = new OLYCamera();
camera.setContext(getApplicationContext());
camera.setConnectionListener(this);
oa_central=OACentralConfiguration.load();
btName=oa_central.getBleName();
btCode=oa_central.getBleCode();
と準備をしstartLeScan()
で以下の様なコールバックが呼ばれるようにしているのですが
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback(){
@Override
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord){
if (btName.equals(device.getName())){
btAdapter.stopLeScan(this);
btDevice = device;
try {
camera.setBluetoothDevice(btDevice);
camera.setBluetoothPassword(btCode);
camera.wakeup();
camera.connect(OLYCamera.ConnectionType.BluetoothLE);
} catch (OLYCameraKitException e) {
Log.w(TAG, "To connect to the camera is failed: " + e.getMessage());
}
}
}
};
wakeup()
時にGATTデバイスの接続に失敗というエラーが出たところで詰んでいます。
I/OLYCameraLog: [INFO] [OLYCamera.java:1167:OLYCamera#wakeup]
D/BluetoothGatt: connect() - device: 90:B6:86:08:41:12, auto: false
D/BluetoothGatt: registerApp()
D/BluetoothGatt: registerApp() - UUID=2ff089f3-5321-45a7-84a7-87b8166b47f7
D/BluetoothGatt: cancelOpen() - device: 90:B6:86:08:41:12
D/BluetoothGatt: close()
D/BluetoothGatt: unregisterApp() - mClientIf=0
E/OLYCameraLog: [ERROR] [OLYCamera.java:1187:OLYCamera#wakeup] jp.co.olympus.camerakit.c: Failed to connect the GATT device.
connectGatt()
を自前で呼んでみたり、wakeup()
をBluetoothGattCallbackで実行してみたりと試してみましたが、エラー内容に変化がありません。
他にどのような手順が必要でしょうか?
追記
@ura14h さんの提案通りにCountDownLatch
を使ってonLeScan()
後にwakeup()
してみたところ、デバイスとの接続はうまくいくようになったように見えますが、新たなエラーが出るようになりました。
I/OLYCameraLog: [INFO] [OLYCamera.java:1167:OLYCamera#wakeup]
D/BluetoothGatt: connect() - device: 90:B6:86:08:41:12, auto: false
D/BluetoothGatt: registerApp()
(中略)
D/BluetoothGatt: onCharacteristicWrite() - Device=90:B6:86:08:41:12 UUID=59168c27-b5cd-40c7-9ee0-f5ec2e927346 Status=0
E/OLYCameraLog: [ERROR] [OLYCamera.java:1228:OLYCamera#wakeup] jp.co.olympus.camerakit.i: The peripheral gave back status 1.
D/BluetoothGatt: cancelOpen() - device: 90:B6:86:08:41:12