OSDN Git Service

カメラプロパティの用意続き。
[gokigen/FujiCam.git] / app / src / main / java / net / osdn / gokigen / cameratest / fuji / statuses / FujiStatusHolder.java
1 package net.osdn.gokigen.cameratest.fuji.statuses;
2
3 import android.graphics.Point;
4 import android.graphics.PointF;
5 import android.util.SparseIntArray;
6
7 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_APERTURE;
8 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_AUTO;
9 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_CUSTOM;
10 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_MANUAL;
11 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_PROGRAM;
12 import static net.osdn.gokigen.cameratest.fuji.PropertyValues.SHOOTING_SHUTTER;
13 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.BATTERY_LEVEL;
14 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.BATTERY_LEVEL_2;
15 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.DEVICE_ERROR;
16 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.FLASH;
17 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.FOCUS_LOCK;
18 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.FOCUS_POINT;
19 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.MOVIE_REMAINING_TIME;
20 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.SDCARD_REMAIN_SIZE;
21 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.SELF_TIMER;
22 import static net.osdn.gokigen.cameratest.fuji.statuses.Properties.SHOOTING_MODE;
23
24 class FujiStatusHolder implements IFujiStatus
25 {
26     private final String TAG = toString();
27     private SparseIntArray statusHolder;
28
29     /**
30      * コンストラクタ
31      */
32     FujiStatusHolder() {
33         statusHolder = new SparseIntArray();
34         statusHolder.clear();
35     }
36
37     void updateValue(int id, byte data0, byte data1, byte data2, byte data3) {
38         int value = ((((int) data3) & 0xff) << 24) + ((((int) data2) & 0xff) << 16) + ((((int) data1) & 0xff) << 8) + (((int) data0) & 0xff);
39
40         //Log.v(TAG, "updateValue() : " + id + "[" + value + "]");
41         statusHolder.put(id, value);
42     }
43
44     @Override
45     public int getValue(int statusId) {
46         try {
47             return (statusHolder.get(statusId));
48         } catch (Exception e) {
49             e.printStackTrace();
50         }
51         return (0);
52     }
53
54     @Override
55     public boolean isFocusLocked() {
56         try {
57             int status = statusHolder.get(FOCUS_LOCK);
58             if (status == 1) {
59                 return (true);
60             }
61         } catch (Exception e) {
62             e.printStackTrace();
63         }
64         return (false);
65     }
66
67     @Override
68     public int getBatteryLevel()
69     {
70         int level = -1;
71         int status = 0;
72         try {
73             status = statusHolder.get(BATTERY_LEVEL);
74         } catch (Exception e) {
75             e.printStackTrace();
76         }
77         if (status == 0)
78         {
79             try {
80                 status = statusHolder.get(BATTERY_LEVEL_2);
81             } catch (Exception e) {
82                 e.printStackTrace();
83             }
84         }
85         if ((status == 1) || (status == 6)) {
86             level = 0;
87         } else if (status == 7) {
88             level = 20;
89         } else if ((status == 2) || (status == 8)) {
90             level = 40;
91         } else if (status == 9) {
92             level = 60;
93         } else if ((status == 3) || (status == 10)) {
94             level = 80;
95         } else if ((status == 4) || (status == 11)) {
96             level = 100;
97         }
98         return (level);
99     }
100
101     @Override
102     public boolean isDeviceError()
103     {
104         try {
105             int status = statusHolder.get(DEVICE_ERROR);
106             if (status != 0) {
107                 return (true);
108             }
109         } catch (Exception e) {
110             e.printStackTrace();
111         }
112         return (false);
113     }
114
115     @Override
116     public int getFlashStatus()
117     {
118         try {
119             return (statusHolder.get(FLASH));
120         } catch (Exception e) {
121             e.printStackTrace();
122         }
123         return (-1);
124     }
125
126     @Override
127     public int getSelfTimerMode()
128     {
129         try {
130             return (statusHolder.get(SELF_TIMER));
131         } catch (Exception e) {
132             e.printStackTrace();
133         }
134         return (-1);
135     }
136
137
138     @Override
139     public int getRemainImageSpace()
140     {
141         try {
142             return (statusHolder.get(SDCARD_REMAIN_SIZE));
143         } catch (Exception e) {
144             e.printStackTrace();
145         }
146         return (-1);
147     }
148
149     @Override
150     public int getMovieImageSpace()
151     {
152         try {
153             return (statusHolder.get(MOVIE_REMAINING_TIME));
154         } catch (Exception e) {
155             e.printStackTrace();
156         }
157         return (-1);
158     }
159
160
161     @Override
162     public String getShootingMode()
163     {
164         String mode = "?";
165         try {
166             int value = statusHolder.get(SHOOTING_MODE);
167             if (value == SHOOTING_MANUAL)
168             {
169                 mode = "M";
170             }
171             else if (value == SHOOTING_PROGRAM)
172             {
173                 mode = "P";
174             }
175             else if (value == SHOOTING_APERTURE)
176             {
177                 mode = "A";
178             }
179             else if (value == SHOOTING_SHUTTER)
180             {
181                 mode = "S";
182             }
183             else if (value == SHOOTING_AUTO)
184             {
185                 mode = "a";
186             }
187             else if (value == SHOOTING_CUSTOM)
188             {
189                 mode = "C";
190             }
191         } catch (Exception e) {
192             e.printStackTrace();
193         }
194         return (mode);
195     }
196
197     @Override
198     public Point getFocusPoint()
199     {
200         try {
201             int status = statusHolder.get(FOCUS_POINT);
202             int y = (status & 0xff);
203             int x = ((status & 0xff00) >>> 8);
204             return (new Point(x, y));
205         } catch (Exception e) {
206             e.printStackTrace();
207         }
208         return (new Point());
209     }
210 }