1 package net.osdn.gokigen.gr2control.camera.olympus.operation.takepicture;
3 import android.graphics.RectF;
4 import android.util.Log;
6 import net.osdn.gokigen.gr2control.liveview.IAutoFocusFrameDisplay;
7 import net.osdn.gokigen.gr2control.liveview.IIndicatorControl;
9 import jp.co.olympus.camerakit.OLYCamera;
10 import jp.co.olympus.camerakit.OLYCameraAutoFocusResult;
16 public class SequentialShotControl implements OLYCamera.TakePictureCallback
18 private final String TAG = toString();
19 //private final Context context;
20 private final OLYCamera camera;
21 private final IIndicatorControl indicator;
22 private IAutoFocusFrameDisplay frameDisplayer;
24 private IIndicatorControl.shootingStatus currentStatus = IIndicatorControl.shootingStatus.Unknown;
30 //public SequentialShotControl(Context context, OLYCamera camera, IAutoFocusFrameDisplay frameDisplayer, IIndicatorControl indicator)
31 public SequentialShotControl(OLYCamera camera, IAutoFocusFrameDisplay frameDisplayer, IIndicatorControl indicator)
33 //this.context = context;
35 this.frameDisplayer = frameDisplayer;
36 this.indicator = indicator;
43 public void shotControl()
45 if (camera.isRecordingVideo())
47 // ビデオ撮影中の場合は、何もしない(モード異常なので)
52 if (!camera.isTakingPicture())
55 currentStatus = IIndicatorControl.shootingStatus.Starting;
56 camera.startTakingPicture(null, this);
57 indicator.onShootingStatusUpdate(currentStatus);
62 currentStatus = IIndicatorControl.shootingStatus.Stopping;
63 camera.stopTakingPicture(this);
64 indicator.onShootingStatusUpdate(currentStatus);
78 public void onProgress(OLYCamera olyCamera, OLYCamera.TakingProgress takingProgress, OLYCameraAutoFocusResult olyCameraAutoFocusResult)
80 if (currentStatus == IIndicatorControl.shootingStatus.Stopping)
87 if (takingProgress != OLYCamera.TakingProgress.EndFocusing)
92 String result = olyCameraAutoFocusResult.getResult();
95 Log.v(TAG, "FocusResult is null.");
100 RectF postFocusFrameRect = olyCameraAutoFocusResult.getRect();
101 if (postFocusFrameRect != null)
103 showFocusFrame(postFocusFrameRect, IAutoFocusFrameDisplay.FocusFrameStatus.Focused, 0.0);
119 public void onCompleted()
121 Log.v(TAG, "SequentialShotControl::onCompleted()");
122 indicator.onShootingStatusUpdate(currentStatus);
123 if (currentStatus != IIndicatorControl.shootingStatus.Stopping)
132 camera.clearAutoFocusPoint();
139 currentStatus = IIndicatorControl.shootingStatus.Unknown;
140 indicator.onShootingStatusUpdate(currentStatus);
148 public void onErrorOccurred(Exception e)
152 camera.clearAutoFocusPoint();
157 ee.printStackTrace();
160 currentStatus = IIndicatorControl.shootingStatus.Unknown;
167 private void showFocusFrame(RectF rect, IAutoFocusFrameDisplay.FocusFrameStatus status, double duration)
169 if (frameDisplayer != null)
171 frameDisplayer.showFocusFrame(rect, status, duration);
173 indicator.onAfLockUpdate(IAutoFocusFrameDisplay.FocusFrameStatus.Focused == status);
180 private void hideFocusFrame()
182 if (frameDisplayer != null)
184 frameDisplayer.hideFocusFrame();
186 indicator.onAfLockUpdate(false);