public static abstract class CameraDevice.StateCallback
extends Object
java.lang.Object | |
↳ | android.hardware.camera2.CameraDevice.StateCallback |
用于接收有关相机设备状态更新的回调对象。
必须向 openCamera(String, CameraDevice.StateCallback, Handler)
方法提供回调实例以打开相机设备。
这些状态更新包括关于设备完成启动的通知(允许调用 createCaptureSession(List
),关于设备断开或关闭以及有关意外设备错误的通知。
关于具体的进度事件 CaptureRequests
通过提供 CameraCaptureSession.CaptureCallback
给予 capture(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
, captureBurst(List
, setRepeatingRequest(CaptureRequest, CameraCaptureSession.CaptureCallback, Handler)
,或 setRepeatingBurst(List
方法。
Constants |
|
---|---|
int |
ERROR_CAMERA_DEVICE 可由 |
int |
ERROR_CAMERA_DISABLED 可由 |
int |
ERROR_CAMERA_IN_USE 可由 |
int |
ERROR_CAMERA_SERVICE 可由 |
int |
ERROR_MAX_CAMERAS_IN_USE 可由 |
Public constructors |
|
---|---|
CameraDevice.StateCallback() |
Public methods |
|
---|---|
void |
onClosed(CameraDevice camera) 当相机设备已关闭时调用的方法 |
abstract void |
onDisconnected(CameraDevice camera) 当相机设备不再可用时调用此方法。 |
abstract void |
onError(CameraDevice camera, int error) 当相机设备遇到严重错误时调用该方法。 |
abstract void |
onOpened(CameraDevice camera) 摄像机设备完成打开时调用的方法。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
int ERROR_CAMERA_DEVICE
可由 onError(CameraDevice, int)
报告的错误代码指示相机设备遇到致命错误。
相机设备需要重新打开才能再次使用。
也可以看看:
常量值:4(0x00000004)
int ERROR_CAMERA_DISABLED
可由 onError(CameraDevice, int)
报告的错误代码,表示相机设备由于设备策略而无法打开。
常量值:3(0x00000003)
int ERROR_CAMERA_IN_USE
可由 onError(CameraDevice, int)
报告的错误代码表示相机设备已被使用。
由于相机正被较高优先级的相机API客户端使用,打开相机失败时可能会产生此错误。
也可以看看:
常数值:1(0x00000001)
int ERROR_CAMERA_SERVICE
可由 onError(CameraDevice, int)
报告的错误代码指示相机服务遇到致命错误。
Android设备可能需要关闭并重新启动以恢复相机功能,否则可能存在硬件问题。
通过关闭CameraDevice和CameraManager,尝试恢复 可能是可能的,并试图从头开始重新获取所有资源。
也可以看看:
常量值:5(0x00000005)
int ERROR_MAX_CAMERAS_IN_USE
可由 onError(CameraDevice, int)
报告的错误代码,指示相机设备由于其他打开的相机设备过多而无法打开。
开放式摄像机的系统范围限制已经达到,并且在先前实例关闭之前无法打开更多的摄像机设备。
打开相机失败时可能会产生此错误。
也可以看看:
常量值:2(0x00000002)
void onClosed (CameraDevice camera)
当相机设备已关闭时调用的方法 close()
。
任何未来在此CameraDevice上调用方法的尝试都会抛出 IllegalStateException
。
此方法的默认实现不做任何事情。
Parameters | |
---|---|
camera |
CameraDevice : the camera device that has become closed |
void onDisconnected (CameraDevice camera)
当相机设备不再可用时调用此方法。
如果打开相机失败,可能会调用此回调而不是 onOpened(CameraDevice)
。
在CameraDevice上调用方法的任何尝试都会抛出CameraAccessException
。 断开连接可能是由于安全策略或权限的更改造成的; 可拆卸相机设备的物理断开; 或者更高优先级的相机API客户端需要相机。
在调用此方法后可能会调用捕获回调,或传递到活动输出的新图像缓冲区。
默认实现会在系统日志中记录关于断开连接的通知。
在发生这种情况之后,您应该用close()
清理相机,因为在相机可以再次打开之前无法恢复。 对于大多数使用情况,这将是当相机再次变为available
。
Parameters | |
---|---|
camera |
CameraDevice : the device that has been disconnected |
void onError (CameraDevice camera, int error)
当相机设备遇到严重错误时调用该方法。
如果打开相机失败,可能会调用此回调而不是 onOpened(CameraDevice)
。
这表示相机设备或相机服务以某种方式失败。 任何尝试在未来调用此CameraDevice方法时都会抛出CameraAccessException
和CAMERA_ERROR
原因。
在收到此错误后,可能仍会捕捉完成或摄像机流回调。
发生这种情况后,应该用close()
清理相机。 进一步的恢复尝试是错误代码特定的。
Parameters | |
---|---|
camera |
CameraDevice : The device reporting the error |
error |
int : The error code, one of the StateCallback.ERROR_* values. |
void onOpened (CameraDevice camera)
摄像机设备完成打开时调用的方法。
此时,相机设备已准备好使用,并且可以调用 createCaptureSession(List
来设置第一个捕获会话。
Parameters | |
---|---|
camera |
CameraDevice : the camera device that has become opened |