# Interface (CameraInput) > **说明:** > > 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 相机设备输入对象。 会话中[Session](arkts-apis-camera-Session.md)使用的相机信息。 ## 导入模块 ```ts import { camera } from '@kit.CameraKit'; ``` ## open open(callback: AsyncCallback\): void 打开相机,通过注册回调函数获取状态。使用callback异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------- | ---- | ------------------- | | callback | AsyncCallback\ | 是 | 回调函数。当打开相机成功,err为undefined,否则为错误对象,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | | --------------- | --------------- | | 7400107 | Can not use camera cause of conflict. | | 7400108 | Camera disabled cause of security reason. | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function openCameraInput(cameraInput: camera.CameraInput): void { cameraInput.open((err: BusinessError) => { if (err) { console.error(`Failed to open the camera, error code: ${err.code}.`); return; } console.info('Callback returned with camera opened.'); }); } ``` ## open open(): Promise\ 打开相机,使用Promise异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **返回值:** | 类型 | 说明 | | -------------- | ----------------------- | | Promise\ | Promise对象,无返回结果。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | |---------|-------------------------------------------| | 7400102 | Operation not allowed. | | 7400107 | Can not use camera cause of conflict. | | 7400108 | Camera disabled cause of security reason. | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function openCameraInput(cameraInput: camera.CameraInput): void { cameraInput.open().then(() => { console.info('Promise returned with camera opened.'); }).catch((error: BusinessError) => { console.error(`Failed to open the camera, error code: ${error.code}.`); }); } ``` ## open12+ open(isSecureEnabled: boolean): Promise\ 打开相机。使用Promise异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------- | ---- |-------------------------------------------------------------------------| | isSecureEnabled | boolean | 是 | 设置true为使能以安全的方式打开相机,设置false则反之。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | **返回值:** | 类型 | 说明 | | -------------- | ----------------------- | | Promise\ | Promise对象,返回安全相机的句柄。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | | --------------- | --------------- | | 7400107 | Can not use camera cause of conflict. | | 7400108 | Camera disabled cause of security reason. | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function openCameraInput(cameraInput: camera.CameraInput): void { cameraInput.open(true).then(() => { console.info('Promise returned with camera opened.'); }).catch((error: BusinessError) => { console.error(`Failed to open the camera, error code: ${error.code}.`); }); } ``` ## open18+ open(type: CameraConcurrentType): Promise\ 以指定的并发类型打开相机。使用Promise异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------- | ---- |-------------------------------------------------------------------------| | type | [CameraConcurrentType](arkts-apis-camera-e.md#cameraconcurrenttype18) | 是 | 以指定的并发类型打开相机。接口调用失败会返回相应错误码。| **返回值:** | 类型 | 说明 | | -------------- | ----------------------- | | Promise\ | Promise对象,无返回结果。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | |---------|-------------------------------------------| | 7400102 | Operation not allowed. | | 7400107 | Can not use camera cause of conflict. | | 7400108 | Camera disabled cause of security reason. | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function openCameraInput(cameraInput: camera.CameraInput): void { cameraInput.open(0).then(() => { console.info('Promise returned with camera opened.'); }).catch((error: BusinessError) => { console.error(`Failed to open the camera, error code: ${error.code}.`); }); } ``` ## close close(callback: AsyncCallback\\): void 关闭相机,通过注册回调函数获取状态。使用callback异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------- | ---- | -------------------- | | callback | AsyncCallback\ | 是 | 回调函数。当关闭相机成功,err为undefined,否则为错误对象。错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | | --------------- | --------------- | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function closeCameraInput(cameraInput: camera.CameraInput): void { cameraInput.close((err: BusinessError) => { if (err) { console.error(`Failed to close the cameras, error code: ${err.code}.`); return; } console.info('Callback returned with camera closed.'); }); } ``` ## close close(): Promise\ 关闭相机,使用Promise异步回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **返回值:** | 类型 | 说明 | | -------------- | ----------------------- | | Promise\ | Promise对象,无返回结果。 | **错误码:** 以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 | 错误码ID | 错误信息 | | --------------- | --------------- | | 7400201 | Camera service fatal error. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function closeCameraInput(cameraInput: camera.CameraInput): void { cameraInput.close().then(() => { console.info('Promise returned with camera closed.'); }).catch((error: BusinessError) => { console.error(`Failed to close the cameras, error code: ${error.code}.`); }); } ``` ## on('error') on(type: 'error', camera: CameraDevice, callback: ErrorCallback): void 监听CameraInput的错误事件,通过注册回调函数获取结果。使用callback异步回调。 > **说明:** > > 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------- | --- | ------------------------------------------- | | type | string | 是 | 监听事件,固定为'error',CameraInput对象创建成功可监听。相机设备出错情况下可触发该事件并返回结果,比如设备不可用或者冲突等返回对应错误信息。 | | camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | CameraDevice对象。 | | callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 回调函数,用于获取结果。返回错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; function callback(err: BusinessError): void { console.error(`Camera input error code: ${err.code}`); } function registerCameraInputError(cameraInput: camera.CameraInput, camera: camera.CameraDevice): void { cameraInput.on('error', camera, callback); } ``` ## off('error') off(type: 'error', camera: CameraDevice, callback?: ErrorCallback): void 注销监听CameraInput的错误事件。 **原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 **系统能力:** SystemCapability.Multimedia.Camera.Core **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------- | --- | ------------------------------------------- | | type | string | 是 | 监听事件,固定为'error',CameraInput对象创建成功可监听。相机设备出错情况下可触发该事件并返回结果,比如设备不可用或者冲突等返回对应错误信息。 | | camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | CameraDevice对象。 | | callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | **示例:** ```ts function unregisterCameraInputError(cameraInput: camera.CameraInput, camera: camera.CameraDevice): void { cameraInput.off('error', camera); } ```