The camera engine will notify anyone about camera events that took place, either on their own or
after developer action. To access these events, set up one or more CameraListener
instances.
All actions taken on a CameraView
instance are asynchronous, which means that the callback can be
executed at any time in the future. For convenience, all of them are executed on the UI thread.
camera.addCameraListener(new CameraListener() {
public void onCameraOpened(CameraOptions options) {}
public void onCameraClosed() {}
public void onCameraError(CameraException error) {}
public void onPictureTaken(PictureResult result) {}
public void onVideoTaken(VideoResult result) {}
public void onOrientationChanged(int orientation) {}
public void onAutoFocusStart(PointF point) {}
public void onAutoFocusEnd(boolean successful, PointF point) {}
public void onZoomChanged(float newValue, float[] bounds, PointF[] fingers) {}
public void onExposureCorrectionChanged(float newValue, float[] bounds, PointF[] fingers) {}
public void onVideoRecordingStart() {}
public void onVideoRecordingEnd() {}
});
CameraView has its own lifecycle, which is basically made of an open and a closed state.
You will listen to these events using onCameraOpened
and onCameraClosed
callbacks:
camera.addCameraListener(new CameraListener() {
/**
* Notifies that the camera was opened.
* The options object collects all supported options by the current camera.
*/
@Override
public void onCameraOpened(CameraOptions options) {}
/**
* Notifies that the camera session was closed.
*/
@Override
public void onCameraClosed() {}
});
The open callback is especially important because the CameraOptions
includes all the available
options of the current sensor. This can be used to adjust the UI, for example, show a flash icon
if flash is supported.
Method | Description |
---|---|
open() |
Starts the engine. This will cause a future call to onCameraOpened() (or an error) |
close() |
Stops the engine. This will cause a future call to onCameraClosed() |
isOpened() |
Returns true if open() was called successfully. This does not mean that camera is showing preview already. |
getCameraOptions() |
If camera was opened, returns non-null object with information about what is supported. |
Take a look at public methods in CameraOptions
to know more.