1 package net.osdn.gokigen.a01d.camera;
3 import android.app.Activity;
4 import android.content.SharedPreferences;
6 import net.osdn.gokigen.a01d.IInformationReceiver;
7 import net.osdn.gokigen.a01d.camera.canon.wrapper.CanonInterfaceProvider;
8 import net.osdn.gokigen.a01d.camera.fujix.IFujiXInterfaceProvider;
9 import net.osdn.gokigen.a01d.camera.fujix.wrapper.FujiXInterfaceProvider;
10 import net.osdn.gokigen.a01d.camera.nikon.wrapper.NikonInterfaceProvider;
11 import net.osdn.gokigen.a01d.camera.olympus.wrapper.IOlympusLiveViewListener;
12 import net.osdn.gokigen.a01d.camera.olympus.IOlympusInterfaceProvider;
13 import net.osdn.gokigen.a01d.camera.olympus.wrapper.OlympusInterfaceProvider;
14 import net.osdn.gokigen.a01d.camera.olympuspen.IOlympusPenInterfaceProvider;
15 import net.osdn.gokigen.a01d.camera.olympuspen.wrapper.OlympusPenInterfaceProvider;
16 import net.osdn.gokigen.a01d.camera.panasonic.IPanasonicInterfaceProvider;
17 import net.osdn.gokigen.a01d.camera.panasonic.wrapper.PanasonicCameraWrapper;
18 import net.osdn.gokigen.a01d.camera.ptpip.IPtpIpInterfaceProvider;
19 import net.osdn.gokigen.a01d.camera.ricohgr2.IRicohGr2InterfaceProvider;
20 import net.osdn.gokigen.a01d.camera.ricohgr2.wrapper.RicohGr2InterfaceProvider;
21 import net.osdn.gokigen.a01d.camera.sony.ISonyInterfaceProvider;
22 import net.osdn.gokigen.a01d.camera.sony.wrapper.SonyCameraWrapper;
23 import net.osdn.gokigen.a01d.camera.theta.IThetaInterfaceProvider;
24 import net.osdn.gokigen.a01d.camera.theta.wrapper.ThetaInterfaceProvider;
25 import net.osdn.gokigen.a01d.liveview.ICameraStatusUpdateNotify;
26 import net.osdn.gokigen.a01d.preference.IPreferencePropertyAccessor;
28 import androidx.annotation.NonNull;
29 import androidx.preference.PreferenceManager;
31 public class CameraInterfaceProvider implements IInterfaceProvider
33 private final Activity context;
34 private final OlympusInterfaceProvider olympus;
35 private final OlympusPenInterfaceProvider olympusPen;
36 private final SonyCameraWrapper sony;
37 private final RicohGr2InterfaceProvider ricohGr2;
38 private final FujiXInterfaceProvider fujiX;
39 private final PanasonicCameraWrapper panasonic;
40 private final ThetaInterfaceProvider theta;
41 private final CanonInterfaceProvider canon;
42 private final NikonInterfaceProvider nikon;
43 private final CameraStatusListener statusListener;
45 public CameraInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider, @NonNull IInformationReceiver informationReceiver)
47 this.context = context;
48 this.statusListener = new CameraStatusListener();
49 olympus = new OlympusInterfaceProvider(context, provider);
50 olympusPen = new OlympusPenInterfaceProvider(context, provider, statusListener);
51 sony = new SonyCameraWrapper(context, provider, statusListener);
52 fujiX = new FujiXInterfaceProvider(context, provider, statusListener);
53 panasonic = new PanasonicCameraWrapper(context, provider, statusListener);
54 ricohGr2 = new RicohGr2InterfaceProvider(context, provider);
55 theta = new ThetaInterfaceProvider(context, provider, statusListener);
56 canon = new CanonInterfaceProvider(context, provider, statusListener, informationReceiver);
57 nikon = new NikonInterfaceProvider(context, provider, statusListener, informationReceiver);
61 public void setUpdateReceiver(@NonNull ICameraStatusUpdateNotify receiver)
65 statusListener.setUpdateReceiver(receiver);
74 public IOlympusInterfaceProvider getOlympusInterface()
80 public IOlympusLiveViewListener getOlympusLiveViewListener()
82 return (olympus.getLiveViewListener());
86 public ISonyInterfaceProvider getSonyInterface()
92 public IRicohGr2InterfaceProvider getRicohGr2Infterface()
98 public IFujiXInterfaceProvider getFujiXInterface()
104 public IPanasonicInterfaceProvider getPanasonicInterface()
110 public IPtpIpInterfaceProvider getCanonInterface()
116 public IPtpIpInterfaceProvider getNikonInterface()
122 public IOlympusPenInterfaceProvider getOlympusPenInterface()
128 public IThetaInterfaceProvider getThetaInterface()
136 * @return OPC / SONY / RICOH_GR2 (ICameraConnection.CameraConnectionMethod)
138 public ICameraConnection.CameraConnectionMethod getCammeraConnectionMethod()
140 ICameraConnection.CameraConnectionMethod ret = ICameraConnection.CameraConnectionMethod.OPC;
143 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
144 String connectionMethod = preferences.getString(IPreferencePropertyAccessor.CONNECTION_METHOD, "OPC");
145 if (connectionMethod.contains("SONY"))
147 ret = ICameraConnection.CameraConnectionMethod.SONY;
149 else if (connectionMethod.contains("RICOH_GR2"))
151 ret = ICameraConnection.CameraConnectionMethod.RICOH_GR2;
153 else if (connectionMethod.contains("FUJI_X"))
155 ret = ICameraConnection.CameraConnectionMethod.FUJI_X;
157 else if (connectionMethod.contains("PANASONIC"))
159 ret = ICameraConnection.CameraConnectionMethod.PANASONIC;
161 else if (connectionMethod.contains("OLYMPUS"))
163 ret = ICameraConnection.CameraConnectionMethod.OLYMPUS;
165 else if (connectionMethod.contains("THETA"))
167 ret = ICameraConnection.CameraConnectionMethod.THETA;
169 else if (connectionMethod.contains("CANON"))
171 ret = ICameraConnection.CameraConnectionMethod.CANON;
173 else if (connectionMethod.contains("NIKON"))
175 ret = ICameraConnection.CameraConnectionMethod.NIKON;