lightbulb_outline Please take our October 2018 developer survey. Start survey

CaptureFailure

public class CaptureFailure
extends Object

java.lang.Object
   ↳ android.hardware.camera2.CaptureFailure


A report of failed capture for a single image capture from the image sensor.

CaptureFailures are produced by a CameraDevice if processing a CaptureRequest fails, either partially or fully. Use getReason() to determine the specific nature of the failed capture.

Receiving a CaptureFailure means that the metadata associated with that frame number has been dropped -- no CaptureResult with the same frame number will be produced.

Summary

Constants

int REASON_ERROR

The CaptureResult has been dropped this frame only due to an error in the framework.

int REASON_FLUSHED

The capture has failed due to a CameraCaptureSession.abortCaptures() call from the application.

Public methods

long getFrameNumber()

Get the frame number associated with this failed capture.

int getReason()

Determine why the request was dropped, whether due to an error or to a user action.

CaptureRequest getRequest()

Get the request associated with this failed capture.

int getSequenceId()

The sequence ID for this failed capture that was returned by the CameraCaptureSession.capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler) family of functions.

boolean wasImageCaptured()

Determine if the image was captured from the camera.

Inherited methods

Constants

REASON_ERROR

added in API level 21
public static final int REASON_ERROR

The CaptureResult has been dropped this frame only due to an error in the framework.

See also:

Constant Value: 0 (0x00000000)

REASON_FLUSHED

added in API level 21
public static final int REASON_FLUSHED

The capture has failed due to a CameraCaptureSession.abortCaptures() call from the application.

See also:

Constant Value: 1 (0x00000001)

Public methods

getFrameNumber

added in API level 21
public long getFrameNumber ()

Get the frame number associated with this failed capture.

Whenever a request has been processed, regardless of failed capture or success, it gets a unique frame number assigned to its future result/failed capture.

This value monotonically increments, starting with 0, for every new result or failure; and the scope is the lifetime of the CameraDevice.

Returns
long long frame number

getReason

added in API level 21
public int getReason ()

Determine why the request was dropped, whether due to an error or to a user action.

Returns
int int The reason code.

Value is REASON_ERROR or REASON_FLUSHED.

getRequest

added in API level 21
public CaptureRequest getRequest ()

Get the request associated with this failed capture.

Whenever a request is unsuccessfully captured, with CameraCaptureSession.CaptureCallback.onCaptureFailed(CameraCaptureSession, CaptureRequest, CaptureFailure), the failed capture's getRequest() will return that request.

In particular,

cameraDevice.capture(someRequest, new CaptureCallback() {
     @Override
     void onCaptureFailed(CaptureRequest myRequest, CaptureFailure myFailure) {
         assert(myFailure.getRequest.equals(myRequest) == true);
     }
 };
 

Returns
CaptureRequest The request associated with this failed capture. Never null.

getSequenceId

added in API level 21
public int getSequenceId ()

The sequence ID for this failed capture that was returned by the CameraCaptureSession.capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler) family of functions.

The sequence ID is a unique monotonically increasing value starting from 0, incremented every time a new group of requests is submitted to the CameraDevice.

Returns
int int The ID for the sequence of requests that this capture failure is the result of

wasImageCaptured

added in API level 21
public boolean wasImageCaptured ()

Determine if the image was captured from the camera.

If the image was not captured, no image buffers will be available. If the image was captured, then image buffers may be available.

Returns
boolean boolean True if the image was captured, false otherwise.