1# Interface (CameraManager) 2<!--Kit: Camera Kit--> 3<!--Subsystem: Multimedia--> 4<!--Owner: @qano--> 5<!--Designer: @leo_ysl--> 6<!--Tester: @xchaosioda--> 7<!--Adviser: @zengyawen--> 8 9> **说明:** 10> 11> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 12 13相机管理器类,使用前需要通过[getCameraManager](arkts-apis-camera-f.md#cameragetcameramanager)接口获取相机管理实例。 14 15## 导入模块 16 17```ts 18import { camera } from '@kit.CameraKit'; 19``` 20 21## getSupportedCameras 22 23getSupportedCameras(): Array\<CameraDevice\> 24 25获取支持的相机设备对象,同步返回结果。 26 27**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 28 29**系统能力:** SystemCapability.Multimedia.Camera.Core 30 31**返回值:** 32 33| 类型 | 说明 | 34| ----------------------------------------------- | ---------------------------- | 35| Array\<[CameraDevice](arkts-apis-camera-i.md#cameradevice)> | 相机设备列表。 | 36 37**示例:** 38 39```ts 40import { BusinessError } from '@kit.BasicServicesKit'; 41 42function getSupportedCameras(cameraManager: camera.CameraManager): Array<camera.CameraDevice> { 43 let cameras: Array<camera.CameraDevice> = []; 44 try { 45 cameras = cameraManager.getSupportedCameras(); 46 } catch (error) { 47 let err = error as BusinessError; 48 console.error(`The getSupportedCameras call failed. error code: ${err.code}`); 49 } 50 return cameras; 51} 52``` 53 54## getSupportedSceneModes<sup>11+</sup> 55 56getSupportedSceneModes(camera: CameraDevice): Array\<SceneMode\> 57 58获取指定的相机设备对象支持的模式,同步返回结果。 59 60**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 61 62**系统能力:** SystemCapability.Multimedia.Camera.Core 63 64**参数:** 65 66| 参数名 | 类型 | 必填 | 说明 | 67| ------------ |--------------------------------------------------------------- | -- | -------------------------- | 68| camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | 相机设备,通过 [getSupportedCameras](#getsupportedcameras) 接口获取。传参异常时,会返回错误码。 | 69 70**返回值:** 71 72| 类型 | 说明 | 73| ----------------------------------------------- | ---------------------------- | 74| Array\<[SceneMode](arkts-apis-camera-e.md#scenemode11)> | 相机支持的模式列表。 | 75 76**示例:** 77 78```ts 79import { BusinessError } from '@kit.BasicServicesKit'; 80 81function getSupportedSceneModes(cameraManager: camera.CameraManager, camera: camera.CameraDevice): Array<camera.SceneMode> { 82 let modes: Array<camera.SceneMode> = []; 83 try { 84 modes = cameraManager.getSupportedSceneModes(camera); 85 } catch (error) { 86 let err = error as BusinessError; 87 console.error(`The getSupportedSceneModes call failed. error code: ${err.code}`); 88 } 89 return modes; 90} 91``` 92 93## getSupportedOutputCapability<sup>11+</sup> 94 95getSupportedOutputCapability(camera: CameraDevice, mode: SceneMode): CameraOutputCapability 96 97查询相机设备在指定模式下支持的输出能力,同步返回结果。 98 99**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 100 101**系统能力:** SystemCapability.Multimedia.Camera.Core 102 103**参数:** 104 105| 参数名 | 类型 | 必填 | 说明 | 106| ------------ |--------------------------------------------------------------- | -- | -------------------------- | 107| camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | 相机设备,通过 [getSupportedCameras](#getsupportedcameras) 接口获取。 | 108| mode | [SceneMode](arkts-apis-camera-e.md#scenemode11) | 是 | 相机模式,通过 [getSupportedSceneModes](#getsupportedscenemodes11) 接口获取。 | 109 110**返回值:** 111 112| 类型 | 说明 | 113| ----------------------------------------------- | ---------------------------- | 114| [CameraOutputCapability](arkts-apis-camera-i.md#cameraoutputcapability) | 相机输出能力。 | 115 116**示例:** 117 118```ts 119function getSupportedOutputCapability(camera: camera.CameraDevice, cameraManager: camera.CameraManager, sceneMode: camera.SceneMode): camera.CameraOutputCapability { 120 let cameraOutputCapability: camera.CameraOutputCapability = cameraManager.getSupportedOutputCapability(camera, sceneMode); 121 return cameraOutputCapability; 122} 123``` 124 125## isCameraMuted 126 127isCameraMuted(): boolean 128 129查询当前相机是否禁用。 130 131**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 132 133**系统能力:** SystemCapability.Multimedia.Camera.Core 134 135**返回值:** 136 137| 类型 | 说明 | 138| ---------- | -------------------------------------------- | 139| boolean | 返回true表示相机被禁用,返回false表示相机未被禁用。 | 140 141**示例:** 142 143```ts 144function isCameraMuted(cameraManager: camera.CameraManager): boolean { 145 let isMuted: boolean = cameraManager.isCameraMuted(); 146 return isMuted; 147} 148``` 149 150## createCameraInput 151 152createCameraInput(camera: CameraDevice): CameraInput 153 154使用CameraDevice对象创建CameraInput实例,同步返回结果。 155 156该接口使用前首先通过[getSupportedCameras](#getsupportedcameras)接口查询当前设备支持的相机设备信息列表,开发者需要根据具体使用场景选择符合需求的相机设备,然后使用该接口创建CameraInput实例。 157 158**需要权限:** ohos.permission.CAMERA 159 160**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 161 162**系统能力:** SystemCapability.Multimedia.Camera.Core 163 164**参数:** 165 166| 参数名 | 类型 | 必填 | 说明 | 167| -------- | ------------------------------------------- | ---- |--------------------------------------------------| 168| camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | CameraDevice对象,通过 [getSupportedCameras](#getsupportedcameras) 接口获取。 | 169 170**返回值:** 171 172| 类型 | 说明 | 173| ---------- | ----------------------------- | 174| [CameraInput](arkts-apis-camera-CameraInput.md) | 返回CameraInput实例。接口调用失败会返回相应错误码,错误码类型为[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 175 176**错误码:** 177 178以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 179 180| 错误码ID | 错误信息 | 181| --------------- | --------------- | 182| 7400101 | Parameter missing or parameter type incorrect. | 183| 7400102 | Operation not allowed. | 184| 7400201 | Camera service fatal error. | 185 186**示例:** 187 188```ts 189import { BusinessError } from '@kit.BasicServicesKit'; 190 191function createCameraInput(camera: camera.CameraDevice, cameraManager: camera.CameraManager): camera.CameraInput | undefined { 192 let cameraInput: camera.CameraInput | undefined = undefined; 193 try { 194 cameraInput = cameraManager.createCameraInput(camera); 195 } catch (error) { 196 // 失败返回错误码error.code并处理。 197 let err = error as BusinessError; 198 console.error(`The createCameraInput call failed. error code: ${err.code}`); 199 } 200 return cameraInput; 201} 202``` 203 204## createCameraInput 205 206createCameraInput(position: CameraPosition, type: CameraType): CameraInput 207 208根据相机位置和类型创建CameraInput实例,同步返回结果。 209 210该接口使用前需要开发者根据应用具体使用场景自行指定相机位置和类型,例如打开前置相机进入自拍功能。 211 212**需要权限:** ohos.permission.CAMERA 213 214**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 215 216**系统能力:** SystemCapability.Multimedia.Camera.Core 217 218**参数:** 219 220| 参数名 | 类型 | 必填 | 说明 | 221| -------- | ------------------------------------------- | ---- | --------------------------------- | 222| position | [CameraPosition](arkts-apis-camera-e.md#cameraposition) | 是 | 相机位置,首先通过 [getSupportedCameras](#getsupportedcameras) 接口获取支持的相机设备对象,然后根据返回的相机设备对象获取设备位置信息。 | 223| type | [CameraType](arkts-apis-camera-e.md#cameratype) | 是 | 相机类型,首先通过 [getSupportedCameras](#getsupportedcameras) 接口获取支持的相机设备对象,然后根据返回的相机设备对象获取设备类型信息。 | 224 225**返回值:** 226 227| 类型 | 说明 | 228| ---------- | ----------------------------- | 229| [CameraInput](arkts-apis-camera-CameraInput.md) | 返回CameraInput实例。接口调用失败会返回相应错误码,错误码类型为[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 230 231**错误码:** 232 233以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 234 235| 错误码ID | 错误信息 | 236| --------------- | --------------- | 237| 7400101 | Parameter missing or parameter type incorrect. | 238| 7400102 | Operation not allowed. | 239| 7400201 | Camera service fatal error. | 240 241**示例:** 242 243```ts 244import { BusinessError } from '@kit.BasicServicesKit'; 245 246function createCameraInput(camera: camera.CameraDevice, cameraManager: camera.CameraManager): camera.CameraInput | undefined { 247 let position: camera.CameraPosition = camera.cameraPosition; 248 let type: camera.CameraType = camera.cameraType; 249 let cameraInput: camera.CameraInput | undefined = undefined; 250 try { 251 cameraInput = cameraManager.createCameraInput(position, type); 252 } catch (error) { 253 // 失败返回错误码error.code并处理。 254 let err = error as BusinessError; 255 console.error(`The createCameraInput call failed. error code: ${err.code}`); 256 } 257 return cameraInput; 258} 259``` 260 261## createPreviewOutput 262 263createPreviewOutput(profile: Profile, surfaceId: string): PreviewOutput 264 265创建预览输出对象,同步返回结果。 266 267**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 268 269**系统能力:** SystemCapability.Multimedia.Camera.Core 270 271**参数:** 272 273| 参数名 | 类型 | 必填 | 说明 | 274| -------- | ----------------------------------------------- | ---- | ------------------------------- | 275| profile | [Profile](arkts-apis-camera-i.md#profile) | 是 | 支持的预览配置信息,通过[getSupportedOutputCapability](#getsupportedoutputcapability11)接口获取。| 276| surfaceId| string | 是 | 从[XComponent](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md)或者[ImageReceiver](../apis-image-kit/arkts-apis-image-ImageReceiver.md)组件获取的surfaceId。| 277 278**返回值:** 279 280| 类型 | 说明 | 281| ---------- | ----------------------------- | 282| [PreviewOutput](arkts-apis-camera-PreviewOutput.md) | PreviewOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 283 284**错误码:** 285 286以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 287 288| 错误码ID | 错误信息 | 289| --------------- | --------------- | 290| 7400101 | Parameter missing or parameter type incorrect. | 291| 7400201 | Camera service fatal error. | 292 293**示例:** 294 295```ts 296import { BusinessError } from '@kit.BasicServicesKit'; 297 298function createPreviewOutput(cameraOutputCapability: camera.CameraOutputCapability, cameraManager: camera.CameraManager, surfaceId: string): camera.PreviewOutput | undefined { 299 let profile: camera.Profile = cameraOutputCapability.previewProfiles[0]; 300 let previewOutput: camera.PreviewOutput | undefined = undefined; 301 try { 302 previewOutput = cameraManager.createPreviewOutput(profile, surfaceId); 303 } catch (error) { 304 // 失败返回错误码error.code并处理。 305 let err = error as BusinessError; 306 console.error(`The createPreviewOutput call failed. error code: ${err.code}`); 307 } 308 return previewOutput; 309} 310``` 311 312## createPreviewOutput<sup>12+</sup> 313 314createPreviewOutput(surfaceId: string): PreviewOutput 315 316创建无配置信息的预览输出对象,同步返回结果。该接口需配合[preconfig](arkts-apis-camera-PhotoSession.md#preconfig12)一起使用。 317 318**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 319 320**系统能力:** SystemCapability.Multimedia.Camera.Core 321 322**参数:** 323 324| 参数名 | 类型 | 必填 | 说明 | 325| -------- | ----------------------------------------------- | ---- | ------------------------------- | 326| surfaceId| string | 是 | 从[XComponent](../apis-arkui/arkui-ts/ts-basic-components-xcomponent.md)或者[ImageReceiver](../apis-image-kit/arkts-apis-image-ImageReceiver.md)组件获取的surfaceId。| 327 328**返回值:** 329 330| 类型 | 说明 | 331| ---------- | ----------------------------- | 332| [PreviewOutput](arkts-apis-camera-PreviewOutput.md) | PreviewOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 333 334**错误码:** 335 336以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 337 338| 错误码ID | 错误信息 | 339|---------|------------------------------------------------| 340| 7400101 | Parameter missing or parameter type incorrect. | 341| 7400201 | Camera service fatal error. | 342 343**示例:** 344 345```ts 346import { BusinessError } from '@kit.BasicServicesKit'; 347 348function createPreviewOutput(cameraManager: camera.CameraManager, surfaceId: string): camera.PreviewOutput | undefined { 349 let previewOutput: camera.PreviewOutput | undefined = undefined; 350 try { 351 previewOutput = cameraManager.createPreviewOutput(surfaceId); 352 } catch (error) { 353 // 失败返回错误码error.code并处理。 354 let err = error as BusinessError; 355 console.error(`The createPreviewOutput call failed. error code: ${err.code}`); 356 } 357 return previewOutput; 358} 359``` 360 361## createPhotoOutput<sup>11+</sup> 362 363createPhotoOutput(profile?: Profile): PhotoOutput 364 365创建拍照输出对象,同步返回结果。 366 367**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 368 369**系统能力:** SystemCapability.Multimedia.Camera.Core 370 371**参数:** 372 373| 参数名 | 类型 | 必填 | 说明 | 374| -------- | ------------------------------------------- |----| ----------------------------------- | 375| profile | [Profile](arkts-apis-camera-i.md#profile) | 否 | 支持的拍照配置信息,通过[getSupportedOutputCapability](#getsupportedoutputcapability11)接口获取。<br>API 11时,该参数必填;从API 12开始,如果使用[preconfig](arkts-apis-camera-PhotoSession.md#preconfig12)进行预配置,传入profile参数会覆盖preconfig的预配置参数。| 376 377**返回值:** 378 379| 类型 | 说明 | 380| ---------- | ----------------------------- | 381| [PhotoOutput](arkts-apis-camera-PhotoOutput.md) | PhotoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 382 383**错误码:** 384 385以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 386 387| 错误码ID | 错误信息 | 388|----------|------------------------------------------------| 389| 7400101 | Parameter missing or parameter type incorrect. | 390| 7400201 | Camera service fatal error. | 391 392**示例:** 393 394```ts 395import { BusinessError } from '@kit.BasicServicesKit'; 396 397function createPhotoOutput(cameraOutputCapability: camera.CameraOutputCapability, cameraManager: camera.CameraManager): camera.PhotoOutput | undefined { 398 let profile: camera.Profile = cameraOutputCapability.photoProfiles[0]; 399 let photoOutput: camera.PhotoOutput | undefined = undefined; 400 try { 401 photoOutput = cameraManager.createPhotoOutput(profile); 402 } catch (error) { 403 // 失败返回错误码error.code并处理。 404 let err = error as BusinessError; 405 console.error(`The createPhotoOutput call failed. error code: ${err.code}`); 406 } 407 return photoOutput; 408} 409``` 410 411## createVideoOutput 412 413createVideoOutput(profile: VideoProfile, surfaceId: string): VideoOutput 414 415创建录像输出对象,同步返回结果。 416 417**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 418 419**系统能力:** SystemCapability.Multimedia.Camera.Core 420 421**参数:** 422 423| 参数名 | 类型 | 必填 | 说明 | 424| -------- | ------------------------------------------- | ---- | ------------------------------ | 425| profile | [VideoProfile](arkts-apis-camera-i.md#videoprofile) | 是 | 支持的录像配置信息,通过[getSupportedOutputCapability](#getsupportedoutputcapability11)接口获取。 | 426| surfaceId| string | 是 | 从[AVRecorder](../apis-media-kit/arkts-apis-media-AVRecorder.md)获取的surfaceId。| 427 428**返回值:** 429 430| 类型 | 说明 | 431| ---------- | ----------------------------- | 432| [VideoOutput](arkts-apis-camera-VideoOutput.md) | VideoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 433 434**错误码:** 435 436以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 437 438| 错误码ID | 错误信息 | 439| --------------- | --------------- | 440| 7400101 | Parameter missing or parameter type incorrect. | 441| 7400201 | Camera service fatal error. | 442 443**示例:** 444 445```ts 446import { BusinessError } from '@kit.BasicServicesKit'; 447 448function createVideoOutput(cameraOutputCapability: camera.CameraOutputCapability, cameraManager: camera.CameraManager, surfaceId: string): camera.VideoOutput | undefined { 449 let profile: camera.VideoProfile = cameraOutputCapability.videoProfiles[0]; 450 let videoOutput: camera.VideoOutput | undefined = undefined; 451 try { 452 videoOutput = cameraManager.createVideoOutput(profile, surfaceId); 453 } catch (error) { 454 // 失败返回错误码error.code并处理。 455 let err = error as BusinessError; 456 console.error(`The createVideoOutput call failed. error code: ${err.code}`); 457 } 458 return videoOutput; 459} 460``` 461 462## createVideoOutput<sup>12+</sup> 463 464createVideoOutput(surfaceId: string): VideoOutput 465 466创建无配置信息的录像输出对象,同步返回结果。该接口需配合[preconfig](arkts-apis-camera-VideoSession.md#preconfig12)功能一起使用。 467 468**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 469 470**系统能力:** SystemCapability.Multimedia.Camera.Core 471 472**参数:** 473 474| 参数名 | 类型 | 必填 | 说明 | 475|-----------|--------|-------|----------------------------------------------------------------------------| 476| surfaceId | string | 是 | 从[AVRecorder](../apis-media-kit/arkts-apis-media-AVRecorder.md)获取的surfaceId。 | 477 478**返回值:** 479 480| 类型 | 说明 | 481| ---------- | ----------------------------- | 482| [VideoOutput](arkts-apis-camera-VideoOutput.md) | VideoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 483 484**错误码:** 485 486以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 487 488| 错误码ID | 错误信息 | 489|----------|------------------------------------------------| 490| 7400101 | Parameter missing or parameter type incorrect. | 491| 7400201 | Camera service fatal error. | 492 493**示例:** 494 495```ts 496import { BusinessError } from '@kit.BasicServicesKit'; 497 498function createVideoOutput(cameraManager: camera.CameraManager, surfaceId: string): camera.VideoOutput | undefined { 499 let videoOutput: camera.VideoOutput | undefined = undefined; 500 try { 501 videoOutput = cameraManager.createVideoOutput(surfaceId); 502 } catch (error) { 503 // 失败返回错误码error.code并处理。 504 let err = error as BusinessError; 505 console.error(`The createVideoOutput call failed. error code: ${err.code}`); 506 } 507 return videoOutput; 508} 509``` 510 511## createMetadataOutput 512 513createMetadataOutput(metadataObjectTypes: Array\<MetadataObjectType\>): MetadataOutput 514 515创建metadata流输出对象,同步返回结果。 516 517**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 518 519**系统能力:** SystemCapability.Multimedia.Camera.Core 520 521**参数:** 522 523| 参数名 | 类型 | 必填 | 说明 | 524| -------------------- | -------------------------------------------------- | --- | ---------------------------- | 525| metadataObjectTypes | Array\<[MetadataObjectType](arkts-apis-camera-e.md#metadataobjecttype)\> | 是 | metadata流类型信息,通过[getSupportedOutputCapability](#getsupportedoutputcapability11)接口获取。 | 526 527**返回值:** 528 529| 类型 | 说明 | 530| ---------- | ----------------------------- | 531| [MetadataOutput](arkts-apis-camera-MetadataOutput.md) | MetadataOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 532 533**错误码:** 534 535以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 536 537| 错误码ID | 错误信息 | 538| --------------- | --------------- | 539| 7400101 | Parameter missing or parameter type incorrect. | 540| 7400201 | Camera service fatal error. | 541 542**示例:** 543 544```ts 545import { BusinessError } from '@kit.BasicServicesKit'; 546 547function createMetadataOutput(cameraManager: camera.CameraManager, cameraOutputCapability: camera.CameraOutputCapability): void { 548 let metadataObjectTypes: Array<camera.MetadataObjectType> = cameraOutputCapability.supportedMetadataObjectTypes; 549 let metadataOutput: camera.MetadataOutput | undefined = undefined; 550 try { 551 metadataOutput = cameraManager.createMetadataOutput(metadataObjectTypes); 552 } catch (error) { 553 // 失败返回错误码error.code并处理。 554 let err = error as BusinessError; 555 console.error(`createMetadataOutput error. error code: ${err.code}`); 556 } 557} 558``` 559 560## createSession<sup>11+</sup> 561 562createSession\<T extends Session\>(mode: SceneMode): T 563 564创建指定SceneMode的Session实例,同步返回结果。 565 566**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 567 568**系统能力:** SystemCapability.Multimedia.Camera.Core 569 570**参数:** 571 572| 参数名 | 类型 | 必填 | 说明 | 573| -------- | -----------------| ---- | --------- | 574| mode | [SceneMode](arkts-apis-camera-e.md#scenemode11) | 是 | 相机支持的模式。如果传入的参数异常(如超出范围、传入null或未定义等),实际接口不会生效。 | 575 576**返回值:** 577 578| 类型 | 说明 | 579| ---------- | ----------------------------- | 580| [T](arkts-apis-camera-Session.md) | Session实例。接口调用失败会返回相应的错误码,错误码类型为[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 581 582**错误码:** 583 584以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 585 586| 错误码ID | 错误信息 | 587|---------|------------------------------------------------------------------------------------------------------------------------------------------------| 588| 7400101 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3.Parameter verification failed. | 589| 7400201 | Camera service fatal error. | 590 591**示例:** 592 593```ts 594import { BusinessError } from '@kit.BasicServicesKit'; 595 596function createSession(cameraManager: camera.CameraManager, mode: camera.SceneMode): camera.Session | undefined { 597 let photoSession: camera.PhotoSession | undefined = undefined; 598 try { 599 photoSession = cameraManager.createSession(mode) as camera.PhotoSession; 600 } catch (error) { 601 // 失败返回错误码error.code并处理。 602 let err = error as BusinessError; 603 console.error(`createCaptureSession error. error code: ${err.code}`); 604 } 605 return photoSession; 606} 607``` 608 609## on('cameraStatus') 610 611on(type: 'cameraStatus', callback: AsyncCallback\<CameraStatusInfo\>): void 612 613相机设备状态回调,通过注册回调函数获取相机的状态变化。使用callback异步回调。 614 615> **说明:** 616> 617> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 618 619**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 620 621**系统能力:** SystemCapability.Multimedia.Camera.Core 622 623**参数:** 624 625| 参数名 | 类型 | 必填 | 说明 | 626| -------- | -----------------| ---- | --------- | 627| type | string | 是 | 监听事件,固定为'cameraStatus'。cameraManager对象获取成功后可监听。目前只支持对设备打开或者关闭会触发该事件并返回对应信息。 | 628| callback | AsyncCallback\<[CameraStatusInfo](arkts-apis-camera-i.md#camerastatusinfo)\> | 是 | 回调函数,用于获取镜头状态变化信息。 | 629 630**示例:** 631 632```ts 633import { BusinessError } from '@kit.BasicServicesKit'; 634 635function callback(err: BusinessError, cameraStatusInfo: camera.CameraStatusInfo): void { 636 if (err !== undefined && err.code !== 0) { 637 console.error('cameraStatus with errorCode = ' + err.code); 638 return; 639 } 640 console.info(`camera : ${cameraStatusInfo.camera.cameraId}`); 641 console.info(`status: ${cameraStatusInfo.status}`); 642} 643 644function registerCameraStatus(cameraManager: camera.CameraManager): void { 645 cameraManager.on('cameraStatus', callback); 646} 647``` 648 649## off('cameraStatus') 650 651off(type: 'cameraStatus', callback?: AsyncCallback\<CameraStatusInfo\>): void 652 653相机设备状态注销回调,通过注销回调函数取消获取相机的状态变化。 654 655**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 656 657**系统能力:** SystemCapability.Multimedia.Camera.Core 658 659**参数:** 660 661| 参数名 | 类型 | 必填 | 说明 | 662| -------- | -----------------| ---- | --------- | 663| type | string | 是 | 监听事件,固定为'cameraStatus'。cameraManager对象获取成功后可监听。 | 664| callback | AsyncCallback\<[CameraStatusInfo](arkts-apis-camera-i.md#camerastatusinfo)\> | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 665 666**示例:** 667 668```ts 669function unregisterCameraStatus(cameraManager: camera.CameraManager): void { 670 cameraManager.off('cameraStatus'); 671} 672``` 673 674## on('foldStatusChange')<sup>12+</sup> 675 676on(type: 'foldStatusChange', callback: AsyncCallback\<FoldStatusInfo\>): void 677 678注册折叠设备折叠状态变化的监听。使用callback异步回调。 679 680> **说明:** 681> 682> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 683 684**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 685 686**系统能力:** SystemCapability.Multimedia.Camera.Core 687 688**参数:** 689 690| 参数名 | 类型 | 必填 | 说明 | 691| -------- | -----------------| ---- | --------- | 692| type | string | 是 | 监听事件,固定为'foldStatusChange'。表示折叠设备折叠状态发生变化。 | 693| callback | AsyncCallback\<[FoldStatusInfo](arkts-apis-camera-i.md#foldstatusinfo12)\> | 是 | 回调函数。返回折叠设备折叠信息。 | 694 695**示例:** 696 697```ts 698import { BusinessError } from '@kit.BasicServicesKit'; 699 700function callback(err: BusinessError, foldStatusInfo: camera.FoldStatusInfo): void { 701 if (err !== undefined && err.code !== 0) { 702 console.error('foldStatusChange with errorCode = ' + err.code); 703 return; 704 } 705 console.info(`camera length: ${foldStatusInfo.supportedCameras.length}`); 706 console.info(`foldStatus: ${foldStatusInfo.foldStatus}`); 707} 708 709function registerFoldStatusChange(cameraManager: camera.CameraManager): void { 710 cameraManager.on('foldStatusChange', callback); 711} 712``` 713 714## off('foldStatusChange')<sup>12+</sup> 715 716off(type: 'foldStatusChange', callback?: AsyncCallback\<FoldStatusInfo\>): void 717 718关闭折叠设备折叠状态变化的监听。 719 720**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 721 722**系统能力:** SystemCapability.Multimedia.Camera.Core 723 724**参数:** 725 726| 参数名 | 类型 | 必填 | 说明 | 727| -------- | -----------------| ---- | --------- | 728| type | string | 是 | 监听事件,固定为'foldStatusChange'。表示折叠设备折叠状态发生变化。 | 729| callback | AsyncCallback\<[FoldStatusInfo](arkts-apis-camera-i.md#foldstatusinfo12)\> | 否 | 回调函数,返回折叠设备折叠信息。如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 730 731**示例:** 732 733```ts 734function unregisterFoldStatusChange(cameraManager: camera.CameraManager): void { 735 cameraManager.off('foldStatusChange'); 736} 737``` 738 739## isTorchSupported<sup>11+</sup> 740 741isTorchSupported(): boolean 742 743检测设备是否支持手电筒。 744 745**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 746 747**系统能力:** SystemCapability.Multimedia.Camera.Core 748 749**返回值:** 750 751| 类型 | 说明 | 752| ---------- | ----------------------------- | 753| boolean | 返回true表示设备支持手电筒,返回false表示设备不支持手电。 | 754 755**示例:** 756 757```ts 758function isTorchSupported(cameraManager: camera.CameraManager): boolean { 759 let isSupported = cameraManager.isTorchSupported(); 760 return isSupported; 761} 762``` 763 764## isTorchModeSupported<sup>11+</sup> 765 766isTorchModeSupported(mode: TorchMode): boolean 767 768检测是否支持设置的手电筒模式。 769 770**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 771 772**系统能力:** SystemCapability.Multimedia.Camera.Core 773 774**参数:** 775 776| 参数名 | 类型 | 必填 | 说明 | 777| -------- | --------------- | ---- | --------- | 778| mode | [TorchMode](arkts-apis-camera-e.md#torchmode11) | 是 | 手电筒模式。传参为null或者undefined,作为0处理,手电筒关闭。 | 779 780**返回值:** 781 782| 类型 | 说明 | 783| ---------- | ----------------------------- | 784| boolean | 返回true表示设备支持设置的手电筒模式,返回false表示设备不支持的手电筒模式。 | 785 786**示例:** 787 788```ts 789function isTorchModeSupported(cameraManager: camera.CameraManager, torchMode: camera.TorchMode): boolean { 790 let isSupported = cameraManager.isTorchModeSupported(torchMode); 791 return isSupported; 792} 793``` 794 795## getTorchMode<sup>11+</sup> 796 797getTorchMode(): TorchMode 798 799获取当前设备手电筒模式。 800 801**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 802 803**系统能力:** SystemCapability.Multimedia.Camera.Core 804 805**返回值:** 806 807| 类型 | 说明 | 808| ---------- | ----------------------------- | 809| [TorchMode](arkts-apis-camera-e.md#torchmode11) | 返回设备当前手电筒模式。 | 810 811**示例:** 812 813```ts 814function getTorchMode(cameraManager: camera.CameraManager): camera.TorchMode | undefined { 815 let torchMode: camera.TorchMode | undefined = undefined; 816 torchMode = cameraManager.getTorchMode(); 817 return torchMode; 818} 819``` 820 821## setTorchMode<sup>11+</sup> 822 823setTorchMode(mode: TorchMode): void 824 825设置设备手电筒模式。 826 827**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 828 829**系统能力:** SystemCapability.Multimedia.Camera.Core 830 831**参数:** 832 833| 参数名 | 类型 | 必填 | 说明 | 834| -------- | --------------- | ---- | --------- | 835| mode | [TorchMode](arkts-apis-camera-e.md#torchmode11) | 是 | 手电筒模式。传参为null或者undefined,作为0处理,手电筒关闭。 | 836 837**错误码:** 838 839以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 840 841| 错误码ID | 错误信息 | 842| --------------- | --------------- | 843| 7400102 | Operation not allowed. | 844| 7400201 | Camera service fatal error. | 845 846**示例:** 847 848```ts 849import { BusinessError } from '@kit.BasicServicesKit'; 850 851function setTorchMode(cameraManager: camera.CameraManager, torchMode: camera.TorchMode): void { 852 try { 853 cameraManager.setTorchMode(torchMode); 854 } catch (error) { 855 // 失败返回错误码error.code并处理。 856 let err = error as BusinessError; 857 console.error(`The setTorchMode call failed. error code: ${err.code}`); 858 } 859} 860``` 861 862## on('torchStatusChange')<sup>11+</sup> 863 864on(type: 'torchStatusChange', callback: AsyncCallback\<TorchStatusInfo\>): void 865 866手电筒状态变化回调,通过注册回调函数获取手电筒状态变化。使用callback异步回调。 867 868> **说明:** 869> 870> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 871 872**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 873 874**系统能力:** SystemCapability.Multimedia.Camera.Core 875 876**参数:** 877 878| 参数名 | 类型 | 必填 | 说明 | 879| -------- | --------------- | ---- | --------- | 880| type | string | 是 | 监听事件,固定为'torchStatusChange'。cameraManager对象获取成功后可监听。目前只支持手电筒打开,手电筒关闭,手电筒不可用,手电筒恢复可用会触发该事件并返回对应信息。 | 881| callback | AsyncCallback\<[TorchStatusInfo](arkts-apis-camera-i.md#torchstatusinfo11)> | 是 | 回调函数,用于获取手电筒状态变化信息。 | 882 883**示例:** 884 885```ts 886import { BusinessError } from '@kit.BasicServicesKit'; 887 888function callback(err: BusinessError, torchStatusInfo: camera.TorchStatusInfo): void { 889 if (err !== undefined && err.code !== 0) { 890 console.error(`Callback Error, errorCode: ${err.code}`); 891 return; 892 } 893 console.info(`onTorchStatusChange, isTorchAvailable: ${torchStatusInfo.isTorchAvailable}, isTorchActive: ${torchStatusInfo.isTorchActive}, level: ${torchStatusInfo.torchLevel}`); 894} 895 896function registerTorchStatusChange(cameraManager: camera.CameraManager): void { 897 cameraManager.on('torchStatusChange', callback); 898} 899``` 900 901## off('torchStatusChange')<sup>11+</sup> 902 903off(type: 'torchStatusChange', callback?: AsyncCallback\<TorchStatusInfo\>): void 904 905手电筒状态变化注销回调,通过注销回调函数取消获取手电筒状态变化。 906 907**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 908 909**系统能力:** SystemCapability.Multimedia.Camera.Core 910 911**参数:** 912 913| 参数名 | 类型 | 必填 | 说明 | 914| -------- | --------------- | ---- | --------- | 915| type | string | 是 | 监听事件,固定为'torchStatusChange'。cameraManager对象获取成功后可监听。 | 916| callback | AsyncCallback\<[TorchStatusInfo](arkts-apis-camera-i.md#torchstatusinfo11)> | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 917 918**示例:** 919 920```ts 921function unregisterTorchStatusChange(cameraManager: camera.CameraManager): void { 922 cameraManager.off('torchStatusChange'); 923} 924``` 925 926## getCameraDevice<sup>18+</sup> 927 928getCameraDevice(position:CameraPosition, type: CameraType): CameraDevice 929 930根据相机位置和相机类型查询对应相机。 931 932**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 933 934**系统能力:** SystemCapability.Multimedia.Camera.Core 935 936**参数:** 937 938| 参数名 | 类型 | 必填 | 说明 | 939| -------- | --------------- | ---- | --------- | 940| position | [CameraPosition](arkts-apis-camera-e.md#cameraposition) | 是 | 需要得到的CameraDevice对象对应的CameraPosition条件。 | 941| type | [CameraType](arkts-apis-camera-e.md#cameratype) | 是 | 需要得到的CameraDevice对象对应的CameraType条件。 | 942 943**返回值:** 944 945| 类型 | 说明 | 946| -----------------| ------------------------ | 947| [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 根据相机位置和相机类型查询的对应相机。 | 948 949**错误码:** 950 951以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Camera错误码](errorcode-camera.md)。 952 953| 错误码ID | 错误信息 | 954| --------------- | --------------- | 955| 7400201 | Camera service fatal error. | 956 957**示例:** 958 959```ts 960import { camera } from '@kit.CameraKit'; 961import { BusinessError } from '@kit.BasicServicesKit'; 962 963function getCameraDevice(cameraManager: camera.CameraManager, position: camera.CameraPosition, type: camera.CameraType): void { 964 try { 965 let curCameraDev: camera.CameraDevice | undefined = undefined; 966 curCameraDev = cameraManager.getCameraDevice(position, type); 967 } catch (error) { 968 // 失败返回错误码并处理。 969 let err = error as BusinessError; 970 console.error(`The getCameraDevice call failed. error code: ${err.code}`); 971 } 972} 973``` 974 975## getCameraConcurrentInfos<sup>18+</sup> 976 977getCameraConcurrentInfos(cameras: Array\<CameraDevice\>): Array\<CameraConcurrentInfo\> 978 979获取指定相机设备的并发信息。返回空数组表示不支持并发。 980 981**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 982 983**系统能力:** SystemCapability.Multimedia.Camera.Core 984 985**参数:** 986 987| 参数名 | 类型 | 必填 | 说明 | 988| -------- | --------------- | ---- | --------- | 989| cameras | Array\<[CameraDevice](arkts-apis-camera-i.md#cameradevice)\> | 是 | 一组CameraDevice相机设备,并得到与这一组CamraDevice对应的并发信息,推荐设置为由[getCameraDevice](#getcameradevice18)获取的前置与后置两个用于并发的相机设备。 | 990 991**返回值:** 992 993| 类型 | 说明 | 994| -----------------| ------------------------ | 995| Array\<[CameraConcurrentInfo](arkts-apis-camera-i.md#cameraconcurrentinfo18)\> | 一组CameraDevice相机设备对象对应的并发信息,与CameraDevice相机设备一一对应。 | 996 997**错误码:** 998 999以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Camera错误码](errorcode-camera.md)。 1000 1001| 错误码ID | 错误信息 | 1002| --------------- | --------------- | 1003| 7400201 | Camera service fatal error. | 1004 1005**示例:** 1006 1007```ts 1008import { camera } from '@kit.CameraKit'; 1009import { BusinessError } from '@kit.BasicServicesKit'; 1010 1011function getCameraConcurrentInfos(cameraManager: camera.CameraManager, 1012 cameraDeviceArray: Array<camera.CameraDevice>): Array<camera.CameraConcurrentInfo> { 1013 let cameraConcurrentInfos: Array<camera.CameraConcurrentInfo> = []; 1014 try { 1015 cameraConcurrentInfos = cameraManager.getCameraConcurrentInfos(cameraDeviceArray); 1016 } catch (error) { 1017 // 失败返回错误码并处理。 1018 let err = error as BusinessError; 1019 console.error(`The getCameraConcurrentInfos call failed. error code: ${err.code}`); 1020 } 1021 return cameraConcurrentInfos; 1022} 1023``` 1024 1025## getSupportedOutputCapability<sup>(deprecated)</sup> 1026 1027getSupportedOutputCapability(camera: CameraDevice): CameraOutputCapability 1028 1029查询相机设备支持的输出能力,同步返回结果。 1030 1031> **说明:** 1032> 从 API version 10开始支持,从API version 11开始废弃。建议使用[getSupportedOutputCapability](#getsupportedoutputcapability11)替代。 1033 1034**系统能力:** SystemCapability.Multimedia.Camera.Core 1035 1036**参数:** 1037 1038| 参数名 | 类型 | 必填 | 说明 | 1039| ------------ |--------------------------------------------------------------- | -- | -------------------------- | 1040| camera | [CameraDevice](arkts-apis-camera-i.md#cameradevice) | 是 | 相机设备,通过 [getSupportedCameras](#getsupportedcameras) 接口获取。传参异常时,会返回错误码。 | 1041 1042**返回值:** 1043 1044| 类型 | 说明 | 1045| ----------------------------------------------- | ---------------------------- | 1046| [CameraOutputCapability](arkts-apis-camera-i.md#cameraoutputcapability) | 相机输出能力。 | 1047 1048**示例:** 1049 1050```ts 1051function getSupportedOutputCapability(camera: camera.CameraDevice, cameraManager: camera.CameraManager): camera.CameraOutputCapability { 1052 let cameraOutputCapability: camera.CameraOutputCapability = cameraManager.getSupportedOutputCapability(camera); 1053 return cameraOutputCapability; 1054} 1055``` 1056 1057## createPhotoOutput<sup>(deprecated)</sup> 1058 1059createPhotoOutput(profile: Profile, surfaceId: string): PhotoOutput 1060 1061创建拍照输出对象,同步返回结果。 1062 1063> **说明:** 1064> 从 API version 10开始支持,从API version 11开始废弃。建议使用[createPhotoOutput](#createphotooutput11)替代。 1065 1066**系统能力:** SystemCapability.Multimedia.Camera.Core 1067 1068**参数:** 1069 1070| 参数名 | 类型 | 必填 | 说明 | 1071| -------- | ------------------------------------------- | ---- | ----------------------------------- | 1072| profile | [Profile](arkts-apis-camera-i.md#profile) | 是 | 支持的拍照配置信息,通过[getSupportedOutputCapability](#getsupportedoutputcapability11)接口获取。| 1073| surfaceId| string | 是 | 从[ImageReceiver](../apis-image-kit/arkts-apis-image-ImageReceiver.md)获取的surfaceId。| 1074 1075**返回值:** 1076 1077| 类型 | 说明 | 1078| ---------- | ----------------------------- | 1079| [PhotoOutput](arkts-apis-camera-PhotoOutput.md) | PhotoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 1080 1081**错误码:** 1082 1083以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 1084 1085| 错误码ID | 错误信息 | 1086| --------------- | --------------- | 1087| 7400101 | Parameter missing or parameter type incorrect. | 1088 1089```ts 1090import { BusinessError } from '@kit.BasicServicesKit'; 1091 1092function createPhotoOutput(cameraOutputCapability: camera.CameraOutputCapability, cameraManager: camera.CameraManager, surfaceId: string): camera.PhotoOutput | undefined { 1093 let profile: camera.Profile = cameraOutputCapability.photoProfiles[0]; 1094 let photoOutput: camera.PhotoOutput | undefined = undefined; 1095 try { 1096 photoOutput = cameraManager.createPhotoOutput(profile, surfaceId); 1097 } catch (error) { 1098 // 失败返回错误码error.code并处理。 1099 let err = error as BusinessError; 1100 console.error(`The createPhotoOutput call failed. error code: ${err.code}`); 1101 } 1102 return photoOutput; 1103} 1104``` 1105 1106## createCaptureSession<sup>(deprecated)</sup> 1107 1108createCaptureSession(): CaptureSession 1109 1110创建CaptureSession实例,同步返回结果。 1111 1112> **说明:** 1113>从 API version 10开始支持,从API version 11开始废弃。建议使用[createSession](#createsession11)替代。 1114 1115**系统能力:** SystemCapability.Multimedia.Camera.Core 1116 1117**返回值:** 1118 1119| 类型 | 说明 | 1120| ---------- | ----------------------------- | 1121| [CaptureSession](arkts-apis-camera-CaptureSession.md) | CaptureSession实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 1122 1123**错误码:** 1124 1125以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 1126 1127| 错误码ID | 错误信息 | 1128| --------------- | --------------- | 1129| 7400201 | Camera service fatal error. | 1130 1131**示例:** 1132 1133```ts 1134import { BusinessError } from '@kit.BasicServicesKit'; 1135 1136function createCaptureSession(cameraManager: camera.CameraManager): camera.CaptureSession | undefined { 1137 let captureSession: camera.CaptureSession | undefined = undefined; 1138 try { 1139 captureSession = cameraManager.createCaptureSession(); 1140 } catch (error) { 1141 // 失败返回错误码error.code并处理。 1142 let err = error as BusinessError; 1143 console.error(`createCaptureSession error. error code: ${err.code}`); 1144 } 1145 return captureSession; 1146} 1147``` 1148