OSDN Git Service

Nikon対応の開始。
[gokigen/PKRemote.git] / app / src / main / java / net / osdn / gokigen / pkremote / camera / CameraInterfaceProvider.java
1 package net.osdn.gokigen.pkremote.camera;
2
3 import android.content.SharedPreferences;
4
5 import net.osdn.gokigen.pkremote.IInformationReceiver;
6 import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraButtonControl;
7 import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraConnection;
8 import net.osdn.gokigen.pkremote.camera.interfaces.liveview.ILiveViewListener;
9 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentsRecognizer;
10 import net.osdn.gokigen.pkremote.camera.interfaces.status.ICameraHardwareStatus;
11 import net.osdn.gokigen.pkremote.camera.interfaces.status.ICameraInformation;
12 import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraRunMode;
13 import net.osdn.gokigen.pkremote.camera.interfaces.status.ICameraStatus;
14 import net.osdn.gokigen.pkremote.camera.interfaces.status.ICameraStatusReceiver;
15 import net.osdn.gokigen.pkremote.camera.interfaces.status.ICameraStatusWatcher;
16 import net.osdn.gokigen.pkremote.camera.interfaces.control.ICaptureControl;
17 import net.osdn.gokigen.pkremote.camera.interfaces.liveview.IDisplayInjector;
18 import net.osdn.gokigen.pkremote.camera.interfaces.control.IFocusingControl;
19 import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
20 import net.osdn.gokigen.pkremote.camera.interfaces.liveview.ILiveViewControl;
21 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
22 import net.osdn.gokigen.pkremote.camera.interfaces.control.IZoomLensControl;
23 import net.osdn.gokigen.pkremote.camera.playback.CameraContentsRecognizer;
24 import net.osdn.gokigen.pkremote.camera.utils.CameraStatusListener;
25 import net.osdn.gokigen.pkremote.camera.vendor.fujix.wrapper.FujiXInterfaceProvider;
26 import net.osdn.gokigen.pkremote.camera.vendor.nikon.INikonInterfaceProvider;
27 import net.osdn.gokigen.pkremote.camera.vendor.nikon.wrapper.NikonInterfaceProvider;
28 import net.osdn.gokigen.pkremote.camera.vendor.olympus.IOlympusInterfaceProvider;
29 import net.osdn.gokigen.pkremote.camera.vendor.olympus.wrapper.OlympusInterfaceProvider;
30 import net.osdn.gokigen.pkremote.camera.vendor.olympuspen.wrapper.OlympusPenInterfaceProvider;
31 import net.osdn.gokigen.pkremote.camera.vendor.panasonic.wrapper.PanasonicCameraWrapper;
32 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.IPtpIpInterfaceProvider;
33 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.PtpIpInterfaceProvider;
34 import net.osdn.gokigen.pkremote.camera.vendor.ricoh.wrapper.RicohGr2InterfaceProvider;
35 import net.osdn.gokigen.pkremote.camera.vendor.sony.ISonyInterfaceProvider;
36 import net.osdn.gokigen.pkremote.camera.vendor.sony.wrapper.SonyCameraWrapper;
37 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
38
39 import androidx.annotation.NonNull;
40 import androidx.appcompat.app.AppCompatActivity;
41 import androidx.preference.PreferenceManager;
42
43 /**
44  *
45  *
46  */
47 public class CameraInterfaceProvider implements IInterfaceProvider
48 {
49     private final SonyCameraWrapper sony;
50     private final OlympusInterfaceProvider olympus;
51     private final RicohGr2InterfaceProvider ricohGr2;
52     private final FujiXInterfaceProvider fujiX;
53     private final PanasonicCameraWrapper panasonic;
54     private final PtpIpInterfaceProvider ptpip;
55     private final NikonInterfaceProvider nikon;
56     private final OlympusPenInterfaceProvider olympuspen;
57     private final IInformationReceiver informationReceiver;
58     private final CameraContentsRecognizer cameraContentsRecognizer;
59     private final AppCompatActivity context;
60     //private final CameraStatusListener statusListener;
61     private ICameraConnection.CameraConnectionMethod connectionMethod = ICameraConnection.CameraConnectionMethod.UNKNOWN;
62
63     public static IInterfaceProvider newInstance(@NonNull AppCompatActivity context, @NonNull ICameraStatusReceiver provider, @NonNull IInformationReceiver informationReceiver)
64     {
65         return (new CameraInterfaceProvider(context, provider, informationReceiver));
66     }
67
68     /**
69      *
70      *
71      */
72     private CameraInterfaceProvider(@NonNull AppCompatActivity context, @NonNull ICameraStatusReceiver provider, @NonNull IInformationReceiver informationReceiver)
73     {
74         this.context = context;
75         CameraStatusListener statusListener = new CameraStatusListener();
76         olympus = new OlympusInterfaceProvider(context, provider);
77         ricohGr2 = new RicohGr2InterfaceProvider(context, provider);
78         fujiX = new FujiXInterfaceProvider(context, provider, statusListener, informationReceiver);
79         sony = new SonyCameraWrapper(context, provider, statusListener, informationReceiver);
80         ptpip = new PtpIpInterfaceProvider(context, provider, statusListener, informationReceiver);
81         nikon = new NikonInterfaceProvider(context, provider, statusListener, informationReceiver);
82         panasonic = new PanasonicCameraWrapper(context, provider, statusListener, informationReceiver);
83         olympuspen = new OlympusPenInterfaceProvider(context, provider);
84         this.informationReceiver = informationReceiver;
85         this.cameraContentsRecognizer = new CameraContentsRecognizer(context, this);
86     }
87
88     @Override
89     public IOlympusInterfaceProvider getOlympusInterfaceProvider()
90     {
91         return (olympus);
92     }
93
94     @Override
95     public ISonyInterfaceProvider getSonyInterface()
96     {
97         return (sony);
98     }
99
100     @Override
101     public IPtpIpInterfaceProvider getPtpIpInterface()
102     {
103         return (ptpip);
104     }
105
106     @Override
107     public INikonInterfaceProvider getNikonInterface()
108     {
109         return (nikon);
110     }
111
112
113     /**
114      *
115      *
116      */
117     @Override
118     public ICameraConnection getCameraConnection()
119     {
120         try
121         {
122             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
123             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
124             {
125                 return (olympus.getOlyCameraConnection());
126             }
127             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
128             {
129                 return (fujiX.getFujiXCameraConnection());
130             }
131             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
132             {
133                 return (panasonic.getPanasonicCameraConnection());
134             }
135             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
136             {
137                 return (sony.getSonyCameraConnection());
138             }
139             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
140             {
141                 return (ptpip.getPtpIpCameraConnection());
142             }
143             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
144             {
145                 return (nikon.getPtpIpCameraConnection());
146             }
147             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
148             {
149                 return (olympuspen.getOlyCameraConnection());
150             }
151             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
152             {
153                 return (ricohGr2.getRicohGr2CameraConnection());
154             }
155         }
156         catch (Exception e)
157         {
158             e.printStackTrace();
159         }
160         return (null);
161     }
162
163     @Override
164     public ICameraButtonControl getButtonControl()
165     {
166         try
167         {
168             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
169             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
170             {
171                 return (olympus.getButtonControl());
172             }
173             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
174             {
175                 return (fujiX.getButtonControl());
176             }
177             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
178             {
179                 return (panasonic.getButtonControl());
180             }
181             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
182             {
183                 return (sony.getButtonControl());
184             }
185             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
186             {
187                 return (ptpip.getButtonControl());
188             }
189             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
190             {
191                 return (nikon.getButtonControl());
192             }
193             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
194             {
195                 return (olympuspen.getButtonControl());
196             }
197             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
198             {
199                 return (ricohGr2.getButtonControl());
200             }
201         }
202         catch (Exception e)
203         {
204             e.printStackTrace();
205         }
206         return (null);
207     }
208
209     @Override
210     public IDisplayInjector getDisplayInjector()
211     {
212         try
213         {
214             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
215             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
216             {
217                 return (olympus.getDisplayInjector());
218             }
219             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
220             {
221                 return (fujiX.getDisplayInjector());
222             }
223             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
224             {
225                 return (panasonic.getDisplayInjector());
226             }
227             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
228             {
229                 return (sony.getDisplayInjector());
230             }
231             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
232             {
233                 return (ptpip.getDisplayInjector());
234             }
235             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
236             {
237                 return (nikon.getDisplayInjector());
238             }
239             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
240             {
241                 return (olympuspen.getDisplayInjector());
242             }
243             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
244             {
245                 return (ricohGr2.getDisplayInjector());
246             }
247         }
248         catch (Exception e)
249         {
250             e.printStackTrace();
251         }
252         return (null);
253     }
254
255     @Override
256     public ILiveViewControl getLiveViewControl()
257     {
258         try
259         {
260             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
261             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
262             {
263                 return (olympus.getLiveViewControl());
264             }
265             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
266             {
267                 return (fujiX.getLiveViewControl());
268             }
269             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
270             {
271                 return (panasonic.getPanasonicLiveViewControl());
272             }
273             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
274             {
275                 return (sony.getLiveViewControl());
276             }
277             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
278             {
279                 return (ptpip.getLiveViewControl());
280             }
281             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
282             {
283                 return (nikon.getLiveViewControl());
284             }
285             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
286             {
287                 return (olympuspen.getLiveViewControl());
288             }
289             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
290             {
291                 return (ricohGr2.getLiveViewControl());
292             }
293         }
294         catch (Exception e)
295         {
296             e.printStackTrace();
297         }
298         return (null);
299     }
300
301     @Override
302     public ILiveViewListener getLiveViewListener()
303     {
304         try
305         {
306             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
307             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
308             {
309                 return (olympus.getLiveViewListener());
310             }
311             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
312             {
313                 return (fujiX.getLiveViewListener());
314             }
315             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
316             {
317                 return (panasonic.getLiveViewListener());
318             }
319             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
320             {
321                 return (sony.getLiveViewListener());
322             }
323             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
324             {
325                 return (ptpip.getLiveViewListener());
326             }
327             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
328             {
329                 return (nikon.getLiveViewListener());
330             }
331             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
332             {
333                 return (olympuspen.getLiveViewListener());
334             }
335             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
336             {
337                 return (ricohGr2.getLiveViewListener());
338             }
339         }
340         catch (Exception e)
341         {
342             e.printStackTrace();
343         }
344         return (null);
345     }
346
347     @Override
348     public IFocusingControl getFocusingControl()
349     {
350         try
351         {
352             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
353             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
354             {
355                 return (olympus.getFocusingControl());
356             }
357             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
358             {
359                 return (fujiX.getFocusingControl());
360             }
361             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
362             {
363                 return (panasonic.getFocusingControl());
364             }
365             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
366             {
367                 return (sony.getFocusingControl());
368             }
369             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
370             {
371                 return (ptpip.getFocusingControl());
372             }
373             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
374             {
375                 return (nikon.getFocusingControl());
376             }
377             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
378             {
379                 return (olympuspen.getFocusingControl());
380             }
381             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
382             {
383                 return (ricohGr2.getFocusingControl());
384             }
385         }
386         catch (Exception e)
387         {
388             e.printStackTrace();
389         }
390         return (null);
391     }
392
393     @Override
394     public ICameraInformation getCameraInformation()
395     {
396         try
397         {
398             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
399             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
400             {
401                 return (olympus.getCameraInformation());
402             }
403             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
404             {
405                 return (fujiX.getCameraInformation());
406             }
407             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
408             {
409                 return (panasonic.getCameraInformation());
410             }
411             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
412             {
413                 return (sony.getCameraInformation());
414             }
415             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
416             {
417                 return (ptpip.getCameraInformation());
418             }
419             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
420             {
421                 return (nikon.getCameraInformation());
422             }
423             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
424             {
425                 return (olympuspen.getCameraInformation());
426             }
427             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
428             {
429                 return (ricohGr2.getCameraInformation());
430             }
431         }
432         catch (Exception e)
433         {
434             e.printStackTrace();
435         }
436         return (null);
437     }
438
439     @Override
440     public IZoomLensControl getZoomLensControl()
441     {
442         try
443         {
444             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
445             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
446             {
447                 return (olympus.getZoomLensControl());
448             }
449             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
450             {
451                 return (fujiX.getZoomLensControl());
452             }
453             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
454             {
455                 return (panasonic.getZoomLensControl());
456             }
457             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
458             {
459                 return (sony.getZoomLensControl());
460             }
461             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
462             {
463                 return (ptpip.getZoomLensControl());
464             }
465             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
466             {
467                 return (nikon.getZoomLensControl());
468             }
469             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
470             {
471                 return (olympuspen.getZoomLensControl());
472             }
473             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
474             {
475                 return (ricohGr2.getZoomLensControl());
476             }
477         }
478         catch (Exception e)
479         {
480             e.printStackTrace();
481         }
482         return (null);
483     }
484
485     @Override
486     public ICaptureControl getCaptureControl()
487     {
488         try
489         {
490             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
491             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
492             {
493                 return (olympus.getCaptureControl());
494             }
495             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
496             {
497                 return (fujiX.getCaptureControl());
498             }
499             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
500             {
501                 return (panasonic.getCaptureControl());
502             }
503             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
504             {
505                 return (sony.getCaptureControl());
506             }
507             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
508             {
509                 return (ptpip.getCaptureControl());
510             }
511             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
512             {
513                 return (nikon.getCaptureControl());
514             }
515             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
516             {
517                 return (olympuspen.getCaptureControl());
518             }
519             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
520             {
521                 return (ricohGr2.getCaptureControl());
522             }
523         }
524         catch (Exception e)
525         {
526             e.printStackTrace();
527         }
528         return (null);
529     }
530
531     @Override
532     public ICameraStatus getCameraStatusListHolder()
533     {
534         try
535         {
536             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
537             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
538             {
539                 return (olympus.getCameraStatusListHolder());
540             }
541             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
542             {
543                 return (fujiX.getCameraStatusListHolder());
544             }
545             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
546             {
547                 return (panasonic.getCameraStatusListHolder());
548             }
549             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
550             {
551                 return (sony.getCameraStatusListHolder());
552             }
553             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
554             {
555                 return (ptpip.getCameraStatusListHolder());
556             }
557             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
558             {
559                 return (nikon.getCameraStatusListHolder());
560             }
561             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
562             {
563                 return (olympuspen.getCameraStatusListHolder());
564             }
565             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
566             {
567                 return (ricohGr2.getCameraStatusListHolder());
568             }
569         }
570         catch (Exception e)
571         {
572             e.printStackTrace();
573         }
574         return (null);
575     }
576
577     @Override
578     public ICameraStatusWatcher getCameraStatusWatcher()
579     {
580         try
581         {
582             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
583             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
584             {
585                 return (olympus.getCameraStatusWatcher());
586             }
587             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
588             {
589                 return (fujiX.getCameraStatusWatcher());
590             }
591             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
592             {
593                 return (panasonic.getCameraStatusWatcher());
594             }
595             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
596             {
597                 return (sony.getCameraStatusWatcher());
598             }
599             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
600             {
601                 return (ptpip.getCameraStatusWatcher());
602             }
603             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
604             {
605                 return (nikon.getCameraStatusWatcher());
606             }
607             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
608             {
609                 return (olympuspen.getCameraStatusWatcher());
610             }
611             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
612             {
613                 return (ricohGr2.getCameraStatusWatcher());
614             }
615         }
616         catch (Exception e)
617         {
618             e.printStackTrace();
619         }
620         return (null);
621     }
622
623     @Override
624     public IPlaybackControl getPlaybackControl()
625     {
626         try
627         {
628             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
629             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
630             {
631                 return (olympus.getPlaybackControl());
632             }
633             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
634             {
635                 return (fujiX.getPlaybackControl());
636             }
637             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
638             {
639                 return (panasonic.getPlaybackControl());
640             }
641             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
642             {
643                 return (sony.getPlaybackControl());
644             }
645             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
646             {
647                 return (ptpip.getPlaybackControl());
648             }
649             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
650             {
651                 return (nikon.getPlaybackControl());
652             }
653             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
654             {
655                 return (olympuspen.getPlaybackControl());
656             }
657             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
658             {
659                 return (ricohGr2.getPlaybackControl());
660             }
661         }
662         catch (Exception e)
663         {
664             e.printStackTrace();
665         }
666         return (null);
667     }
668
669     @Override
670     public ICameraHardwareStatus getHardwareStatus()
671     {
672         try
673         {
674             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
675             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
676             {
677                 return (olympus.getHardwareStatus());
678             }
679             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
680             {
681                 return (fujiX.getHardwareStatus());
682             }
683             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
684             {
685                 return (panasonic.getHardwareStatus());
686             }
687             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
688             {
689                 return (sony.getHardwareStatus());
690             }
691             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
692             {
693                 return (ptpip.getHardwareStatus());
694             }
695             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
696             {
697                 return (nikon.getHardwareStatus());
698             }
699             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
700             {
701                 return (olympuspen.getHardwareStatus());
702             }
703             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
704             {
705                 return (ricohGr2.getHardwareStatus());
706             }
707         }
708         catch (Exception e)
709         {
710             e.printStackTrace();
711         }
712         return (null);
713     }
714
715     @Override
716     public ICameraRunMode getCameraRunMode()
717     {
718         try
719         {
720             ICameraConnection.CameraConnectionMethod connectionMethod = getCammeraConnectionMethodImpl();
721             if (connectionMethod == ICameraConnection.CameraConnectionMethod.OPC)
722             {
723                 return (olympus.getCameraRunMode());
724             }
725             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.FUJI_X)
726             {
727                 return (fujiX.getCameraRunMode());
728             }
729             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.PANASONIC)
730             {
731                 return (panasonic.getCameraRunMode());
732             }
733             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.SONY)
734             {
735                 return (sony.getCameraRunMode());
736             }
737             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.CANON)
738             {
739                 return (ptpip.getCameraRunMode());
740             }
741             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.NIKON)
742             {
743                 return (nikon.getCameraRunMode());
744             }
745             else if (connectionMethod == ICameraConnection.CameraConnectionMethod.OLYMPUS)
746             {
747                 return (olympuspen.getCameraRunMode());
748             }
749             else // if (connectionMethod == ICameraConnection.CameraConnectionMethod.RICOH)
750             {
751                 return (ricohGr2.getCameraRunMode());
752             }
753         }
754         catch (Exception e)
755         {
756             e.printStackTrace();
757         }
758         return (null);
759     }
760
761     /**
762      *   OPC/GR2/SONY カメラを使用するかどうか
763      *
764      * @return OPC / SONY / RICOH  (ICameraConnection.CameraConnectionMethod)
765      */
766     public ICameraConnection.CameraConnectionMethod getCammeraConnectionMethod()
767     {
768         return (getCammeraConnectionMethodImpl());
769     }
770
771     /**
772      *
773      *
774      */
775     @Override
776     public void resetCameraConnectionMethod()
777     {
778         connectionMethod = ICameraConnection.CameraConnectionMethod.UNKNOWN;
779     }
780
781     /**
782      *
783      *
784      */
785     @Override
786     public IInformationReceiver getInformationReceiver()
787     {
788         return (informationReceiver);
789     }
790
791     @Override
792     public ICameraContentsRecognizer getCameraContentsRecognizer()
793     {
794         return (cameraContentsRecognizer);
795     }
796
797     /**
798      *
799      *
800      */
801     private ICameraConnection.CameraConnectionMethod getCammeraConnectionMethodImpl()
802     {
803         if (connectionMethod != ICameraConnection.CameraConnectionMethod.UNKNOWN)
804         {
805             return (connectionMethod);
806         }
807         ICameraConnection.CameraConnectionMethod ret;
808         try
809         {
810             SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
811             String connectionMethod = preferences.getString(IPreferencePropertyAccessor.CONNECTION_METHOD, "RICOH");
812             if (connectionMethod.contains("RICOH"))
813             {
814                 ret = ICameraConnection.CameraConnectionMethod.RICOH;
815             }
816             else if (connectionMethod.contains("FUJI_X"))
817             {
818                 ret = ICameraConnection.CameraConnectionMethod.FUJI_X;
819             }
820             else if (connectionMethod.contains("PANASONIC"))
821             {
822                 ret = ICameraConnection.CameraConnectionMethod.PANASONIC;
823             }
824             else if (connectionMethod.contains("SONY"))
825             {
826                 ret = ICameraConnection.CameraConnectionMethod.SONY;
827             }
828             else if (connectionMethod.contains("CANON"))
829             {
830                 ret = ICameraConnection.CameraConnectionMethod.CANON;
831             }
832             else if (connectionMethod.contains("NIKON"))
833             {
834                 ret = ICameraConnection.CameraConnectionMethod.NIKON;
835             }
836             else if (connectionMethod.contains("OLYMPUS"))
837             {
838                 ret = ICameraConnection.CameraConnectionMethod.OLYMPUS;
839             }
840             else // if (connectionMethod.contains("OPC"))
841             {
842                 ret = ICameraConnection.CameraConnectionMethod.OPC;
843             }
844 /*
845             else if (connectionMethod.contains("SONY"))
846             {
847                 ret = ICameraConnection.CameraConnectionMethod.SONY;
848             }
849 */
850         }
851         catch (Exception e)
852         {
853             e.printStackTrace();
854             ret = ICameraConnection.CameraConnectionMethod.UNKNOWN;
855         }
856         connectionMethod = ret;
857         return (connectionMethod);
858     }
859 }