OSDN Git Service

60df36cd53739500b7098183e71a67a49ed6c192
[gokigen/A01d.git] / app / src / main / java / net / osdn / gokigen / a01d / camera / CameraInterfaceProvider.java
1 package net.osdn.gokigen.a01d.camera;
2
3 import android.app.Activity;
4 import android.content.SharedPreferences;
5
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;
27
28 import androidx.annotation.NonNull;
29 import androidx.preference.PreferenceManager;
30
31 public class CameraInterfaceProvider implements IInterfaceProvider
32 {
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;
44
45     public CameraInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider, @NonNull IInformationReceiver informationReceiver)
46     {
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);
58     }
59
60     @Override
61     public void setUpdateReceiver(@NonNull ICameraStatusUpdateNotify receiver)
62     {
63         try
64         {
65             statusListener.setUpdateReceiver(receiver);
66         }
67         catch (Exception e)
68         {
69             e.printStackTrace();
70         }
71     }
72
73     @Override
74     public IOlympusInterfaceProvider getOlympusInterface()
75     {
76         return (olympus);
77     }
78
79     @Override
80     public IOlympusLiveViewListener getOlympusLiveViewListener()
81     {
82         return (olympus.getLiveViewListener());
83     }
84
85     @Override
86     public ISonyInterfaceProvider getSonyInterface()
87     {
88         return (sony);
89     }
90
91     @Override
92     public IRicohGr2InterfaceProvider getRicohGr2Infterface()
93     {
94         return (ricohGr2);
95     }
96
97     @Override
98     public IFujiXInterfaceProvider getFujiXInterface()
99     {
100         return (fujiX);
101     }
102
103     @Override
104     public IPanasonicInterfaceProvider getPanasonicInterface()
105     {
106         return (panasonic);
107     }
108
109     @Override
110     public IPtpIpInterfaceProvider getCanonInterface()
111     {
112         return (canon);
113     }
114
115     @Override
116     public IPtpIpInterfaceProvider getNikonInterface()
117     {
118         return (nikon);
119     }
120
121     @Override
122     public IOlympusPenInterfaceProvider getOlympusPenInterface()
123     {
124         return (olympusPen);
125     }
126
127     @Override
128     public IThetaInterfaceProvider getThetaInterface()
129     {
130         return (theta);
131     }
132
133     /**
134      *   OPCカメラを使用するかどうか
135      *
136      * @return OPC / SONY / RICOH_GR2  (ICameraConnection.CameraConnectionMethod)
137      */
138     public ICameraConnection.CameraConnectionMethod getCammeraConnectionMethod()
139     {
140         ICameraConnection.CameraConnectionMethod ret = ICameraConnection.CameraConnectionMethod.OPC;
141         try
142         {
143             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
144             String connectionMethod = preferences.getString(IPreferencePropertyAccessor.CONNECTION_METHOD, "OPC");
145             if (connectionMethod.contains("SONY"))
146             {
147                 ret = ICameraConnection.CameraConnectionMethod.SONY;
148             }
149             else if (connectionMethod.contains("RICOH_GR2"))
150             {
151                 ret = ICameraConnection.CameraConnectionMethod.RICOH_GR2;
152             }
153             else if (connectionMethod.contains("FUJI_X"))
154             {
155                 ret = ICameraConnection.CameraConnectionMethod.FUJI_X;
156             }
157             else if (connectionMethod.contains("PANASONIC"))
158             {
159                 ret = ICameraConnection.CameraConnectionMethod.PANASONIC;
160             }
161             else if (connectionMethod.contains("OLYMPUS"))
162             {
163                 ret = ICameraConnection.CameraConnectionMethod.OLYMPUS;
164             }
165             else if (connectionMethod.contains("THETA"))
166             {
167                 ret = ICameraConnection.CameraConnectionMethod.THETA;
168             }
169             else if (connectionMethod.contains("CANON"))
170             {
171                 ret = ICameraConnection.CameraConnectionMethod.CANON;
172             }
173             else if (connectionMethod.contains("NIKON"))
174             {
175                 ret = ICameraConnection.CameraConnectionMethod.NIKON;
176             }
177         }
178         catch (Exception e)
179         {
180             e.printStackTrace();
181         }
182         return (ret);
183     }
184 }