|
|
@ -6,6 +6,7 @@ import android.hardware.Camera; |
|
|
|
import android.media.CamcorderProfile; |
|
|
|
import android.media.CamcorderProfile; |
|
|
|
import android.media.MediaRecorder; |
|
|
|
import android.media.MediaRecorder; |
|
|
|
import android.os.Handler; |
|
|
|
import android.os.Handler; |
|
|
|
|
|
|
|
import android.util.Log; |
|
|
|
import android.support.annotation.Nullable; |
|
|
|
import android.support.annotation.Nullable; |
|
|
|
import android.view.MotionEvent; |
|
|
|
import android.view.MotionEvent; |
|
|
|
import android.view.SurfaceHolder; |
|
|
|
import android.view.SurfaceHolder; |
|
|
@ -30,6 +31,8 @@ import static com.flurgle.camerakit.CameraKit.Constants.METHOD_STILL; |
|
|
|
@SuppressWarnings("deprecation") |
|
|
|
@SuppressWarnings("deprecation") |
|
|
|
public class Camera1 extends CameraImpl { |
|
|
|
public class Camera1 extends CameraImpl { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String TAG = Camera1.class.getSimpleName(); |
|
|
|
|
|
|
|
|
|
|
|
private static final int FOCUS_AREA_SIZE_DEFAULT = 300; |
|
|
|
private static final int FOCUS_AREA_SIZE_DEFAULT = 300; |
|
|
|
private static final int FOCUS_METERING_AREA_WEIGHT_DEFAULT = 1000; |
|
|
|
private static final int FOCUS_METERING_AREA_WEIGHT_DEFAULT = 1000; |
|
|
|
private static final int DELAY_MILLIS_BEFORE_RESETTING_FOCUS = 3000; |
|
|
|
private static final int DELAY_MILLIS_BEFORE_RESETTING_FOCUS = 3000; |
|
|
@ -44,6 +47,7 @@ public class Camera1 extends CameraImpl { |
|
|
|
private MediaRecorder mMediaRecorder; |
|
|
|
private MediaRecorder mMediaRecorder; |
|
|
|
private File mVideoFile; |
|
|
|
private File mVideoFile; |
|
|
|
private Camera.AutoFocusCallback mAutofocusCallback; |
|
|
|
private Camera.AutoFocusCallback mAutofocusCallback; |
|
|
|
|
|
|
|
private boolean capturingImage = false; |
|
|
|
|
|
|
|
|
|
|
|
private int mDisplayOrientation; |
|
|
|
private int mDisplayOrientation; |
|
|
|
|
|
|
|
|
|
|
@ -210,15 +214,28 @@ public class Camera1 extends CameraImpl { |
|
|
|
void captureImage() { |
|
|
|
void captureImage() { |
|
|
|
switch (mMethod) { |
|
|
|
switch (mMethod) { |
|
|
|
case METHOD_STANDARD: |
|
|
|
case METHOD_STANDARD: |
|
|
|
mCamera.takePicture(null, null, null, new Camera.PictureCallback() { |
|
|
|
// Null check required for camera here as is briefly null when View is detached
|
|
|
|
|
|
|
|
if (!capturingImage && mCamera != null) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Set boolean to wait for image callback
|
|
|
|
|
|
|
|
capturingImage = true; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mCamera.takePicture(null, null, null, |
|
|
|
|
|
|
|
new Camera.PictureCallback() { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void onPictureTaken(byte[] data, Camera camera) { |
|
|
|
public void onPictureTaken(byte[] data, Camera camera) { |
|
|
|
mCameraListener.onPictureTaken(data); |
|
|
|
mCameraListener.onPictureTaken(data); |
|
|
|
if (mCamera != null) { |
|
|
|
|
|
|
|
mCamera.startPreview(); |
|
|
|
// Reset capturing state to allow photos to be taken
|
|
|
|
} |
|
|
|
capturingImage = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
camera.startPreview(); |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else { |
|
|
|
|
|
|
|
Log.w(TAG, "Unable, waiting for picture to be taken"); |
|
|
|
|
|
|
|
} |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case METHOD_STILL: |
|
|
|
case METHOD_STILL: |
|
|
|