public class CameraSource
extends java.lang.Object
com.google.android.gms.vision.Detector. This receives preview frames from the camera at
a specified rate, sending those frames to the detector as fast as it is able to process those
frames.
This camera source makes a best effort to manage processing on preview frames as fast as
possible, while at the same time minimizing lag. As such, frames may be dropped if the detector
is unable to keep up with the rate of frames generated by the camera. You should use
CameraSource.Builder.setRequestedFps(float) to specify a frame rate that works well with
the capabilities of the camera hardware and the detector options that you have selected. If CPU
utilization is higher than you'd like, then you may want to consider reducing FPS. If the camera
preview or detector results are too "jerky", then you may want to consider increasing FPS.
The following Android permission is required to use the camera:
| Modifier and Type | Class and Description |
|---|---|
static interface |
CameraSource.AutoFocusCallback
Callback interface used to notify on completion of camera auto focus.
|
static interface |
CameraSource.AutoFocusMoveCallback
Callback interface used to notify on auto focus start and stop.
|
static class |
CameraSource.Builder
Builder for configuring and creating an associated camera source.
|
static interface |
CameraSource.PictureCallback
Callback interface used to supply image data from a photo capture.
|
static interface |
CameraSource.ShutterCallback
Callback interface used to signal the moment of actual image capture.
|
| Modifier and Type | Field and Description |
|---|---|
static int |
CAMERA_FACING_BACK |
static int |
CAMERA_FACING_FRONT |
| Modifier and Type | Method and Description |
|---|---|
void |
autoFocus(CameraSource.AutoFocusCallback cb)
Starts camera auto-focus and registers a callback function to run when
the camera is focused.
|
void |
cancelAutoFocus()
Cancels any auto-focus function in progress.
|
int |
doZoom(float scale) |
int |
getCameraFacing()
Returns the selected camera; one of
CAMERA_FACING_BACK or
CAMERA_FACING_FRONT. |
java.lang.String |
getFlashMode()
Gets the current flash mode setting.
|
java.lang.String |
getFocusMode()
Gets the current focus mode setting.
|
Size |
getPreviewSize()
Returns the preview size that is currently in use by the underlying camera.
|
void |
release()
Stops the camera and releases the resources of the camera and underlying detector.
|
boolean |
setAutoFocusMoveCallback(CameraSource.AutoFocusMoveCallback cb)
Sets camera auto-focus move callback.
|
boolean |
setFlashMode(java.lang.String mode)
Sets the flash mode.
|
boolean |
setFocusMode(java.lang.String mode)
Sets the focus mode.
|
CameraSource |
start()
Opens the camera and starts sending preview frames to the underlying detector.
|
CameraSource |
start(android.view.SurfaceHolder surfaceHolder)
Opens the camera and starts sending preview frames to the underlying detector.
|
void |
stop()
Closes the camera and stops sending frames to the underlying frame detector.
|
void |
takePicture(CameraSource.ShutterCallback shutter,
CameraSource.PictureCallback jpeg)
Initiates taking a picture, which happens asynchronously.
|
public static final int CAMERA_FACING_BACK
public static final int CAMERA_FACING_FRONT
public void release()
public CameraSource start() throws java.io.IOException
java.io.IOException - if the camera's preview texture or display could not be initializedpublic CameraSource start(android.view.SurfaceHolder surfaceHolder) throws java.io.IOException
surfaceHolder - the surface holder to use for the preview framesjava.io.IOException - if the supplied surface holder could not be used as the preview displaypublic void stop()
start() or
start(SurfaceHolder).
Call release() instead to completely shut down this camera source and release the
resources of the underlying detector.public Size getPreviewSize()
public int getCameraFacing()
CAMERA_FACING_BACK or
CAMERA_FACING_FRONT.public int doZoom(float scale)
public void takePicture(CameraSource.ShutterCallback shutter, CameraSource.PictureCallback jpeg)
start() or start(SurfaceHolder). The camera
preview is suspended while the picture is being taken, but will resume once picture taking is
done.shutter - the callback for image capture moment, or nulljpeg - the callback for JPEG image data, or nullpublic java.lang.String getFocusMode()
autoFocus(AutoFocusCallback) to start the focus if focus
mode is FOCUS_MODE_AUTO or FOCUS_MODE_MACRO.Camera.Parameters#FOCUS_MODE_AUTO,
Camera.Parameters#FOCUS_MODE_INFINITY,
Camera.Parameters#FOCUS_MODE_MACRO,
Camera.Parameters#FOCUS_MODE_FIXED,
Camera.Parameters#FOCUS_MODE_EDOF,
Camera.Parameters#FOCUS_MODE_CONTINUOUS_VIDEO,
Camera.Parameters#FOCUS_MODE_CONTINUOUS_PICTUREpublic boolean setFocusMode(java.lang.String mode)
mode - the focus modetrue if the focus mode is set, false otherwisegetFocusMode()public java.lang.String getFlashMode()
Camera.Parameters#FLASH_MODE_OFF,
Camera.Parameters#FLASH_MODE_AUTO,
Camera.Parameters#FLASH_MODE_ON,
Camera.Parameters#FLASH_MODE_RED_EYE,
Camera.Parameters#FLASH_MODE_TORCHpublic boolean setFlashMode(java.lang.String mode)
mode - flash mode.true if the flash mode is set, false otherwisegetFlashMode()public void autoFocus(CameraSource.AutoFocusCallback cb)
start() or start(SurfaceHolder) and before stop() or release()).
Callers should check
getFocusMode() to determine if
this method should be called. If the camera does not support auto-focus,
it is a no-op and CameraSource.AutoFocusCallback.onAutoFocus(boolean)
callback will be called immediately.
If the current flash mode is not
Camera.Parameters#FLASH_MODE_OFF, flash may be
fired during auto-focus, depending on the driver and camera hardware.
cb - the callback to runcancelAutoFocus()public void cancelAutoFocus()
autoFocus(AutoFocusCallback)public boolean setAutoFocusMoveCallback(CameraSource.AutoFocusMoveCallback cb)
cb - the callback to runtrue if the operation is supported (i.e. from Jelly Bean), false otherwise