Java Examples for android.hardware.camera2.CameraCaptureSession
The following java examples will help you to understand the usage of android.hardware.camera2.CameraCaptureSession. These source code samples are taken from different open source projects.
Example 1
| Project: rtmp-rtsp-stream-client-java-master File: Camera2ApiManager.java View source code |
private void startPreview(CameraDevice cameraDevice) {
try {
cameraDevice.createCaptureSession(Arrays.asList(surfaceView.getHolder().getSurface(), surface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
try {
cameraCaptureSession.setRepeatingBurst(Arrays.asList(drawPreview(surfaceView), drawInputSurface(surface)), null, cameraHandler);
Log.i(TAG, "camera configured");
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
cameraCaptureSession.close();
Log.e(TAG, "configuration failed");
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 2
| Project: platform_frameworks_base-master File: CameraTestUtils.java View source code |
/**
* Configure a new camera session with output surfaces and type.
*
* @param camera The CameraDevice to be configured.
* @param outputSurfaces The surface list that used for camera output.
* @param listener The callback CameraDevice will notify when capture results are available.
*/
public static CameraCaptureSession configureCameraSession(CameraDevice camera, List<Surface> outputSurfaces, boolean isHighSpeed, CameraCaptureSession.StateCallback listener, Handler handler) throws CameraAccessException {
BlockingSessionCallback sessionListener = new BlockingSessionCallback(listener);
if (isHighSpeed) {
camera.createConstrainedHighSpeedCaptureSession(outputSurfaces, sessionListener, handler);
} else {
camera.createCaptureSession(outputSurfaces, sessionListener, handler);
}
CameraCaptureSession session = sessionListener.waitAndGetSession(SESSION_CONFIGURE_TIMEOUT_MS);
assertFalse("Camera session should not be a reprocessable session", session.isReprocessable());
String sessionType = isHighSpeed ? "High Speed" : "Normal";
assertTrue("Capture session type must be " + sessionType, isHighSpeed == CameraConstrainedHighSpeedCaptureSession.class.isAssignableFrom(session.getClass()));
return session;
}Example 3
| Project: android-HdrViewfinder-master File: HdrViewfinderActivity.java View source code |
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
// Only update UI every so many frames
// Use an odd number here to ensure both even and odd exposures get an occasional update
long frameNumber = result.getFrameNumber();
if (frameNumber % 3 != 0)
return;
long exposureTime = result.get(CaptureResult.SENSOR_EXPOSURE_TIME);
// Format exposure time nicely
String exposureText;
if (exposureTime > ONE_SECOND) {
exposureText = String.format("%.2f s", exposureTime / 1e9);
} else if (exposureTime > MILLI_SECOND) {
exposureText = String.format("%.2f ms", exposureTime / 1e6);
} else if (exposureTime > MICRO_SECOND) {
exposureText = String.format("%.2f us", exposureTime / 1e3);
} else {
exposureText = String.format("%d ns", exposureTime);
}
Object tag = request.getTag();
Log.i(TAG, "Exposure: " + exposureText);
if (tag == mEvenExposureTag) {
mEvenExposureText.setText(exposureText);
mEvenExposureText.setEnabled(true);
mOddExposureText.setEnabled(true);
mAutoExposureText.setEnabled(false);
} else if (tag == mOddExposureTag) {
mOddExposureText.setText(exposureText);
mEvenExposureText.setEnabled(true);
mOddExposureText.setEnabled(true);
mAutoExposureText.setEnabled(false);
} else {
mAutoExposureText.setText(exposureText);
mEvenExposureText.setEnabled(false);
mOddExposureText.setEnabled(false);
mAutoExposureText.setEnabled(true);
}
}Example 4
| Project: ProCamera-master File: Camera2TextureView.java View source code |
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
if (null == mCameraDevice) {
return;
}
mCaptureSession = cameraCaptureSession;
try {
mPreviewRequestBuilder = CaptureRequestFactory.createPreviewBuilder(mCameraDevice, surface);
CaptureRequestFactory.setPreviewBuilderPreview(mPreviewRequestBuilder);
updatePreview(mPreviewRequestBuilder.build(), captureSessionCaptureCallback);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 5
| Project: android-sdk-sources-for-api-level-23-master File: AndroidCamera2AgentImpl.java View source code |
@Override
public void handleMessage(final Message msg) {
super.handleMessage(msg);
Log.v(TAG, "handleMessage - action = '" + CameraActions.stringify(msg.what) + "'");
int cameraAction = msg.what;
try {
switch(cameraAction) {
case CameraActions.OPEN_CAMERA:
case CameraActions.RECONNECT:
{
CameraOpenCallback openCallback = (CameraOpenCallback) msg.obj;
int cameraIndex = msg.arg1;
if (mCameraState.getState() > AndroidCamera2StateHolder.CAMERA_UNOPENED) {
openCallback.onDeviceOpenedAlready(cameraIndex, generateHistoryString(cameraIndex));
break;
}
mOpenCallback = openCallback;
mCameraIndex = cameraIndex;
mCameraId = mCameraDevices.get(mCameraIndex);
Log.i(TAG, String.format("Opening camera index %d (id %s) with camera2 API", cameraIndex, mCameraId));
if (mCameraId == null) {
mOpenCallback.onCameraDisabled(msg.arg1);
break;
}
mCameraManager.openCamera(mCameraId, mCameraDeviceStateCallback, this);
break;
}
case CameraActions.RELEASE:
{
if (mCameraState.getState() == AndroidCamera2StateHolder.CAMERA_UNOPENED) {
Log.w(TAG, "Ignoring release at inappropriate time");
break;
}
if (mSession != null) {
closePreviewSession();
mSession = null;
}
if (mCamera != null) {
mCamera.close();
mCamera = null;
}
mCameraProxy = null;
mPersistentSettings = null;
mActiveArray = null;
if (mPreviewSurface != null) {
mPreviewSurface.release();
mPreviewSurface = null;
}
mPreviewTexture = null;
if (mCaptureReader != null) {
mCaptureReader.close();
mCaptureReader = null;
}
mPreviewSize = null;
mPhotoSize = null;
mCameraIndex = 0;
mCameraId = null;
changeState(AndroidCamera2StateHolder.CAMERA_UNOPENED);
break;
}
case CameraActions.SET_PREVIEW_TEXTURE_ASYNC:
{
setPreviewTexture((SurfaceTexture) msg.obj);
break;
}
case CameraActions.START_PREVIEW_ASYNC:
{
if (mCameraState.getState() != AndroidCamera2StateHolder.CAMERA_PREVIEW_READY) {
// TODO: Provide better feedback here?
Log.w(TAG, "Refusing to start preview at inappropriate time");
break;
}
mOneshotPreviewingCallback = (CameraStartPreviewCallback) msg.obj;
changeState(AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE);
try {
mSession.setRepeatingRequest(mPersistentSettings.createRequest(mCamera, CameraDevice.TEMPLATE_PREVIEW, mPreviewSurface), /*listener*/
mCameraResultStateCallback, /*handler*/
this);
} catch (CameraAccessException ex) {
Log.w(TAG, "Unable to start preview", ex);
changeState(AndroidCamera2StateHolder.CAMERA_PREVIEW_READY);
}
break;
}
// changed again while no preview is running.
case CameraActions.STOP_PREVIEW:
{
if (mCameraState.getState() < AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE) {
Log.w(TAG, "Refusing to stop preview at inappropriate time");
break;
}
mSession.stopRepeating();
changeState(AndroidCamera2StateHolder.CAMERA_PREVIEW_READY);
break;
}
case CameraActions.APPLY_SETTINGS:
{
AndroidCamera2Settings settings = (AndroidCamera2Settings) msg.obj;
applyToRequest(settings);
break;
}
case CameraActions.AUTO_FOCUS:
{
if (mCancelAfPending > 0) {
Log.v(TAG, "handleMessage - Ignored AUTO_FOCUS because there was " + mCancelAfPending + " pending CANCEL_AUTO_FOCUS messages");
// ignore AF because a CANCEL_AF is queued after this
break;
}
// and most notably, this is the only case where the callback isn't invoked.
if (mCameraState.getState() < AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE) {
Log.w(TAG, "Ignoring attempt to autofocus without preview");
break;
}
// The earliest we can reliably tell whether the autofocus has locked in
// response to our latest request is when our one-time capture progresses.
// However, it will probably take longer than that, so once that happens,
// just start checking the repeating preview requests as they complete.
final CameraAFCallback callback = (CameraAFCallback) msg.obj;
CameraCaptureSession.CaptureCallback deferredCallbackSetter = new CameraCaptureSession.CaptureCallback() {
private boolean mAlreadyDispatched = false;
@Override
public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, CaptureResult result) {
checkAfState(result);
}
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
checkAfState(result);
}
private void checkAfState(CaptureResult result) {
if (result.get(CaptureResult.CONTROL_AF_STATE) != null && !mAlreadyDispatched) {
// Now our mCameraResultStateCallback will invoke the callback
// the first time it finds the focus motor to be locked.
mAlreadyDispatched = true;
mOneshotAfCallback = callback;
// This is an optimization: check the AF state of this frame
// instead of simply waiting for the next.
mCameraResultStateCallback.monitorControlStates(result);
}
}
@Override
public void onCaptureFailed(CameraCaptureSession session, CaptureRequest request, CaptureFailure failure) {
Log.e(TAG, "Focusing failed with reason " + failure.getReason());
callback.onAutoFocus(false, mCameraProxy);
}
};
// Send a one-time capture to trigger the camera driver to lock focus.
changeState(AndroidCamera2StateHolder.CAMERA_FOCUS_LOCKED);
Camera2RequestSettingsSet trigger = new Camera2RequestSettingsSet(mPersistentSettings);
trigger.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_START);
try {
mSession.capture(trigger.createRequest(mCamera, CameraDevice.TEMPLATE_PREVIEW, mPreviewSurface), /*listener*/
deferredCallbackSetter, /*handler*/
this);
} catch (CameraAccessException ex) {
Log.e(TAG, "Unable to lock autofocus", ex);
changeState(AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE);
}
break;
}
case CameraActions.CANCEL_AUTO_FOCUS:
{
// Ignore all AFs that were already queued until we see
// a CANCEL_AUTO_FOCUS_FINISH
mCancelAfPending++;
// Why would you want to unlock the lens if it isn't already locked?
if (mCameraState.getState() < AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE) {
Log.w(TAG, "Ignoring attempt to release focus lock without preview");
break;
}
// Send a one-time capture to trigger the camera driver to resume scanning.
changeState(AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE);
Camera2RequestSettingsSet cancel = new Camera2RequestSettingsSet(mPersistentSettings);
cancel.set(CaptureRequest.CONTROL_AF_TRIGGER, CaptureRequest.CONTROL_AF_TRIGGER_CANCEL);
try {
mSession.capture(cancel.createRequest(mCamera, CameraDevice.TEMPLATE_PREVIEW, mPreviewSurface), /*listener*/
null, /*handler*/
this);
} catch (CameraAccessException ex) {
Log.e(TAG, "Unable to cancel autofocus", ex);
changeState(AndroidCamera2StateHolder.CAMERA_FOCUS_LOCKED);
}
break;
}
case CameraActions.CANCEL_AUTO_FOCUS_FINISH:
{
// Stop ignoring AUTO_FOCUS messages unless there are additional
// CANCEL_AUTO_FOCUSes that were added
mCancelAfPending--;
break;
}
case CameraActions.SET_AUTO_FOCUS_MOVE_CALLBACK:
{
mPassiveAfCallback = (CameraAFMoveCallback) msg.obj;
break;
}
case CameraActions.SET_DISPLAY_ORIENTATION:
{
// Only set the JPEG capture orientation if requested to do so; otherwise,
// capture in the sensor's physical orientation. (e.g., JPEG rotation is
// necessary in auto-rotate mode.
mPersistentSettings.set(CaptureRequest.JPEG_ORIENTATION, msg.arg2 > 0 ? mCameraProxy.getCharacteristics().getJpegOrientation(msg.arg1) : 0);
break;
}
case CameraActions.SET_JPEG_ORIENTATION:
{
mPersistentSettings.set(CaptureRequest.JPEG_ORIENTATION, msg.arg1);
break;
}
case CameraActions.CAPTURE_PHOTO:
{
if (mCameraState.getState() < AndroidCamera2StateHolder.CAMERA_PREVIEW_ACTIVE) {
Log.e(TAG, "Photos may only be taken when a preview is active");
break;
}
if (mCameraState.getState() != AndroidCamera2StateHolder.CAMERA_FOCUS_LOCKED) {
Log.w(TAG, "Taking a (likely blurry) photo without the lens locked");
}
final CaptureAvailableListener listener = (CaptureAvailableListener) msg.obj;
if (mLegacyDevice || (mCurrentAeState == CaptureResult.CONTROL_AE_STATE_CONVERGED && !mPersistentSettings.matches(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH) && !mPersistentSettings.matches(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE))) {
// Legacy devices don't support the precapture state keys and instead
// perform autoexposure convergence automatically upon capture.
// On other devices, as long as it has already converged, it determined
// that flash was not required, and we're not going to invalidate the
// current exposure levels by forcing the force on, we can save
// significant capture time by not forcing a recalculation.
Log.i(TAG, "Skipping pre-capture autoexposure convergence");
mCaptureReader.setOnImageAvailableListener(listener, /*handler*/
this);
try {
mSession.capture(mPersistentSettings.createRequest(mCamera, CameraDevice.TEMPLATE_STILL_CAPTURE, mCaptureReader.getSurface()), listener, /*handler*/
this);
} catch (CameraAccessException ex) {
Log.e(TAG, "Unable to initiate immediate capture", ex);
}
} else {
// We need to let AE converge before capturing. Once our one-time
// trigger capture has made it into the pipeline, we'll start checking
// for the completion of that convergence, capturing when that happens.
Log.i(TAG, "Forcing pre-capture autoexposure convergence");
CameraCaptureSession.CaptureCallback deferredCallbackSetter = new CameraCaptureSession.CaptureCallback() {
private boolean mAlreadyDispatched = false;
@Override
public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request, CaptureResult result) {
checkAeState(result);
}
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
checkAeState(result);
}
private void checkAeState(CaptureResult result) {
if (result.get(CaptureResult.CONTROL_AE_STATE) != null && !mAlreadyDispatched) {
// Now our mCameraResultStateCallback will invoke the
// callback once the autoexposure routine has converged.
mAlreadyDispatched = true;
mOneshotCaptureCallback = listener;
// This is an optimization: check the AE state of this frame
// instead of simply waiting for the next.
mCameraResultStateCallback.monitorControlStates(result);
}
}
@Override
public void onCaptureFailed(CameraCaptureSession session, CaptureRequest request, CaptureFailure failure) {
Log.e(TAG, "Autoexposure and capture failed with reason " + failure.getReason());
// TODO: Make an error callback?
}
};
// Set a one-time capture to trigger the camera driver's autoexposure:
Camera2RequestSettingsSet expose = new Camera2RequestSettingsSet(mPersistentSettings);
expose.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_START);
try {
mSession.capture(expose.createRequest(mCamera, CameraDevice.TEMPLATE_PREVIEW, mPreviewSurface), /*listener*/
deferredCallbackSetter, /*handler*/
this);
} catch (CameraAccessException ex) {
Log.e(TAG, "Unable to run autoexposure and perform capture", ex);
}
}
break;
}
default:
{
// TODO: Rephrase once everything has been implemented
throw new RuntimeException("Unimplemented CameraProxy message=" + msg.what);
}
}
} catch (final Exception ex) {
if (cameraAction != CameraActions.RELEASE && mCamera != null) {
mCamera.close();
mCamera = null;
} else if (mCamera == null) {
if (cameraAction == CameraActions.OPEN_CAMERA) {
if (mOpenCallback != null) {
mOpenCallback.onDeviceOpenFailure(mCameraIndex, generateHistoryString(mCameraIndex));
}
} else {
Log.w(TAG, "Cannot handle message " + msg.what + ", mCamera is null");
}
return;
}
if (ex instanceof RuntimeException) {
String commandHistory = generateHistoryString(Integer.parseInt(mCameraId));
mExceptionHandler.onCameraException((RuntimeException) ex, commandHistory, cameraAction, mCameraState.getState());
}
} finally {
WaitDoneBundle.unblockSyncWaiters(msg);
}
}Example 6
| Project: ShowMeHills-master File: CameraPreviewSurface.java View source code |
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
Log.i(TAG, "Finished configuring camera outputs");
mCaptureSession = session;
SurfaceHolder holder = mSurfaceView.getHolder();
if (holder != null) {
try {
// Build a request for preview footage
CaptureRequest.Builder requestBuilder = mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
requestBuilder.addTarget(holder.getSurface());
CaptureRequest previewRequest = requestBuilder.build();
// Start displaying preview images
try {
session.setRepeatingRequest(previewRequest, /*listener*/
null, /*handler*/
null);
} catch (CameraAccessException ex) {
Log.e(TAG, "Failed to make repeating preview request", ex);
}
} catch (CameraAccessException ex) {
Log.e(TAG, "Failed to build preview request", ex);
}
} else {
Log.e(TAG, "Holder didn't exist when trying to formulate preview request");
}
}Example 7
| Project: sample-tensorflow-imageclassifier-master File: CameraHandler.java View source code |
/**
* Begin a still image capture
*/
public void takePicture() {
if (mCameraDevice == null) {
Log.w(TAG, "Cannot capture image. Camera not initialized.");
return;
}
// Here, we create a CameraCaptureSession for capturing still images.
try {
mCameraDevice.createCaptureSession(Collections.singletonList(mImageReader.getSurface()), mSessionCallback, null);
} catch (CameraAccessException cae) {
Log.d(TAG, "access exception while preparing pic", cae);
}
}Example 8
| Project: android-Camera2Video-master File: Camera2VideoFragment.java View source code |
/**
* Start the camera preview.
*/
private void startPreview() {
if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
return;
}
try {
closePreviewSession();
SurfaceTexture texture = mTextureView.getSurfaceTexture();
assert texture != null;
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
Surface previewSurface = new Surface(texture);
mPreviewBuilder.addTarget(previewSurface);
mCameraDevice.createCaptureSession(Collections.singletonList(previewSurface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
mPreviewSession = session;
updatePreview();
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
Activity activity = getActivity();
if (null != activity) {
Toast.makeText(activity, "Failed", Toast.LENGTH_SHORT).show();
}
}
}, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 9
| Project: ShaderCamera-master File: CameraFragment.java View source code |
/**
* Start the camera preview.
*/
private void startPreview() {
if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
return;
}
try {
Log.d(TAG, "preview size: " + mPreviewSize.getWidth() + ", " + mPreviewSize.getHeight());
setUpMediaRecorder();
SurfaceTexture texture = mRenderer.getVideoTexture();
assert texture != null;
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
List<Surface> surfaces = new ArrayList<>();
Surface previewSurface = new Surface(texture);
surfaces.add(previewSurface);
mPreviewBuilder.addTarget(previewSurface);
Surface recorderSurface = mMediaRecorder.getSurface();
surfaces.add(recorderSurface);
mPreviewBuilder.addTarget(recorderSurface);
mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession cameraCaptureSession) {
mPreviewSession = cameraCaptureSession;
updatePreview();
}
@Override
public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) {
Activity activity = getActivity();
if (null != activity) {
Toast.makeText(activity, "Failed", Toast.LENGTH_SHORT).show();
}
}
}, mBackgroundHandler);
} catch (CameraAccessExceptionIOException | e) {
e.printStackTrace();
}
}Example 10
| Project: PhotoNoter-master File: Camera2ModelImpl.java View source code |
@Override
public void onConfigured(CameraCaptureSession session) {
if (null == mCameraDevice) {
return;
}
mSession = session;
try {
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
CaptureRequest previewRequest = mPreviewRequestBuilder.build();
mSession.setRepeatingRequest(previewRequest, mCameraCaptureSessionCaptureCallback4Preview, null);
mCameraState = STATE_CAMERA_PREVIEW;
} catch (CameraAccessException e) {
YLog.e(e);
}
mCamera2FocusModel = new Camera2FocusModel(mCamera2SettingModel.isFocusSupported(), mPreviewRequestBuilder, mCamera2SettingModel.getActiveArraySize());
mCamera2FocusModel.setOnParameterChangedListener(Camera2ModelImpl.this);
mCamera2CaptureModel = new Camera2CaptureModel();
callback.onPreview(mCamera2CaptureModel, mCamera2FocusModel);
}Example 11
| Project: Augendiagnose-master File: Camera2Handler.java View source code |
/**
* Creates a new {@link CameraCaptureSession} for camera preview.
*/
private void createCameraPreviewSession() {
try {
SurfaceTexture texture = mTextureView.getSurfaceTexture();
assert texture != null;
// We configure the size of default buffer to be the size of camera preview we want.
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
// This is the output Surface we need to start preview.
mSurface = new Surface(texture);
// Here, we create a CameraCaptureSession for camera preview.
mCameraDevice.createCaptureSession(Arrays.asList(mSurface, mImageReader.getSurface()), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull final CameraCaptureSession cameraCaptureSession) {
// The camera is already closed
if (mCameraDevice == null) {
return;
}
// When the session is ready, we start displaying the preview.
mCaptureSession = cameraCaptureSession;
doPreviewConfiguration();
}
@Override
public void onConfigureFailed(@NonNull final CameraCaptureSession cameraCaptureSession) {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
mCameraCallback.onCameraError("Failed to create capture session", "pre3", null);
}
});
}
}, mBackgroundHandler);
} catch (CameraAccessExceptionIllegalStateException | AssertionError | e) {
mCameraCallback.onCameraError("Failed to create preview session", "pre4", e);
}
}Example 12
| Project: Android-Demo-Projects-master File: CameraConnectionFragment.java View source code |
@Override
public void onConfigured(final CameraCaptureSession cameraCaptureSession) {
// The camera is already closed
if (null == cameraDevice) {
return;
}
// When the session is ready, we start displaying the preview.
captureSession = cameraCaptureSession;
try {
// Auto focus should be continuous for camera preview.
previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
// Flash is automatically enabled when necessary.
previewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
// Finally, we start displaying the camera preview.
previewRequest = previewRequestBuilder.build();
captureSession.setRepeatingRequest(previewRequest, captureCallback, backgroundHandler);
} catch (final CameraAccessException e) {
LOGGER.e(e, "Exception!");
}
}Example 13
| Project: cwac-cam2-master File: CameraTwoEngine.java View source code |
@Override
public void onConfigured(CameraCaptureSession session) {
try {
if (!s.isClosed()) {
s.captureSession = session;
s.previewRequestBuilder = session.getDevice().createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
s.previewRequestBuilder.addTarget(surface);
s.previewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
s.previewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
Descriptor camera = (Descriptor) s.getDescriptor();
CameraCharacteristics cc = mgr.getCameraCharacteristics(camera.cameraId);
if (s.getZoomRect() != null) {
s.previewRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, s.getZoomRect());
}
s.addToPreviewRequest(cc, s.previewRequestBuilder);
s.previewRequest = s.previewRequestBuilder.build();
session.setRepeatingRequest(s.previewRequest, null, handler);
getBus().post(new OpenedEvent());
}
} catch (CameraAccessException e) {
getBus().post(new OpenedEvent(e));
} catch (IllegalStateException e) {
if (isDebug()) {
Log.w(getClass().getSimpleName(), "Exception resetting focus", e);
}
}
}Example 14
| Project: LiveMultimedia-master File: LollipopCamera.java View source code |
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void setupJPEGCaptureListener() {
mCaptureCallback = new CameraCaptureSession.CaptureCallback() {
private void process(CaptureResult result) {
switch(mState) {
case STATE_PREVIEW:
{
// We have nothing to do when the camera preview is working normally.
break;
}
case STATE_WAITING_LOCK:
{
int afState = result.get(CaptureResult.CONTROL_AF_STATE);
if (CaptureResult.CONTROL_AF_STATE_FOCUSED_LOCKED == afState || CaptureResult.CONTROL_AF_STATE_NOT_FOCUSED_LOCKED == afState) {
// CONTROL_AE_STATE can be null on some devices
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED) {
mState = STATE_WAITING_NON_PRECAPTURE;
captureStillPicture();
} else {
runPrecaptureSequence();
}
}
break;
}
case STATE_WAITING_PRECAPTURE:
{
// CONTROL_AE_STATE can be null on some devices
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState == null || aeState == CaptureResult.CONTROL_AE_STATE_PRECAPTURE || aeState == CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED) {
mState = STATE_WAITING_NON_PRECAPTURE;
}
break;
}
case STATE_WAITING_NON_PRECAPTURE:
{
// CONTROL_AE_STATE can be null on some devices
Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
if (aeState == null || aeState != CaptureResult.CONTROL_AE_STATE_PRECAPTURE) {
mState = STATE_PICTURE_TAKEN;
captureStillPicture();
}
break;
}
}
}
};
}Example 15
| Project: LongImageCamera-master File: Camera2.java View source code |
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
if (mCamera == null) {
return;
}
mCaptureSession = session;
updateAutoFocus();
updateFlash();
try {
mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), mCaptureCallback, null);
} catch (CameraAccessException e) {
Log.e(TAG, "Failed to start camera preview because it couldn't access camera", e);
} catch (IllegalStateException e) {
Log.e(TAG, "Failed to start camera preview.", e);
}
}Example 16
| Project: CVPR2015-master File: Camera2BasicFragment.java View source code |
/**
* Creates a new {@link CameraCaptureSession} for camera preview.
*/
private void createCameraPreviewSession() {
try {
// This is the output Surface we need to start preview.
Surface surface = mImageReader.getSurface();
// We set up a CaptureRequest.Builder with the output Surface.
mPreviewRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mPreviewRequestBuilder.addTarget(surface);
mSessionCallback = new BlockingSessionCallback();
// Here, we create a CameraCaptureSession for camera preview.
Log.d(TAG, "creating capture session");
mCameraDevice.createCaptureSession(Arrays.asList(surface), mSessionCallback, mBackgroundHandler);
try {
Log.d(TAG, "waiting on session.");
mCaptureSession = mSessionCallback.waitAndGetSession(SESSION_WAIT_TIMEOUT_MS);
try {
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
// Comment out the above and uncomment this to disable continuous autofocus and
// instead set it to a fixed value of 20 diopters. This should make the picture
// nice and blurry for denoised edge detection.
// mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE,
// CaptureRequest.CONTROL_AF_MODE_OFF);
// mPreviewRequestBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE, 20.0f);
// Finally, we start displaying the camera preview.
mPreviewRequest = mPreviewRequestBuilder.build();
Log.d(TAG, "setting repeating request");
mCaptureSession.setRepeatingRequest(mPreviewRequest, mCaptureCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
} catch (TimeoutRuntimeException e) {
showToast("Failed to configure capture session.");
}
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 17
| Project: android-Camera2Raw-master File: Camera2RawFragment.java View source code |
@Override
public void onCaptureStarted(CameraCaptureSession session, CaptureRequest request, long timestamp, long frameNumber) {
String currentDateTime = generateTimestamp();
File rawFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "RAW_" + currentDateTime + ".dng");
File jpegFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "JPEG_" + currentDateTime + ".jpg");
// Look up the ImageSaverBuilder for this request and update it with the file name
// based on the capture start time.
ImageSaver.ImageSaverBuilder jpegBuilder;
ImageSaver.ImageSaverBuilder rawBuilder;
int requestId = (int) request.getTag();
synchronized (mCameraStateLock) {
jpegBuilder = mJpegResultQueue.get(requestId);
rawBuilder = mRawResultQueue.get(requestId);
}
if (jpegBuilder != null)
jpegBuilder.setFile(jpegFile);
if (rawBuilder != null)
rawBuilder.setFile(rawFile);
}Example 18
| Project: OpenCamera-master File: Camera2Controller.java View source code |
public static boolean createCaptureSession(List<Surface> sfl) {
try {
if (!captureSessionOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
Log.d(TAG, "Create capture session failed. Semaphore is locked");
return false;
}
} catch (InterruptedException e) {
e.printStackTrace();
return false;
}
try {
CameraDevice camera = Camera2Controller.getCamera2();
if (camera == null) {
captureSessionOpenCloseLock.release();
return false;
}
// Log.e(TAG, "Create capture session. Surface list size = " + sfl.size());
// Here, we create a CameraCaptureSession for camera preview.
camera.createCaptureSession(sfl, Camera2Controller.captureSessionStateCallback, null);
} catch (IllegalArgumentException e) {
Log.e(TAG, "Create capture session failed. IllegalArgumentException: " + e.getMessage());
e.printStackTrace();
} catch (CameraAccessException e) {
Log.e(TAG, "Create capture session failed. CameraAccessException: " + e.getMessage());
e.printStackTrace();
}
return true;
}Example 19
| Project: pocketDSLR-master File: CameraCaptureSessionCallbackBridge.java View source code |
@Override
public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
super.onCaptureCompleted(session, request, result);
this.cameraCaptureSessionCallback.onCaptureCompleted(session, request, result);
}Example 20
| Project: Fotoapparat-master File: SessionManager.java View source code |
/**
* @return the currently opened capture session of the camera
*/
public CameraCaptureSession getCaptureSession() {
if (session == null) {
throw new IllegalStateException("Preview has not been yet started.");
}
return session.getCaptureSession();
}Example 21
| Project: AppLock-master File: Camera2Manager.java View source code |
@Override
public void onConfigured(CameraCaptureSession cameraCaptureSession) {
try {
mCameraSession = cameraCaptureSession;
cameraCaptureSession.setRepeatingRequest(mPreViewBuidler.build(), null, mHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 22
| Project: AiyaEffectsAndroid-master File: Camera2Model.java View source code |
@Override
public void onConfigured(CameraCaptureSession session) {
mCaptureSession = session;
try {
session.setRepeatingRequest(mCaptureRequestBuilder.build(), mCaptureSessionCaptureCallback, mHandler);
Log.e("camera2", "setRepeatingRequest");
} catch (CameraAccessException e) {
e.printStackTrace();
}
}Example 23
| Project: EvilsLive-master File: CameraNew.java View source code |
@Override
public void onCaptureProgressed(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull CaptureResult partialResult) {
process(partialResult);
}Example 24
| Project: XieDaDeng-master File: FlashlightController.java View source code |
@Override
public void onConfigured(CameraCaptureSession session) {
if (session.getDevice() == mCameraDevice) {
mSession = session;
} else {
session.close();
}
postUpdateFlashlight();
}