OSDN Git Service

やっぱり、OPCのSDKを入れてOlympus Airでも使えるようにする。
[gokigen/Gr2Control.git] / app / src / main / java / net / osdn / gokigen / gr2control / camera / olympus / wrapper / OLYCameraPropertyListenerImpl.java
1 package net.osdn.gokigen.gr2control.camera.olympus.wrapper;
2
3 import android.util.Log;
4
5 import net.osdn.gokigen.gr2control.camera.ICameraInformation;
6 import net.osdn.gokigen.gr2control.camera.IFocusingModeNotify;
7 import net.osdn.gokigen.gr2control.camera.olympus.wrapper.property.IOlyCameraProperty;
8
9 import jp.co.olympus.camerakit.OLYCamera;
10 import jp.co.olympus.camerakit.OLYCameraPropertyListener;
11
12 /**
13  *
14  *
15  */
16 public class OLYCameraPropertyListenerImpl implements OLYCameraPropertyListener, ICameraInformation
17 {
18     private final String TAG = toString();
19     private final OLYCamera camera;
20     private IFocusingModeNotify focusCallback = null;
21
22     /**
23      *
24      *
25      */
26     OLYCameraPropertyListenerImpl(OLYCamera olyCamera)
27     {
28         olyCamera.setCameraPropertyListener(this);
29         this.camera = olyCamera;
30     }
31
32     /**
33      *
34      *
35      */
36     public void setFocusingControl(IFocusingModeNotify focusCallback)
37     {
38         this.focusCallback = focusCallback;
39     }
40
41     /**
42      *
43      *
44      */
45     @Override
46     public void onUpdateCameraProperty(final OLYCamera olyCamera, final String name)
47     {
48         Thread thread = new Thread(new Runnable()
49         {
50             @Override
51             public void run()
52             {
53                 switch (name)
54                 {
55                     case IOlyCameraProperty.FOCUS_STILL:
56                         //
57                         Log.v(TAG, "onUpdateCameraProperty() : " + name);
58                         if (focusCallback != null)
59                         {
60                             focusCallback.changedFocusingMode();
61                         }
62                         break;
63
64                     default:
65                         //
66                         break;
67                 }
68             }
69         });
70         try
71         {
72             thread.start();
73         }
74         catch (Exception e)
75         {
76             e.printStackTrace();
77         }
78     }
79
80     /**
81      *  フォーカス状態を知る(MF or AF)
82      * @return true : MF / false : AF
83      */
84     @Override
85     public boolean isManualFocus()
86     {
87         boolean isManualFocus = false;
88         try
89         {
90             String value = camera.getCameraPropertyValue(IOlyCameraProperty.FOCUS_STILL);
91             Log.v(TAG, "OlyCameraPropertyProxy::isManualFocus() " + value);
92             isManualFocus = !(value.contains("AF"));
93         }
94         catch (Exception e)
95         {
96             e.printStackTrace();
97         }
98         return (isManualFocus);
99     }
100
101     /**
102      * 電動ズーム機能を持つレンズが装着されているか確認
103      *
104      * @return true ; 電動ズーム付き / false : 電動ズームなし
105      */
106     @Override
107     public boolean isElectricZoomLens()
108     {
109         return ((camera != null)&&(camera.getLensMountStatus()).contains("electriczoom"));
110     }
111
112     /**
113      *  AE ロック状態を知る
114      *
115      * @return true : AE Lock / false : AE Unlock
116      */
117     @Override
118     public boolean isExposureLocked()
119     {
120         boolean isExposureLocked =false;
121         try
122         {
123             String value = camera.getCameraPropertyValue(IOlyCameraProperty.AE_LOCK_STATE);
124             Log.v(TAG, "OlyCameraPropertyProxy::isExposureLocked() " + value);
125             isExposureLocked = !(value.contains("UNLOCK"));
126         }
127         catch (Exception e)
128         {
129             e.printStackTrace();
130         }
131         return (isExposureLocked);
132     }
133 }