1 package jp.sfjp.gokigen.a01c.olycamerawrapper;
3 import android.content.Context;
4 import android.util.Log;
7 import java.util.TreeSet;
9 import jp.co.olympus.camerakit.OLYCamera;
10 import jp.co.olympus.camerakit.OLYCameraStatusListener;
11 import jp.sfjp.gokigen.a01c.R;
14 * OLYCameraStatusListenerの実装
17 public class CameraStatusListenerImpl implements OLYCameraStatusListener, ICameraStatusSummary
19 private final String TAG = this.toString();
21 public static final String APERTURE_VALUE = "ActualApertureValue";
22 public static final String SHUTTER_SPEED = "ActualShutterSpeed";
23 public static final String EXPOSURE_COMPENSATION = "ActualExposureCompensation";
24 public static final String ISO_SENSITIVITY = "ActualIsoSensitivity";
25 public static final String RECORDABLEIMAGES = "RemainingRecordableImages";
26 public static final String MEDIA_BUSY = "MediaBusy";
27 public static final String MEDIA_ERROR = "MediaError";
28 public static final String DETECT_FACES = "DetectedHumanFaces";
29 public static final String FOCAL_LENGTH = "ActualFocalLength";
30 public static final String ACTUAL_ISO_SENSITIVITY_WARNING = "ActualIsoSensitivityWarning";
31 public static final String EXPOSURE_WARNING = "ExposureWarning";
32 public static final String EXPOSURE_METERING_WARNING = "ExposureMeteringWarning";
33 public static final String HIGH_TEMPERATURE_WARNING = "HighTemperatureWarning";
34 public static final String LEVEL_GAUGE = "LevelGauge";
35 public static final String LENS_MOUNT_STATUS = "LensMountStatus";
36 public static final String MEDIA_MOUNT_STATUS = "MediaMountStatus";
37 public static final String REMAINING_RECORDABLE_TIME = "RemainingRecordableTime";
38 public static final String MINIMUM_FOCAL_LENGTH = "MinimumFocalLength";
39 public static final String MAXIMUM_FOCAL_LENGTH = "MaximumFocalLength";
41 private final ICameraStatusDisplay display;
42 private final Context context;
48 public CameraStatusListenerImpl(Context context, ICameraStatusDisplay parent)
50 this.context = context;
51 this.display = parent;
55 public void onUpdateStatus(OLYCamera camera, final String name)
68 case EXPOSURE_WARNING:
69 case EXPOSURE_METERING_WARNING:
70 case HIGH_TEMPERATURE_WARNING:
75 // 他の値が変わった場合には、ログだけ残して何もしない。
76 Log.v(TAG, "onUpdateStatus() : " + name);
80 display.updateCameraStatus(geCameraStatusMessage(camera, name));
88 public String geCameraStatusMessage(OLYCamera camera, String name)
90 String message = name;
95 if (camera.isHighTemperatureWarning())
97 warn = warn + " " + context.getString(R.string.high_temperature_warning);
99 if (camera.isExposureMeteringWarning())
101 warn = warn + " " + context.getString(R.string.exposure_metering_warning);
103 if (camera.isActualIsoSensitivityWarning())
105 warn = warn + " " + context.getString(R.string.iso_sensitivity_warning);
108 TreeSet<String> treeSet = new TreeSet<>();
109 treeSet.add(IOlyCameraProperty.TAKE_MODE);
110 treeSet.add(IOlyCameraProperty.WB_MODE);
111 treeSet.add(IOlyCameraProperty.AE_MODE);
112 treeSet.add(IOlyCameraProperty.EXPOSURE_COMPENSATION);
113 Map<String, String> values = camera.getCameraPropertyValues(treeSet);
114 //for (Map.Entry<String, String> entry : values.entrySet())
116 // Log.v(TAG, "STATUS : " + entry.getKey() + " : " + entry.getValue());
118 String takeMode = camera.getCameraPropertyValueTitle(values.get(IOlyCameraProperty.TAKE_MODE));
119 String wbMode = camera.getCameraPropertyValueTitle(values.get(IOlyCameraProperty.WB_MODE));
120 String aeMode = camera.getCameraPropertyValueTitle(values.get(IOlyCameraProperty.AE_MODE));
121 String aperture = camera.getCameraPropertyValueTitle(camera.getActualApertureValue());
122 String iso = camera.getCameraPropertyValueTitle(camera.getActualIsoSensitivity());
123 String shutter = camera.getCameraPropertyValueTitle(camera.getActualShutterSpeed());
124 message = " " + takeMode + " " + shutter + " F" + aperture + " ISO" + iso + " " + wbMode + " [" + aeMode + "]" + warn;