From: MRSa Date: Sat, 16 Dec 2017 15:33:37 +0000 (+0900) Subject: BLE接続を行うための準備を追加。 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=577fbbd2683cb5d32dbdddc464cf8f8c567b7e21;p=gokigen%2FA01d.git BLE接続を行うための準備を追加。 --- diff --git a/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java b/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java index 9671ffe..3c12077 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/A01dMain.java @@ -20,6 +20,7 @@ import net.osdn.gokigen.a01d.camera.olympus.cameraproperty.OlyCameraPropertyList import net.osdn.gokigen.a01d.camera.olympus.wrapper.OlympusInterfaceProvider; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ICameraStatusReceiver; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection; +import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerOn; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.PowerOnCamera; import net.osdn.gokigen.a01d.liveview.IStatusViewDrawer; import net.osdn.gokigen.a01d.liveview.LiveViewFragment; @@ -30,7 +31,7 @@ import net.osdn.gokigen.a01d.preference.PreferenceFragment; * A01d ; * */ -public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver, IChangeScene, PowerOnCamera.PowerOnCameraCallback +public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver, IChangeScene, ICameraPowerOn.PowerOnCameraCallback { private final String TAG = toString(); private IOlympusInterfaceProvider interfaceProvider = null; @@ -134,9 +135,8 @@ public class A01dMain extends AppCompatActivity implements ICameraStatusReceiver // BLEでカメラの電源をONにする設定だった時 try { - // カメラの電源ONクラスを呼び出しておく - PowerOnCamera powerOnCamera = new PowerOnCamera(this); - powerOnCamera.wakeup(); + // カメラの電源ONクラスを呼び出しておく (電源ONができたら、コールバックをもらう) + interfaceProvider.getCameraPowerOn().wakeup(this); } catch (Exception e) { diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/IOlympusInterfaceProvider.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/IOlympusInterfaceProvider.java index 4448ee1..3d0e15c 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/IOlympusInterfaceProvider.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/IOlympusInterfaceProvider.java @@ -7,6 +7,7 @@ import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraHardwareStatus; import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraInformation; import net.osdn.gokigen.a01d.camera.olympus.wrapper.ICameraRunMode; import net.osdn.gokigen.a01d.camera.olympus.wrapper.ILiveViewControl; +import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerOn; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection; @@ -15,6 +16,7 @@ import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnect */ public interface IOlympusInterfaceProvider { + ICameraPowerOn getCameraPowerOn(); IOlyCameraConnection getOlyCameraConnection(); ICameraHardwareStatus getHardwareStatus(); IOlyCameraPropertyProvider getCameraPropertyProvider(); diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlympusInterfaceProvider.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlympusInterfaceProvider.java index 007e881..b907249 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlympusInterfaceProvider.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/OlympusInterfaceProvider.java @@ -10,6 +10,8 @@ import net.osdn.gokigen.a01d.camera.olympus.operation.IZoomLensControl; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ICameraStatusReceiver; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.IOlyCameraConnection; import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.OlyCameraConnection; +import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.ICameraPowerOn; +import net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble.PowerOnCamera; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.IOlyCameraPropertyProvider; import net.osdn.gokigen.a01d.camera.olympus.wrapper.property.OlyCameraPropertyProxy; import net.osdn.gokigen.a01d.liveview.IAutoFocusFrameDisplay; @@ -28,6 +30,7 @@ public class OlympusInterfaceProvider implements IOlympusInterfaceProvider, IOly private final OlyCameraHardwareStatus hardwareStatus; private final OLYCameraPropertyListenerImpl propertyListener; private final OlyCameraZoomLensControl zoomLensControl; + private final ICameraPowerOn cameraPowerOn; private OlyCameraFocusControl focusControl = null; private OlyCameraCaptureControl captureControl = null; @@ -39,6 +42,7 @@ public class OlympusInterfaceProvider implements IOlympusInterfaceProvider, IOly this.hardwareStatus = new OlyCameraHardwareStatus(this.wrapper.getOLYCamera()); this.propertyListener = new OLYCameraPropertyListenerImpl(this.wrapper.getOLYCamera()); this.zoomLensControl = new OlyCameraZoomLensControl(context, this.wrapper.getOLYCamera()); + this.cameraPowerOn = new PowerOnCamera(this.wrapper.getOLYCamera()); } @Override @@ -50,6 +54,12 @@ public class OlympusInterfaceProvider implements IOlympusInterfaceProvider, IOly } @Override + public ICameraPowerOn getCameraPowerOn() + { + return (cameraPowerOn); + } + + @Override public IOlyCameraConnection getOlyCameraConnection() { return (connection); diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/ICameraPowerOn.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/ICameraPowerOn.java new file mode 100644 index 0000000..7f6639f --- /dev/null +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/ICameraPowerOn.java @@ -0,0 +1,14 @@ +package net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble; + + +public interface ICameraPowerOn +{ + // カメラ起動指示 + void wakeup(PowerOnCameraCallback callback); + + // 実行終了時のコールバックのインタフェース + interface PowerOnCameraCallback + { + void wakeupExecuted(boolean isExecute); + } +} diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/PowerOnCamera.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/PowerOnCamera.java index f83a7f2..0e7a171 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/PowerOnCamera.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/olympus/wrapper/connection/ble/PowerOnCamera.java @@ -1,40 +1,92 @@ package net.osdn.gokigen.a01d.camera.olympus.wrapper.connection.ble; +import android.bluetooth.BluetoothDevice; +import android.content.Context; import android.util.Log; +import jp.co.olympus.camerakit.OACentralConfiguration; +import jp.co.olympus.camerakit.OLYCamera; + /** * BLE経由でカメラの電源を入れるクラス * */ -public class PowerOnCamera +public class PowerOnCamera implements ICameraPowerOn { private final String TAG = toString(); - private final PowerOnCameraCallback callback; + private final OLYCamera camera; + private String btName; + private String btCode; - public PowerOnCamera(PowerOnCameraCallback callback) + /** + * + */ + public PowerOnCamera(OLYCamera camera) { Log.v(TAG, "PowerOnCamera()"); - - this.callback = callback; + this.camera = camera; } - public void wakeup() + public void wakeup(PowerOnCameraCallback callback) { + boolean isWakeup = true; Log.v(TAG, "PowerOnCamera::wakeup()"); - + btName = ""; + btCode = ""; + try + { + OACentralConfiguration oa_central = OACentralConfiguration.load(); + btName = oa_central.getBleName(); + btCode = oa_central.getBleCode(); + Log.v(TAG, "Bluetooth BtName : '" + btName + "' btCode : '" + btCode + "' "); + } + catch (Exception e) + { + e.printStackTrace(); + } +/* + try + { + BluetoothDevice btDevice = null; + camera.setBluetoothDevice(btDevice); + camera.setBluetoothPassword(btCode); + camera.wakeup(); + isWakeup = true; + } + catch (Exception e) + { + // 例外受信 + e.printStackTrace(); + isWakeup = false; + } +*/ // 今は暫定で返しちゃう - callback.wakeupExecuted(true); + callback.wakeupExecuted(isWakeup); } - /** - * 実行終了時のコールバックのインタフェース - * - */ - public interface PowerOnCameraCallback - { - void wakeupExecuted(boolean isExecute); + + +/* +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()); + } + } } +}; +*/ + } diff --git a/app/src/main/res/layout-land/column_save_bt.xml b/app/src/main/res/layout-land/column_save_bt.xml new file mode 100644 index 0000000..9dd153b --- /dev/null +++ b/app/src/main/res/layout-land/column_save_bt.xml @@ -0,0 +1,45 @@ + + + + +