• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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