1 package net.osdn.gokigen.cameratest.fuji.statuses;
3 import android.graphics.Point;
4 import android.graphics.PointF;
5 import android.util.SparseIntArray;
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;
24 class FujiStatusHolder implements IFujiStatus
26 private final String TAG = toString();
27 private SparseIntArray statusHolder;
33 statusHolder = new SparseIntArray();
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);
40 //Log.v(TAG, "updateValue() : " + id + "[" + value + "]");
41 statusHolder.put(id, value);
45 public int getValue(int statusId) {
47 return (statusHolder.get(statusId));
48 } catch (Exception e) {
55 public boolean isFocusLocked() {
57 int status = statusHolder.get(FOCUS_LOCK);
61 } catch (Exception e) {
68 public int getBatteryLevel()
73 status = statusHolder.get(BATTERY_LEVEL);
74 } catch (Exception e) {
80 status = statusHolder.get(BATTERY_LEVEL_2);
81 } catch (Exception e) {
85 if ((status == 1) || (status == 6)) {
87 } else if (status == 7) {
89 } else if ((status == 2) || (status == 8)) {
91 } else if (status == 9) {
93 } else if ((status == 3) || (status == 10)) {
95 } else if ((status == 4) || (status == 11)) {
102 public boolean isDeviceError()
105 int status = statusHolder.get(DEVICE_ERROR);
109 } catch (Exception e) {
116 public int getFlashStatus()
119 return (statusHolder.get(FLASH));
120 } catch (Exception e) {
127 public int getSelfTimerMode()
130 return (statusHolder.get(SELF_TIMER));
131 } catch (Exception e) {
139 public int getRemainImageSpace()
142 return (statusHolder.get(SDCARD_REMAIN_SIZE));
143 } catch (Exception e) {
150 public int getMovieImageSpace()
153 return (statusHolder.get(MOVIE_REMAINING_TIME));
154 } catch (Exception e) {
162 public String getShootingMode()
166 int value = statusHolder.get(SHOOTING_MODE);
167 if (value == SHOOTING_MANUAL)
171 else if (value == SHOOTING_PROGRAM)
175 else if (value == SHOOTING_APERTURE)
179 else if (value == SHOOTING_SHUTTER)
183 else if (value == SHOOTING_AUTO)
187 else if (value == SHOOTING_CUSTOM)
191 } catch (Exception e) {
198 public Point getFocusPoint()
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) {
208 return (new Point());