1 package net.osdn.gokigen.gr2control.camera.ricohgr2.wrapper;
3 import android.support.annotation.NonNull;
4 import android.util.Log;
6 import net.osdn.gokigen.gr2control.liveview.ICameraStatusUpdateNotify;
8 import org.json.JSONArray;
9 import org.json.JSONObject;
11 import java.util.ArrayList;
12 import java.util.List;
18 class RicohGr2StatusHolder
20 private final String TAG = toString();
21 private final ICameraStatusUpdateNotify notifier;
23 private JSONObject latestResultObject = null;
24 private boolean focused = false;
25 private boolean focusLocked = false;
26 private String avStatus = "";
27 private String tvStatus = "";
28 private String xvStatus = "";
29 private String exposureModeStatus = "";
30 private String meteringModeStatus = "";
31 private String wbModeStatus = "";
32 private String batteryStatus = "";
38 RicohGr2StatusHolder(ICameraStatusUpdateNotify notifier)
40 this.notifier = notifier;
47 List<String> getAvailableItemList(@NonNull String key)
49 List<String> itemList = new ArrayList<>();
52 JSONArray array = latestResultObject.getJSONArray(key);
57 int nofItems = array.length();
58 for (int index = 0; index < nofItems; index++)
62 itemList.add(array.getString(index));
77 String getItemStatus(@NonNull String key)
81 return (latestResultObject.getString(key));
90 private String getStatusString(JSONObject obj, String name)
94 return (obj.getString(name));
103 private boolean getBooleanStatus(JSONObject obj, String name)
106 return (obj.getBoolean(name));
107 } catch (Exception e) {
108 //e.printStackTrace();
117 void updateStatus(String replyString)
119 if ((replyString == null)||(replyString.length() < 1))
121 Log.v(TAG, "httpGet() reply is null. ");
127 latestResultObject = new JSONObject(replyString);
128 String result = getStatusString(latestResultObject,"errMsg");
129 String av = getStatusString(latestResultObject,"av");
130 String tv = getStatusString(latestResultObject,"tv");
131 String xv = getStatusString(latestResultObject,"xv");
132 String exposureMode = getStatusString(latestResultObject,"exposureMode");
133 String meteringMode = getStatusString(latestResultObject,"meteringMode");
134 String wbMode = getStatusString(latestResultObject,"WBMode");
135 String battery = getStatusString(latestResultObject,"battery");
136 boolean focus = getBooleanStatus(latestResultObject,"focused");
137 boolean focusLock = getBooleanStatus(latestResultObject,"focusLocked");
139 if (result.contains("OK"))
141 if (!avStatus.equals(av))
144 notifier.updatedAperture(avStatus);
146 if (!tvStatus.equals(tv))
149 notifier.updatedShutterSpeed(tvStatus);
151 if (!xvStatus.equals(xv))
154 notifier.updatedExposureCompensation(xvStatus);
156 if (!exposureModeStatus.equals(exposureMode))
158 exposureModeStatus = exposureMode;
159 notifier.updatedTakeMode(exposureModeStatus);
161 if (!meteringModeStatus.equals(meteringMode))
163 meteringModeStatus = meteringMode;
164 notifier.updatedMeteringMode(meteringModeStatus);
166 if (!wbModeStatus.equals(wbMode))
168 wbModeStatus = wbMode;
169 notifier.updatedWBMode(wbModeStatus);
171 if (!batteryStatus.equals(battery))
173 batteryStatus = battery;
174 notifier.updateRemainBattery(Integer.parseInt(batteryStatus));
176 if ((focus != focused)||(focusLock != focusLocked))
179 focusLocked = focusLock;
180 notifier.updateFocusedStatus(focused, focusLocked);