CameraDevice.StateCallback
用于接收有关摄像机设备状态的更新的回调对象。
在调用CameraManager#openCamera方法时,必须提供此回调实例才能打开摄像机设备。
这些状态更新包括有关设备完成启动(允许调用CameraDevice.createCaptureSession(SessionConfiguration)),设备断开或关闭以及有关意外设备错误的通知。
有关特定CaptureRequest进度的事件是通过CameraCaptureSession.CaptureCallback提供给CameraCaptureSession#capture,CameraCaptureSession#captureBurst,CameraCaptureSession #setRepeatingRequest或CameraCaptureSession #setRepeatingBurst方法。
常量
-
ERROR_CAMERA_DEVICE
public static final int ERROR_CAMERA_DEVICE
onError(CameraDevice,int)可以报告的错误代码,表示摄像头设备遇到了致命错误。
需要重新打开相机设备才能再次使用。
- ERROR_CAMERA_DISABLED
public static final int ERROR_CAMERA_DISABLED.
onError(CameraDevice,int)可以报告的错误代码,表示由于设备策略而无法打开摄像头设备。
- ERROR_CAMERA_IN_USE
public static final int ERROR_CAMERA_IN_USE
onError(CameraDevice,int)可以报告的错误代码,表示相机设备已在使用中。
由于相机被更高优先级的相机API客户端使用,打开相机失败时可能会产生此错误。
- ERROR_CAMERA_SERVICE
public static final int ERROR_CAMERA_SERVICE
onError(CameraDevice,int)可以报告的错误代码,指示摄像头服务遇到致命错误。
Android设备可能需要关闭并重新启动才能恢复相机功能,否则可能会出现持续的硬件问题。
通过关闭CameraDevice和CameraManager并尝试从头开始再次获取所有资源,可以尝试恢复。
- ERROR_MAX_CAMERAS_IN_USE
public static final int ERROR_MAX_CAMERAS_IN_USE
onError(CameraDevice,int)可以报告的错误代码,表示由于有太多其他打开的摄像头设备而无法打开摄像头设备。
已达到系统范围的开放式摄像机数量限制,并且在关闭之前的实例之前无法打开更多的摄像机设备。
打开相机失败时可能会产生此错误。
公共方法
- onClosed
public void onClosed (CameraDevice camera)
使用CameraDevice#close方法关闭相机设备时调用的方法。
这此方法被调用之后,在此CameraDevice上调用方法的任何尝试都将抛出IllegalStateException。
此方法的默认实现不执行任何操作。
- onDisconnected
public abstract void onDisconnected (CameraDevice camera)
当相机设备不再可用时调用的方法。
如果打开相机失败,可能会调用此回调而不是onOpened(CameraDevice)。
此方法被调用后,任何在此CameraDevice上调用方法的尝试都将抛出CameraAccessException。 断开连接可能是由于安全策略或权限的变化; 可移动摄像设备的物理断开; 或者更高优先级的相机API客户端需要相机。
调用此方法后仍可能会调用捕获回调,或者传递给活动输出的新图像缓冲。
默认实现会向系统日志记录有关断开连接的通知。
在发生这种情况后,您应该使用CameraDevice#关闭相机,因为在相机再次打开之前无法恢复。 对于大多数用例,这将是摄像机再次成为CameraManager.AvailabilityCallback#onCameraAvailable。
- onError
public abstract void onError (CameraDevice camera, int error)
相机设备遇到严重错误时调用的方法。
如果打开相机失败,可能会调用此回调而不是onOpened(CameraDevice)。
这表示相机设备或相机服务以某种方式发生故障。 将来在此CameraDevice上调用方法的任何尝试都会抛出CameraAccessException和CameraAccessException#CAMERA_ERROR原因。
收到此错误后,可能仍会有捕获完成或摄像机流回调。
在发生这种情况后,你应该用CameraDevice#close关闭相机。 进一步的恢复尝试需要根据特定错误代码来定。
- onOpened
public abstract void onOpened (CameraDevice camera)
摄像机设备完成打开时调用的方法。
此时,摄像机设备已准备就绪,可以调用CameraDevice #createCaptureSession来设置第一个捕获会话。