js-apis-camera.md 122.5 KB
Newer Older
Z
zengyawen 已提交
1
# @ohos.multimedia.camera (相机管理)
N
nikhilraut 已提交
2

Z
zengyawen 已提交
3
> **说明:**
4
>
Z
zengyawen 已提交
5
> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
6

N
nikhilraut 已提交
7 8
## 导入模块

Z
zengyawen 已提交
9
```js
N
nikhilraut 已提交
10 11 12
import camera from '@ohos.multimedia.camera';
```

Z
zengyawen 已提交
13
## camera.getCameraManager
N
nikhilraut 已提交
14

15
getCameraManager(context: Context): CameraManager
N
nikhilraut 已提交
16

17
获取相机管理器实例,同步返回结果。
N
nikhilraut 已提交
18

Z
zengyawen 已提交
19
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
20 21 22

**参数:**

M
mali 已提交
23
| 参数名     | 类型                                             | 必填 | 说明                           |
J
jiangminyang 已提交
24
| -------- | ----------------------------------------------- | ---- | ---------------------------- |
Z
zengyawen 已提交
25
| context  | [Context](js-apis-inner-app-context.md)      | 是   | 应用上下文。                   |
N
nikhilraut 已提交
26 27 28

**返回值:**

29 30 31
| 类型                                             | 说明                           |
| ----------------------------------------------- | ---------------------------- |
| [CameraManager](#cameramanager)           | 相机管理器。                   |
N
nikhilraut 已提交
32

M
mali 已提交
33 34
**错误码:**

Z
zengyawen 已提交
35
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
36 37 38 39 40 41

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |
| 7400201                |  Camera service fatal error.                                  |

N
nikhilraut 已提交
42 43
**示例:**

Z
zengyawen 已提交
44
```js
45
let cameraManager = camera.getCameraManager(context);
N
nikhilraut 已提交
46 47
```

Z
zengyawen 已提交
48
## CameraStatus
N
nikhilraut 已提交
49

Z
zengyawen 已提交
50
枚举,相机状态。
N
nikhilraut 已提交
51

Z
zengyawen 已提交
52
**系统能力:** SystemCapability.Multimedia.Camera.Core
Z
zengyawen 已提交
53

54 55
| 名称                       | 值   | 说明            |
| ------------------------- | ---- | ------------    |
J
jiangminyang 已提交
56
| CAMERA_STATUS_APPEAR      | 0    | 新的相机出现。   |
57 58 59
| CAMERA_STATUS_DISAPPEAR   | 1    | 相机被移除。     |
| CAMERA_STATUS_AVAILABLE   | 2    | 相机可用。       |
| CAMERA_STATUS_UNAVAILABLE | 3    | 相机不可用。     |
N
nikhilraut 已提交
60

J
jiangminyang 已提交
61
## Profile
J
jiangminyang 已提交
62

J
jiangminyang 已提交
63
相机配置信息项。
J
jiangminyang 已提交
64 65 66

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
67
| 名称      | 类型                           | 必填 | 说明         |
J
jiangminyang 已提交
68 69 70
| -------- | ----------------------------- |---- | ------------- |
| format   | [CameraFormat](#cameraformat) | 是  | 输出格式。      |
| size     | [Size](#size)                 | 是  | 分辨率。       |
J
jiangminyang 已提交
71

J
jiangminyang 已提交
72 73 74 75 76 77
## FrameRateRange

帧率范围。

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
78
| 名称      | 类型                           | 必填 | 说明         |
J
jiangminyang 已提交
79 80 81 82
| -------- | ----------------------------- |---- | ------------- |
| min      | number                        | 是  | 最小帧率。      |
| max      | number                        | 是  | 最大帧率。      |

J
jiangminyang 已提交
83
## VideoProfile
J
jiangminyang 已提交
84

J
jiangminyang 已提交
85
视频配置信息项。
J
jiangminyang 已提交
86 87 88

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
89
| 名称                       | 类型                                      | 必填 | 说明        |
J
jiangminyang 已提交
90
| ------------------------- | ----------------------------------------- | --- |----------- |
J
jiangminyang 已提交
91
| frameRateRange            | [FrameRateRange](#frameraterange)         | 是  | 帧率范围。   |
J
jiangminyang 已提交
92

J
jiangminyang 已提交
93
## CameraOutputCapability
J
jiangminyang 已提交
94

J
jiangminyang 已提交
95
相机输出能力项。
J
jiangminyang 已提交
96 97 98

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
99
| 名称                           | 类型                                               | 必填 | 说明                |
J
jiangminyang 已提交
100
| ----------------------------- | -------------------------------------------------- | --- |------------------- |
C
cold_yixiu 已提交
101 102 103 104
| previewProfiles               | Array\<[Profile](#profile)\>                        | 是  | 支持的预览配置信息。    |
| photoProfiles                 | Array\<[Profile](#profile)\>                        | 是  | 支持的拍照配置信息。    |
| videoProfiles                 | Array\<[VideoProfile](#videoprofile)\>              | 是  | 支持的录像配置信息。    |
| supportedMetadataObjectTypes  | Array\<[MetadataObjectType](#metadataobjecttype)\>  | 是  | 支持的metadata流类型信息。|
J
jiangminyang 已提交
105

106
## CameraErrorCode
N
nikhilraut 已提交
107

108
相机错误码。接口使用不正确以及on接口监听error状态返回。
N
nikhilraut 已提交
109

Z
zengyawen 已提交
110
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
111

M
mali 已提交
112 113 114 115 116 117 118 119 120 121 122 123
| 名称                       | 值          | 说明            |
| -------------------------  | ----       | ------------    |
| INVALID_ARGUMENT           | 7400101    | 参数缺失或者参数类型不对。   |
| OPERATION_NOT_ALLOWED      | 7400102    | 操作流程不对,不允许。     |
| SESSION_NOT_CONFIG         | 7400103    | session 未配置返回。       |
| SESSION_NOT_RUNNING        | 7400104    | session 未运行返回。    |
| SESSION_CONFIG_LOCKED      | 7400105    | session 配置已锁定返回。     |
| DEVICE_SETTING_LOCKED      | 7400106    | 设备设置已锁定返回。     |
| CONFLICT_CAMERA            | 7400107    | 设备重复打开返回。     |
| DEVICE_DISABLED            | 7400108    | 安全原因摄像头被禁用。     |
| DEVICE_PREEMPTED           | 7400109    | 相机被抢占导致无法使用     |
| SERVICE_FATAL_ERROR        | 7400201    | 相机服务错误返回。     |
N
nikhilraut 已提交
124

125
## CameraManager
N
nikhilraut 已提交
126

127
相机管理器类,使用前需要通过getCameraManager获取相机管理实例。
N
nikhilraut 已提交
128

J
jiangminyang 已提交
129
### getSupportedCameras
N
nikhilraut 已提交
130

C
cold_yixiu 已提交
131
getSupportedCameras(): Array\<CameraDevice\>
N
nikhilraut 已提交
132

133
获取支持指定的相机设备对象,同步返回结果。
N
nikhilraut 已提交
134

Z
zengyawen 已提交
135
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
136 137 138

**返回值:**

139 140
| 类型                                             | 说明                           |
| ----------------------------------------------- | ---------------------------- |
C
cold_yixiu 已提交
141
|  Array\<[CameraDevice](#cameradevice)>            | 相机设备列表。                   |
N
nikhilraut 已提交
142 143 144

**示例:**

Z
zengyawen 已提交
145
```js
146 147
let cameras = cameraManager.getSupportedCameras();

N
nikhilraut 已提交
148 149
```

J
jiangminyang 已提交
150
### getSupportedOutputCapability
N
nikhilraut 已提交
151

C
cold_yixiu 已提交
152
getSupportedOutputCapability(camera:CameraDevice): CameraOutputCapability
N
nikhilraut 已提交
153

154
查询相机设备在模式下支持的输出能力,同步返回结果。
Z
zengyawen 已提交
155

Z
zengyawen 已提交
156
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
157 158 159

**参数:**

M
mali 已提交
160
| 参数名         | 类型                                                            | 必填 | 说明                      |
J
jiangminyang 已提交
161
| ------------ |--------------------------------------------------------------- | -- | -------------------------- |
M
mali 已提交
162
| cameraDevice | [CameraDevice](#cameradevice)                              | 是 | 相机设备,通过 getSupportedCameras 接口获取       |
N
nikhilraut 已提交
163 164 165

**返回值:**

166 167 168
| 类型                                             | 说明                           |
| ----------------------------------------------- | ---------------------------- |
| [CameraOutputCapability](#cameraoutputcapability)            | 相机输出能力。                   |
J
jiangminyang 已提交
169

N
nikhilraut 已提交
170 171
**示例:**

Z
zengyawen 已提交
172
```js
M
mali 已提交
173
let cameras = cameraManager.getSupportedCameras();
174
let cameraDevice = cameras[0];
175 176
let cameraOutputCapability = cameraManager.getSupportedOutputCapability(cameraDevice);

J
jiangminyang 已提交
177 178
```

J
jiangminyang 已提交
179 180
### isCameraMuted

J
jiangminyang 已提交
181
isCameraMuted(): boolean
J
jiangminyang 已提交
182

183 184 185
查询相机当前的禁用状态(禁用/未禁用)。

在此之前,需要通过[isCameraMuteSupported](#iscameramutesupported)确认当前设备支持禁用相机。
J
jiangminyang 已提交
186 187 188 189 190

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

J
jiangminyang 已提交
191 192 193
| 类型        | 说明                                         |
| ---------- | -------------------------------------------- |
| boolean    | 返回true表示相机被禁用,返回false表示相机未被禁用。 |
J
jiangminyang 已提交
194 195 196 197

**示例:**

```js
M
mali 已提交
198
let ismuted = cameraManager.isCameraMuted();
J
jiangminyang 已提交
199 200 201 202
```

### isCameraMuteSupported

J
jiangminyang 已提交
203
isCameraMuteSupported(): boolean
J
jiangminyang 已提交
204

205
查询当前设备是否支持禁用相机,通过返回值返回结果。
J
jiangminyang 已提交
206

M
format  
mali 已提交
207
**系统接口:** 此接口为系统接口。
M
mali 已提交
208

J
jiangminyang 已提交
209 210 211 212 213 214
**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
J
jiangminyang 已提交
215
| boolean    | 返回true表示相机可以被禁用,返回false表示相机不能被禁用。 |
J
jiangminyang 已提交
216 217 218 219

**示例:**

```js
M
mali 已提交
220
let ismutesuppotred = cameraManager.isCameraMuteSupported();
J
jiangminyang 已提交
221 222 223 224
```

### muteCamera

J
jiangminyang 已提交
225
muteCamera(mute: boolean): void
J
jiangminyang 已提交
226 227 228

禁用相机。

M
format  
mali 已提交
229
**系统接口:** 此接口为系统接口。
M
mali 已提交
230

J
jiangminyang 已提交
231 232 233 234
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
235
| 参数名      | 类型                              | 必填  | 说明        |
J
jiangminyang 已提交
236 237 238 239 240 241
| -------- | --------------------------------- | ---- | ---------- |
| mute     | boolean                           |  是  |  禁用相机。  |

**示例:**

```js
M
mali 已提交
242
let mute = true;
J
jiangminyang 已提交
243 244 245
cameraManager.muteCamera(mute);
```

J
jiangminyang 已提交
246
### createCameraInput
N
nikhilraut 已提交
247

248
createCameraInput(camera: CameraDevice): CameraInput
J
jiangminyang 已提交
249

250
使用CameraDevice对象创建CameraInput实例,同步返回结果。
J
jiangminyang 已提交
251 252

**需要权限:** ohos.permission.CAMERA
N
nikhilraut 已提交
253

Z
zengyawen 已提交
254
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
255 256 257

**参数:**

M
mali 已提交
258
| 参数名     | 类型                                         | 必填 | 说明                                |
J
jiangminyang 已提交
259
| -------- | ------------------------------------------- | ---- | --------------------------------- |
260
| cameraDevice   | [CameraDevice](#cameradevice)         | 是   | CameraDevice对象,通过 getSupportedCameras 接口获取   |
J
jiangminyang 已提交
261

N
nikhilraut 已提交
262 263
**返回值:**

264 265
| 类型        | 说明                          |
| ---------- | ----------------------------- |
266
| [CameraInput](#camerainput)    | CameraInput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
267

M
mali 已提交
268 269
**错误码:**

Z
zengyawen 已提交
270
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
271 272 273 274 275

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

N
nikhilraut 已提交
276 277
**示例:**

Z
zengyawen 已提交
278
```js
M
mali 已提交
279
let cameraDevice = cameras[0];
280 281 282 283
let cameraInput;
try {
	cameraInput = cameraManager.createCameraInput(cameraDevice);
} catch (error) {
284
    // 失败返回错误码error.code并处理
285 286
    console.log(error.code);
}
N
nikhilraut 已提交
287 288
```

J
jiangminyang 已提交
289
### createCameraInput
N
nikhilraut 已提交
290

291
createCameraInput(position: CameraPosition, type: CameraType): CameraInput
N
nikhilraut 已提交
292

293
根据相机位置和类型创建CameraInput实例,同步返回结果。
J
jiangminyang 已提交
294

J
jiangminyang 已提交
295
**需要权限:** ohos.permission.CAMERA
N
nikhilraut 已提交
296

Z
zengyawen 已提交
297
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
298 299 300

**参数:**

M
mali 已提交
301
| 参数名     | 类型                                        | 必填 | 说明                                |
J
jiangminyang 已提交
302
| -------- | ------------------------------------------- | ---- | --------------------------------- |
M
mali 已提交
303 304
| position | [CameraPosition](#cameraposition)           | 是   | 相机位置,通过 getSupportedCameras 接口获取设备,然后获取设备位置信息  |
| type     | [CameraType](#cameratype)                   | 是   | 相机类型,通过 getSupportedCameras 接口获取设备,然后获取设备类型信息  |
J
jiangminyang 已提交
305 306 307

**返回值:**

308 309
| 类型        | 说明                          |
| ---------- | ----------------------------- |
310
| [CameraInput](#camerainput)    | CameraInput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
311

M
mali 已提交
312 313
**错误码:**

Z
zengyawen 已提交
314
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
315 316 317 318 319

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

J
jiangminyang 已提交
320 321 322
**示例:**

```js
M
mali 已提交
323 324 325
let cameraDevice = cameras[0];
let position = cameraDevice.cameraPosition;
let type = cameraDevice.cameraType;
326 327 328 329
let cameraInput;
try {
    cameraInput = cameraManager.createCameraInput(position, type);
} catch (error) {
330
    // 失败返回错误码error.code并处理
331 332
    console.log(error.code);
}
J
jiangminyang 已提交
333 334
```

J
jiangminyang 已提交
335
### createPreviewOutput
N
nikhilraut 已提交
336

337
createPreviewOutput(profile: Profile, surfaceId: string): PreviewOutput
J
jiangminyang 已提交
338

339
创建预览输出对象,同步返回结果。
J
jiangminyang 已提交
340

Z
zengyawen 已提交
341
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
342 343 344

**参数:**

M
mali 已提交
345
| 参数名     | 类型                                             | 必填 | 说明                              |
J
jiangminyang 已提交
346
| -------- | ----------------------------------------------- | ---- | ------------------------------- |
M
mali 已提交
347 348
| profile  | [Profile](#profile)                             | 是   | 支持的预览配置信息,通过getSupportedOutputCapability接口获取。|
| surfaceId| string | 是   | 从[XComponent](../arkui-ts/ts-basic-components-xcomponent.md)或者[ImageReceiver](js-apis-image.md#imagereceiver9)组件获取的surfaceId。|
J
jiangminyang 已提交
349

N
nikhilraut 已提交
350 351
**返回值:**

352 353
| 类型        | 说明                          |
| ---------- | ----------------------------- |
354
| [PreviewOutput](#previewoutput)    | PreviewOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
355

M
mali 已提交
356 357
**错误码:**

Z
zengyawen 已提交
358
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
359 360 361 362 363

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

N
nikhilraut 已提交
364 365
**示例:**

Z
zengyawen 已提交
366
```js
M
mali 已提交
367
let profile = cameraOutputCapability.previewProfiles[0];
368 369 370 371
let previewOutput;
try {
    previewOutput = cameraManager.createPreviewOutput(profile, surfaceId);
} catch (error) {
372
    // 失败返回错误码error.code并处理
373 374
    console.log(error.code);
}
N
nikhilraut 已提交
375 376
```

J
jiangminyang 已提交
377
### createPhotoOutput
N
nikhilraut 已提交
378

379
createPhotoOutput(profile: Profile, surfaceId: string): PhotoOutput
N
nikhilraut 已提交
380

381
创建拍照输出对象,同步返回结果。
N
nikhilraut 已提交
382

Z
zengyawen 已提交
383
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
384 385 386

**参数:**

M
mali 已提交
387
| 参数名     | 类型                                         | 必填 | 说明                                  |
J
jiangminyang 已提交
388
| -------- | ------------------------------------------- | ---- | ----------------------------------- |
M
mali 已提交
389 390
| profile  | [Profile](#profile)                         | 是   | 支持的拍照配置信息,通过getSupportedOutputCapability接口获取。|
| surfaceId| string            | 是   | 从[ImageReceiver](js-apis-image.md#imagereceiver9)获取的surfaceId。|
J
jiangminyang 已提交
391

N
nikhilraut 已提交
392 393
**返回值:**

394 395
| 类型        | 说明                          |
| ---------- | ----------------------------- |
396
| [PhotoOutput](#photooutput)   | PhotoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
397

M
mali 已提交
398 399
**错误码:**

Z
zengyawen 已提交
400
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
401 402 403 404 405

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

N
nikhilraut 已提交
406 407
**示例:**

Z
zengyawen 已提交
408
```js
M
mali 已提交
409
let profile = cameraOutputCapability.photoProfiles[0];
410 411 412 413 414 415 416
let photoOutput;
try {
    photoOutput = cameraManager.createPhotoOutput(profile, surfaceId);
} catch (error) {
    // 失败返回错误码error.code并处理
    console.log(error.code);
}
N
nikhilraut 已提交
417 418
```

J
jiangminyang 已提交
419
### createVideoOutput
N
nikhilraut 已提交
420

421
createVideoOutput(profile: VideoProfile, surfaceId: string): VideoOutput
N
nikhilraut 已提交
422

423
创建录像输出对象,同步返回结果。
N
nikhilraut 已提交
424

Z
zengyawen 已提交
425
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
426 427 428

**参数:**

M
mali 已提交
429
| 参数名     | 类型                                        | 必填 | 说明                              |
J
jiangminyang 已提交
430
| -------- | ------------------------------------------- | ---- | ------------------------------ |
M
mali 已提交
431 432
| profile  | [VideoProfile](#videoprofile)               | 是   | 支持的录像配置信息,通过getSupportedOutputCapability接口获取。 |
| surfaceId| string          | 是   | 从[VideoRecorder](js-apis-media.md#videorecorder9)获取的surfaceId。|
J
jiangminyang 已提交
433

N
nikhilraut 已提交
434 435
**返回值:**

436 437
| 类型        | 说明                          |
| ---------- | ----------------------------- |
438
| [VideoOutput](#videooutput)   | VideoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
439

M
mali 已提交
440 441
**错误码:**

Z
zengyawen 已提交
442
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
443 444 445 446 447

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

N
nikhilraut 已提交
448 449
**示例:**

Z
zengyawen 已提交
450
```js
M
mali 已提交
451
let profile = cameraOutputCapability.videoProfiles[0];
452 453 454 455
let videoOutput;
try {
    videoOutput = cameraManager.createVideoOutput(profile, surfaceId);
} catch (error) {
456
    // 失败返回错误码error.code并处理
457 458
    console.log(error.code);
}
N
nikhilraut 已提交
459 460
```

J
jiangminyang 已提交
461
### createMetadataOutput
N
nikhilraut 已提交
462

C
cold_yixiu 已提交
463
createMetadataOutput(metadataObjectTypes:Array\<MetadataObjectType\>): MetadataOutput
N
nikhilraut 已提交
464

465
创建metadata流输出对象,同步返回结果。
N
nikhilraut 已提交
466

Z
zengyawen 已提交
467
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
468 469 470

**参数:**

M
mali 已提交
471
| 参数名                  | 类型                                               | 必填 | 说明                          |
J
jiangminyang 已提交
472
| -------------------- | -------------------------------------------------- | --- | ---------------------------- |
C
cold_yixiu 已提交
473
| metadataObjectTypes  | Array\<[MetadataObjectType](#metadataobjecttype)\>  | 是  | metadata流类型信息,通过getSupportedOutputCapability接口获取。 |
J
jiangminyang 已提交
474

N
nikhilraut 已提交
475 476
**返回值:**

477 478
| 类型        | 说明                          |
| ---------- | ----------------------------- |
479
| [MetadataOutput](#metadataoutput)   | MetadataOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
480

M
mali 已提交
481 482
**错误码:**

Z
zengyawen 已提交
483
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
484 485 486 487 488

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect               |

N
nikhilraut 已提交
489 490
**示例:**

Z
zengyawen 已提交
491
```js
M
mali 已提交
492
let metadataObjectTypes = cameraOutputCapability.supportedMetadataObjectTypes;
493 494 495 496
let metadataOutput;
try {
    metadataOutput = cameraManager.createMetadataOutput(metadataObjectTypes);
} catch (error) {
497
    // 失败返回错误码error.code并处理
498 499
    console.log(error.code);
}
N
nikhilraut 已提交
500 501
```

J
jiangminyang 已提交
502
### createCaptureSession
N
nikhilraut 已提交
503

504
createCaptureSession(): CaptureSession
N
nikhilraut 已提交
505

J
jiangminyang 已提交
506
创建CaptureSession实例,通过注册回调函数获取结果。
N
nikhilraut 已提交
507

Z
zengyawen 已提交
508
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
509 510 511

**返回值:**

512 513
| 类型        | 说明                          |
| ---------- | ----------------------------- |
514
| [CaptureSession](#capturesession)   | CaptureSession实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
515

M
mali 已提交
516 517
**错误码:**

Z
zengyawen 已提交
518
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
519 520 521 522 523

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.               |

N
nikhilraut 已提交
524 525
**示例:**

Z
zengyawen 已提交
526
```js
527 528 529 530
let captureSession;
try {
    captureSession = cameraManager.createCaptureSession();
} catch (error) {
531
    // 失败返回错误码error.code并处理
532 533
    console.log(error.code);
}
N
nikhilraut 已提交
534 535
```

J
jiangminyang 已提交
536
### on('cameraStatus')
N
nikhilraut 已提交
537

C
cold_yixiu 已提交
538
on(type: 'cameraStatus', callback: AsyncCallback\<CameraStatusInfo\>): void
N
nikhilraut 已提交
539

540
相机设备状态回调,通过注册回调函数获取相机的状态变化。
N
nikhilraut 已提交
541

Z
zengyawen 已提交
542
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
543 544 545

**参数:**

546 547
| 参数名     | 类型            | 必填 | 说明       |
| -------- | -----------------| ---- | --------- |
548
| type     | string           | 是   | 监听事件,固定为'cameraStatus'。cameraManager对象获取成功后可监听。目前只支持对设备打开或者关闭会触发该事件并返回对应信息 |
C
cold_yixiu 已提交
549
| callback | AsyncCallback\<[CameraStatusInfo](#camerastatusinfo)\> | 是   | 回调函数,用于获取镜头状态变化信息。 |                 |
N
nikhilraut 已提交
550 551 552

**示例:**

Z
zengyawen 已提交
553
```js
M
mali 已提交
554 555 556
cameraManager.on('cameraStatus', (err, cameraStatusInfo) => {
    console.log(`camera : ${cameraStatusInfo.camera.cameraId}`);
    console.log(`status: ${cameraStatusInfo.status}`);
N
nikhilraut 已提交
557 558 559
})
```

J
jiangminyang 已提交
560 561
### on('cameraMute')

C
cold_yixiu 已提交
562
on(type: 'cameraMute', callback: AsyncCallback\<boolean\>): void
J
jiangminyang 已提交
563 564 565

禁用回调,通过注册回调函数获取相机禁用状态变化。

M
format  
mali 已提交
566
**系统接口:** 此接口为系统接口。
M
mali 已提交
567

J
jiangminyang 已提交
568 569 570 571
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
572
| 参数名     | 类型             | 必填 | 说明       |
J
jiangminyang 已提交
573
| -------- | --------------- | ---- | --------- |
574 575
| type     | string          | 是   | 监听事件,固定为'cameraMute',系统相机摄像头开关,cameraManager对象获取成功后可监听。系统设置打开或禁用相机会触发该事件并返回状态 |
| callback | AsyncCallback\<boolean> | 是   | 回调函数,用于获取禁用状态变化信息,返回true是开启状态,返回false是禁用状态。               |
J
jiangminyang 已提交
576 577 578 579

**示例:**

```js
M
mali 已提交
580
cameraManager.on('cameraMute', (err, curMuetd) => {
581
    let isMuted = curMuetd;
J
jiangminyang 已提交
582 583 584
})
```

Z
zengyawen 已提交
585
### isPrelaunchSupported
Z
zengyawen 已提交
586

Z
zengyawen 已提交
587
isPrelaunchSupported(camera: CameraDevice): boolean
Z
zengyawen 已提交
588

Z
zengyawen 已提交
589
在setPrelaunchConfig接口使用前调用,用于判断指定cameraDevice是否支持预热启动。
Z
zengyawen 已提交
590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型             | 必填 | 说明       |
| -------- | --------------- | ---- | --------- |
| camera | [CameraDevice](#cameradevice) | 是 | 相机信息。|

**返回值:**

| 类型 | 说明 |
| -------- | --------------- |
| boolean | 返回指定cameraDevice是否支持预热启动。|

**错误码:**

Z
zengyawen 已提交
609
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)。。
Z
zengyawen 已提交
610 611 612 613 614 615 616 617 618 619

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101 | Parameter missing or parameter type incorrect. |

**示例:**

```js
this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
let cameras = this.cameraManager.getSupportedCameras()
Z
zengyawen 已提交
620 621
if(this.cameraManager.isPrelaunchSupported(cameras[0])) {
     this.cameraManager.setPrelaunchConfig({cameraDevice: cameras[0]});
Z
zengyawen 已提交
622 623 624
}
```

Z
zengyawen 已提交
625
### setPrelaunchConfig
Z
zengyawen 已提交
626

Z
zengyawen 已提交
627
setPrelaunchConfig(prelaunchConfig: PrelaunchConfig): void
Z
zengyawen 已提交
628 629 630 631 632 633 634 635 636 637 638

**系统接口:** 此接口为系统接口。

**需要权限:** ohos.permission.CAMERA

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型             | 必填 | 说明       |
| -------- | --------------- | ---- | --------- |
Z
zengyawen 已提交
639
| prelaunchConfig | [PrelaunchConfig](#prelaunchconfig) | 是 | 预启动配置参数。|
Z
zengyawen 已提交
640 641 642

**错误码:**

Z
zengyawen 已提交
643
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)。。
Z
zengyawen 已提交
644 645 646 647 648 649 650 651 652 653 654

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101 | Parameter missing or parameter type incorrect. |
| 7400102 | Operation not allow. |

**示例:**

```js
this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
let cameras = this.cameraManager.getSupportedCameras()
Z
zengyawen 已提交
655 656 657 658 659 660 661
if(this.cameraManager.isPrelaunchSupported(cameras[0])) {
    try {
      this.cameraManager.setPrelaunchConfig({cameraDevice: cameras[0]});
    } catch (error) {
       console.error(`catch error: Code: ${error.code}, message: ${error.message}`);
    }
}
Z
zengyawen 已提交
662 663
```

Z
zengyawen 已提交
664
### prelaunch
Z
zengyawen 已提交
665

Z
zengyawen 已提交
666
prelaunch(): void
Z
zengyawen 已提交
667 668 669 670 671 672 673 674 675 676 677

用户点击系统相机图标,拉起相机应用同时调用,下发预热请求,使能相机预热启动。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**示例:**

```js
this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
Z
zengyawen 已提交
678 679 680 681 682
try {
  this.cameraManager.prelaunch();
} catch (error) {
  console.error(`catch error: Code: ${error.code}, message: ${error.message}`);
}
Z
zengyawen 已提交
683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708
```

### createDeferredPreviewOutput

createDeferredPreviewOutput(profile: Profile): PreviewOutput

创建延迟预览输出对象,在配流时替代普通的预览输出对象加入数据流。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型             | 必填 | 说明       |
| -------- | --------------- | ---- | --------- |
| profile | [Profile](#profile) | 是 | 相机预览流的配置文件。 |

**返回值:**

| 类型 | 说明 |
| -------- | --------------- |
| [PreviewOutput](#previewoutput) | 返回预览输出对象。 |

**错误码:**

Z
zengyawen 已提交
709
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)。。
Z
zengyawen 已提交
710 711 712 713 714 715 716 717 718 719 720 721 722 723 724

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101 | Parameter missing or parameter type incorrect. |

**示例:**

```js
function getDeferredPreviewOutput(context: Context, previewProfile: camera.Profile): Promise<PreviewOutput> {
  const cameraManager = camera.getCameraManager(context);
  const output: Promise<PreviewOutput> = cameraManager.createDeferredPreviewOutput(previewProfile);
  return output;
}
```

Z
zengyawen 已提交
725
## PrelaunchConfig
Z
zengyawen 已提交
726 727 728 729 730 731 732 733 734 735 736 737 738

相机预启动配置参数。

当前sensor级别预热,待扩展流预热参数。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称   | 类型                            |     必填     | 说明       |
| ------ | ----------------------------- | -------------- | ---------- |
| cameraDevice | [CameraDevice](#cameradevice) |        是       | 相机信息。 |

J
jiangminyang 已提交
739
## CameraStatusInfo
N
nikhilraut 已提交
740

J
jiangminyang 已提交
741 742 743 744
相机管理器回调返回的接口实例,表示相机状态信息。

**系统能力:** SystemCapability.Multimedia.Camera.Core。

M
mali 已提交
745 746 747 748
| 名称   | 类型                            |     必填     | 说明       |
| ------ | ----------------------------- | -------------- | ---------- |
| camera | [CameraDevice](#cameradevice) |        是       | 相机信息。 |
| status | [CameraStatus](#camerastatus) |        是        | 相机状态。 |
J
jiangminyang 已提交
749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769

## CameraPosition

枚举,相机位置。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称                         | 值   | 说明            |
| --------------------------- | ---- | -------------- |
| CAMERA_POSITION_UNSPECIFIED | 0    | 相机位置未指定。  |
| CAMERA_POSITION_BACK        | 1    | 后置相机。       |
| CAMERA_POSITION_FRONT       | 2    | 前置相机。       |

## CameraType

枚举,相机类型。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称                     | 值   | 说明            |
| ----------------------- | ---- | -------------- |
770
| CAMERA_TYPE_DEFAULT     | 0    | 相机类型未指定。  |
J
jiangminyang 已提交
771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787
| CAMERA_TYPE_WIDE_ANGLE  | 1    | 广角相机。       |
| CAMERA_TYPE_ULTRA_WIDE  | 2    | 超广角相机。     |
| CAMERA_TYPE_TELEPHOTO   | 3    | 长焦相机。       |
| CAMERA_TYPE_TRUE_DEPTH  | 4    | 带景深信息的相机。 |

## ConnectionType

枚举,相机连接类型。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称                          | 值   | 说明           |
| ---------------------------- | ---- | ------------- |
| CAMERA_CONNECTION_BUILT_IN   | 0    | 内置相机。      |
| CAMERA_CONNECTION_USB_PLUGIN | 1    | USB连接的相机。 |
| CAMERA_CONNECTION_REMOTE     | 2    | 远程连接的相机。 |

M
mali 已提交
788 789 790 791
## HostDeviceType

枚举,远端相机设备类型。

M
format  
mali 已提交
792
**系统接口:** 此接口为系统接口。
M
mali 已提交
793

M
mali 已提交
794 795
**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
796 797 798 799 800
| 名称                          | 值       | 说明           |
| ---------------------------- | ----     | ------------- |
| UNKNOWN_TYPE                 | 0        | 未知设备类型。      |
| PHONE                        | 0x0E     | 智能手机相机设备类型。 |
| TABLET                       | 0x11     | 平板电脑相机设备类型。 |
M
mali 已提交
801

J
jiangminyang 已提交
802 803 804 805 806 807
## CameraDevice

相机设备信息。

**系统能力:** SystemCapability.Multimedia.Camera.Core。

M
mali 已提交
808
| 名称           | 类型                                | 必填 | 说明        |
J
jiangminyang 已提交
809 810 811 812 813
| -------------- | --------------------------------- | ---- | ---------- |
| cameraId       | string                            | 是   | CameraDevice对象|
| cameraPosition | [CameraPosition](#cameraposition) | 是   | 相机位置。    |
| cameraType     | [CameraType](#cameratype)         | 是   | 相机类型。    |
| connectionType | [ConnectionType](#connectiontype) | 是   | 相机连接类型。 |
M
format  
mali 已提交
814 815
| hostDeviceName | string                            | 是   | 远端设备名称,**系统接口:** 此接口为系统接口。 |
| hostDeviceType | [hostDeviceType](#hostdevicetype) | 是   | 远端相机设备类型,**系统接口:** 此接口为系统接口。 |
J
jiangminyang 已提交
816 817 818 819 820 821 822 823 824 825 826 827 828 829

## Size

枚举,输出能力查询。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称   | 类型   | 可读 | 可写 | 说明         |
| ------ | ------ | ---- | ---- | ------------ |
| height | number | 是   | 是   | 图像尺寸高(像素)。 |
| width  | number | 是   | 是   | 图像尺寸宽(像素)。 |

## Point

J
jiangminyang 已提交
830
枚举,点坐标用于对焦、曝光配置。
J
jiangminyang 已提交
831 832

**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
833

J
jiangminyang 已提交
834 835 836 837 838 839 840 841 842 843 844
| 名称   | 类型   | 必填   | 说明         |
| ------ | ------ | ---- | ------------ |
| x      | number | 是    | 点的x坐标。   |
| y      | number | 是    | 点的y坐标。   |

## CameraFormat

枚举,输出格式。

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
845
| 名称                     | 值        | 说明         |
J
jiangminyang 已提交
846
| ----------------------- | --------- | ------------ |
J
jiangminyang 已提交
847
| CAMERA_FORMAT_RGBA_8888 | 3         | RGB格式的图片。             |
J
jiangminyang 已提交
848 849 850 851 852 853 854 855 856
| CAMERA_FORMAT_YUV_420_SP| 1003      | YUV 420 SP格式的图片。      |
| CAMERA_FORMAT_JPEG      | 2000      | JPEG格式的图片。            |

## CameraInput

会话中[CaptureSession](#capturesession)使用的相机信息。

### open

C
cold_yixiu 已提交
857
open\(callback: AsyncCallback\<void\>\): void
J
jiangminyang 已提交
858

J
jiangminyang 已提交
859
打开相机,通过注册回调函数获取状态。
N
nikhilraut 已提交
860

Z
zengyawen 已提交
861
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
862 863 864

**参数:**

M
mali 已提交
865
| 参数名     | 类型                  | 必填 | 说明                  |
J
jiangminyang 已提交
866
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
867
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
868

M
mali 已提交
869 870
**错误码:**

Z
zengyawen 已提交
871
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
872 873 874 875 876 877 878

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400107                |  Can not use camera cause of conflict.               |
| 7400108                |  Camera disabled cause of security reason.                                  |
| 7400201                |  Camera service fatal error.                                  |

N
nikhilraut 已提交
879 880
**示例:**

Z
zengyawen 已提交
881
```js
J
jiangminyang 已提交
882
cameraInput.open((err) => {
N
nikhilraut 已提交
883
    if (err) {
884
        console.error(`Failed to open the camera. ${err.code}`);
N
nikhilraut 已提交
885 886
        return;
    }
J
jiangminyang 已提交
887 888
    console.log('Callback returned with camera opened.');
})
N
nikhilraut 已提交
889 890
```

J
jiangminyang 已提交
891
### open
N
nikhilraut 已提交
892

C
cold_yixiu 已提交
893
open(): Promise\<void\>
N
nikhilraut 已提交
894

J
jiangminyang 已提交
895
打开相机,通过Promise获取相机的状态。
N
nikhilraut 已提交
896

Z
zengyawen 已提交
897
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
898 899 900

**返回值:**

J
jiangminyang 已提交
901 902
| 类型           | 说明                      |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
903
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
904

M
mali 已提交
905 906
**错误码:**

Z
zengyawen 已提交
907
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
908 909 910 911 912 913 914

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400107                |  Can not use camera cause of conflict.               |
| 7400108                |  Camera disabled cause of security reason.                                  |
| 7400201                |  Camera service fatal error.                                  |

N
nikhilraut 已提交
915 916
**示例:**

Z
zengyawen 已提交
917
```js
J
jiangminyang 已提交
918 919
cameraInput.open().then(() => {
    console.log('Promise returned with camera opened.');
920 921 922
}).catch((err) => {
    console.error(`Failed to open the camera. ${err.code}`);
});
N
nikhilraut 已提交
923 924
```

J
jiangminyang 已提交
925
### close
N
nikhilraut 已提交
926

C
cold_yixiu 已提交
927
close\(callback: AsyncCallback\<void\>\): void
N
nikhilraut 已提交
928

J
jiangminyang 已提交
929
关闭相机,通过注册回调函数获取状态。
N
nikhilraut 已提交
930

Z
zengyawen 已提交
931
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
932 933 934

**参数:**

M
mali 已提交
935
| 参数名     | 类型                   | 必填 | 说明                  |
J
jiangminyang 已提交
936
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
937
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
938

M
mali 已提交
939 940
**错误码:**

Z
zengyawen 已提交
941
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
942 943 944 945 946

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                                  |

N
nikhilraut 已提交
947 948
**示例:**

Z
zengyawen 已提交
949
```js
J
jiangminyang 已提交
950 951
cameraInput.close((err) => {
    if (err) {
952
        console.error(`Failed to close the cameras. ${err.code}`);
J
jiangminyang 已提交
953 954 955 956 957 958 959 960
        return;
    }
    console.log('Callback returned with camera closed.');
})
```

### close

C
cold_yixiu 已提交
961
close(): Promise\<void\>
J
jiangminyang 已提交
962

J
jiangminyang 已提交
963
关闭相机,通过Promise获取状态。
J
jiangminyang 已提交
964 965 966 967 968 969 970

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型           | 说明                      |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
971
| Promise\<void\> | 使用Promise的方式获取结果。 |
J
jiangminyang 已提交
972

M
mali 已提交
973 974
**错误码:**

Z
zengyawen 已提交
975
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
976 977 978 979 980

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                                  |

J
jiangminyang 已提交
981 982 983 984 985
**示例:**

```js
cameraInput.close().then(() => {
    console.log('Promise returned with camera closed.');
986 987 988
}).catch((err) => {
    console.error(`Failed to close the cameras. ${err.code}`);
});
J
jiangminyang 已提交
989 990
```

991
### on('error')
J
jiangminyang 已提交
992

Z
zengyawen 已提交
993
on(type: 'error', camera:CameraDevice, callback: ErrorCallback): void
J
jiangminyang 已提交
994

995
监听CameraInput的错误事件,通过注册回调函数获取结果。
J
jiangminyang 已提交
996 997 998 999 1000

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

1001 1002
| 参数名     | 类型                              | 必填 | 说明                                          |
| -------- | -------------------------------- | --- | ------------------------------------------- |
1003
| type     | string                           | 是   | 监听事件,固定为'error',CameraInput对象创建成功可监听。相机设备出错情况下可触发该事件并返回结果,比如(设备不可用或者冲突等返回对应错误信息) |
1004
| cameraDevice   | [CameraDevice](#cameradevice)    | 是   | CameraDevice对象。 |
Z
zengyawen 已提交
1005
| callback | ErrorCallback | 是   | 回调函数,用于获取结果。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)   |
J
jiangminyang 已提交
1006 1007 1008 1009

**示例:**

```js
1010 1011 1012
cameraInput.on('error', cameraDevice, (error) => {
    console.log(`Camera input error code: ${error.code}`);
})
J
jiangminyang 已提交
1013 1014
```

1015
## FlashMode
J
jiangminyang 已提交
1016

1017
枚举,闪光灯模式。
J
jiangminyang 已提交
1018

1019
**系统能力:** SystemCapability.Multimedia.Camera.Core。
J
jiangminyang 已提交
1020

1021 1022 1023 1024 1025 1026
| 名称                    | 值   | 说明        |
| ---------------------- | ---- | ---------- |
| FLASH_MODE_CLOSE       | 0    | 闪光灯关闭。 |
| FLASH_MODE_OPEN        | 1    | 闪光灯打开。 |
| FLASH_MODE_AUTO        | 2    | 自动闪光灯。 |
| FLASH_MODE_ALWAYS_OPEN | 3    | 闪光灯常亮。 |
J
jiangminyang 已提交
1027

1028
## ExposureMode
N
nikhilraut 已提交
1029

J
jiangminyang 已提交
1030
枚举,曝光模式。
N
nikhilraut 已提交
1031

Z
zengyawen 已提交
1032
**系统能力:** SystemCapability.Multimedia.Camera.Core。
Z
zengyawen 已提交
1033

J
jiangminyang 已提交
1034 1035
| 名称                           | 值   | 说明         |
| ----------------------------- | ---- | ----------- |
C
cold_yixiu 已提交
1036 1037 1038
| EXPOSURE_MODE_LOCKED          | 0    | 锁定曝光模式。不支持曝光区域中心点设置。 |
| EXPOSURE_MODE_AUTO            | 1    | 自动曝光模式。支持曝光区域中心点设置,可以使用[setMeteringPoint](#setmeteringpoint)设置曝光区域中心点。 |
| EXPOSURE_MODE_CONTINUOUS_AUTO | 2    | 连续自动曝光。不支持曝光区域中心点设置。 |
Z
zengyawen 已提交
1039

Z
zengyawen 已提交
1040
## FocusMode
N
nikhilraut 已提交
1041

J
jiangminyang 已提交
1042
枚举,焦距模式。
N
nikhilraut 已提交
1043

Z
zengyawen 已提交
1044
**系统能力:** SystemCapability.Multimedia.Camera.Core。
Z
zengyawen 已提交
1045

J
jiangminyang 已提交
1046 1047
| 名称                        | 值   | 说明          |
| -------------------------- | ---- | ------------ |
C
cold_yixiu 已提交
1048 1049 1050 1051
| FOCUS_MODE_MANUAL          | 0    | 手动对焦。通过手动修改相机焦距来改变对焦位置,不支持对焦点设置。     |
| FOCUS_MODE_CONTINUOUS_AUTO | 1    | 连续自动对焦。不支持对焦点设置。 |
| FOCUS_MODE_AUTO            | 2    | 自动对焦。支持对焦点设置,可以使用[setFocusPoint](#setfocuspoint)设置对焦点,根据对焦点执行一次自动对焦。对焦动作完成后(无论对焦成功或是对焦失败),都进入对焦锁定。应用层需要再次调用CONTINUOUS_AUTO后才能再次进入连续自动对焦。    |
| FOCUS_MODE_LOCKED          | 3    | 对焦锁定。不支持对焦点设置。     |
N
nikhilraut 已提交
1052

J
jiangminyang 已提交
1053
## FocusState
N
nikhilraut 已提交
1054

J
jiangminyang 已提交
1055
枚举,焦距状态。
Z
zengyawen 已提交
1056

J
jiangminyang 已提交
1057
**系统能力:** SystemCapability.Multimedia.Camera.Core。
Z
zengyawen 已提交
1058

J
jiangminyang 已提交
1059 1060 1061 1062 1063
| 名称                   | 值   | 说明       |
| --------------------- | ---- | --------- |
| FOCUS_STATE_SCAN      | 0    | 触发对焦。  |
| FOCUS_STATE_FOCUSED   | 1    | 对焦成功。  |
| FOCUS_STATE_UNFOCUSED | 2    | 未完成对焦。 |
Z
zengyawen 已提交
1064

J
jiangminyang 已提交
1065
## VideoStabilizationMode
Z
zengyawen 已提交
1066

J
jiangminyang 已提交
1067
枚举,视频防抖模式。
Z
zengyawen 已提交
1068

J
jiangminyang 已提交
1069
**系统能力:** SystemCapability.Multimedia.Camera.Core。
Z
zengyawen 已提交
1070

J
jiangminyang 已提交
1071 1072 1073 1074 1075 1076 1077
| 名称       | 值   | 说明         |
| --------- | ---- | ------------ |
| OFF       | 0    | 关闭视频防抖功能。   |
| LOW       | 1    | 使用基础防抖算法。   |
| MIDDLE    | 2    | 使用防抖效果一般的防抖算法,防抖效果优于LOW类型。   |
| HIGH      | 3    | 使用防抖效果最好的防抖算法,防抖效果优于MIDDLE类型。   |
| AUTO      | 4    | 自动进行选择。   |
N
nikhilraut 已提交
1078

J
jiangminyang 已提交
1079
## CaptureSession
N
nikhilraut 已提交
1080

J
jiangminyang 已提交
1081
拍照会话类,保存一次相机运行所需要的所有资源[CameraInput](#camerainput)[CameraOutput](#cameraoutput),并向相机设备申请完成相机功能(录像,拍照)。
N
nikhilraut 已提交
1082

Z
zengyawen 已提交
1083
### beginConfig
N
nikhilraut 已提交
1084

1085
beginConfig(): void
N
nikhilraut 已提交
1086

1087
开始配置会话。
N
nikhilraut 已提交
1088

Z
zengyawen 已提交
1089
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1090

1091 1092 1093 1094
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1095
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1096

M
mali 已提交
1097 1098
**错误码:**

Z
zengyawen 已提交
1099
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1100 1101 1102 1103 1104

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400105                |  Session config locked.               |

N
nikhilraut 已提交
1105 1106
**示例:**

Z
zengyawen 已提交
1107
```js
1108 1109 1110
try {
    captureSession.beginConfig();
} catch (error) {
1111
    // 失败返回错误码error.code并处理
1112 1113
    console.log(error.code);
}
N
nikhilraut 已提交
1114 1115
```

Z
zengyawen 已提交
1116
### commitConfig
N
nikhilraut 已提交
1117

C
cold_yixiu 已提交
1118
commitConfig(callback: AsyncCallback\<void\>): void
N
nikhilraut 已提交
1119

J
jiangminyang 已提交
1120
提交配置信息,通过注册回调函数获取结果。
N
nikhilraut 已提交
1121

Z
zengyawen 已提交
1122
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1123 1124 1125

**参数:**

M
mali 已提交
1126
| 参数名     | 类型                   | 必填 | 说明                  |
J
jiangminyang 已提交
1127
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
1128
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1129

M
mali 已提交
1130 1131
**错误码:**

Z
zengyawen 已提交
1132
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1133 1134 1135 1136 1137 1138

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400102                |  Operation not allow.                                  |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1139 1140
**示例:**

Z
zengyawen 已提交
1141
```js
N
nikhilraut 已提交
1142 1143
captureSession.commitConfig((err) => {
    if (err) {
1144
        console.log('Failed to commitConfig '+ err.code);
N
nikhilraut 已提交
1145 1146 1147 1148 1149 1150
        return;
    }
    console.log('Callback invoked to indicate the commit config success.');
});
```

Z
zengyawen 已提交
1151
### commitConfig
N
nikhilraut 已提交
1152

C
cold_yixiu 已提交
1153
commitConfig(): Promise\<void\>
N
nikhilraut 已提交
1154

J
jiangminyang 已提交
1155
提交配置信息,通过Promise获取结果。
N
nikhilraut 已提交
1156

Z
zengyawen 已提交
1157
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1158 1159 1160

**返回值:**

J
jiangminyang 已提交
1161 1162
| 类型            | 说明                      |
| -------------- | ------------------------ |
C
cold_yixiu 已提交
1163
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1164

M
mali 已提交
1165 1166
**错误码:**

Z
zengyawen 已提交
1167
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1168 1169 1170 1171 1172 1173

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400102                |  Operation not allow.                                  |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1174 1175
**示例:**

Z
zengyawen 已提交
1176
```js
N
nikhilraut 已提交
1177 1178
captureSession.commitConfig().then(() => {
    console.log('Promise returned to indicate the commit config success.');
1179 1180 1181 1182
}).catch((err) => {
    // 失败返回错误码error.code并处理
    console.log('Failed to commitConfig '+ err.code);
});
N
nikhilraut 已提交
1183 1184
```

J
jiangminyang 已提交
1185
### addInput
N
nikhilraut 已提交
1186

1187
addInput(cameraInput: CameraInput): void
N
nikhilraut 已提交
1188

1189
[CameraInput](#camerainput)加入到会话。
N
nikhilraut 已提交
1190

Z
zengyawen 已提交
1191
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1192 1193 1194

**参数:**

M
mali 已提交
1195
| 参数名        | 类型                          | 必填 | 说明                     |
J
jiangminyang 已提交
1196 1197
| ----------- | --------------------------- | ---- | ------------------------ |
| cameraInput | [CameraInput](#camerainput) | 是   | 需要添加的CameraInput实例。 |
N
nikhilraut 已提交
1198

1199 1200 1201 1202
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1203
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1204

M
mali 已提交
1205 1206
**错误码:**

Z
zengyawen 已提交
1207
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1208 1209 1210 1211 1212 1213

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400102                |  Operation not allow.                                  |

N
nikhilraut 已提交
1214 1215
**示例:**

Z
zengyawen 已提交
1216
```js
1217 1218 1219
try {
    captureSession.addInput(cameraInput);
} catch (error) {
1220
    // 失败返回错误码error.code并处理
1221 1222
    console.log(error.code);
}
N
nikhilraut 已提交
1223 1224
```

J
jiangminyang 已提交
1225
### removeInput
N
nikhilraut 已提交
1226

1227
removeInput(cameraInput: CameraInput): void
N
nikhilraut 已提交
1228

1229
移除[CameraInput](#camerainput)
N
nikhilraut 已提交
1230

Z
zengyawen 已提交
1231
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1232 1233 1234

**参数:**

M
mali 已提交
1235
| 参数名        | 类型                          | 必填 | 说明                      |
J
jiangminyang 已提交
1236 1237
| ----------- | --------------------------- | ---- | ------------------------ |
| cameraInput | [CameraInput](#camerainput) | 是   | 需要移除的CameraInput实例。 |
N
nikhilraut 已提交
1238

1239 1240 1241 1242
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1243
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1244

M
mali 已提交
1245 1246
**错误码:**

Z
zengyawen 已提交
1247
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1248 1249 1250 1251 1252 1253

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400102                |  Operation not allow.                                  |

N
nikhilraut 已提交
1254 1255
**示例:**

Z
zengyawen 已提交
1256
```js
1257 1258 1259
try {
    captureSession.removeInput(cameraInput);
} catch (error) {
1260
    // 失败返回错误码error.code并处理
1261 1262
    console.log(error.code);
}
N
nikhilraut 已提交
1263 1264
```

J
jiangminyang 已提交
1265
### addOutput
N
nikhilraut 已提交
1266

C
cold_yixiu 已提交
1267
addOutput(cameraOutput: CameraOutput): void
N
nikhilraut 已提交
1268

1269
[CameraOutput](#cameraoutput)加入到会话。
N
nikhilraut 已提交
1270

Z
zengyawen 已提交
1271
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1272 1273 1274

**参数:**

M
mali 已提交
1275
| 参数名           | 类型                             | 必填 | 说明                      |
J
jiangminyang 已提交
1276
| ------------- | ------------------------------- | ---- | ------------------------ |
C
cold_yixiu 已提交
1277
| cameraOutput  | [CameraOutput](#cameraoutput)   | 是   | 需要添加的CameraOutput实例。 |
N
nikhilraut 已提交
1278

1279 1280 1281 1282
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1283
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1284

M
mali 已提交
1285 1286
**错误码:**

Z
zengyawen 已提交
1287
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1288 1289 1290 1291 1292 1293

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400102                |  Operation not allow.                                  |

N
nikhilraut 已提交
1294 1295
**示例:**

Z
zengyawen 已提交
1296
```js
1297
try {
C
cold_yixiu 已提交
1298
    captureSession.addOutput(cameraOutput);
1299
} catch (error) {
1300
    // 失败返回错误码error.code并处理
1301 1302
    console.log(error.code);
}
N
nikhilraut 已提交
1303 1304
```

Z
zengyawen 已提交
1305
### removeOutput
N
nikhilraut 已提交
1306

C
cold_yixiu 已提交
1307
removeOutput(cameraOutput: CameraOutput): void
N
nikhilraut 已提交
1308

1309
从会话中移除[CameraOutput](#cameraoutput)
N
nikhilraut 已提交
1310

Z
zengyawen 已提交
1311
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1312 1313 1314

**参数:**

M
mali 已提交
1315
| 参数名           | 类型                             | 必填 | 说明                      |
J
jiangminyang 已提交
1316
| ------------- | ------------------------------- | ---- | ------------------------ |
C
cold_yixiu 已提交
1317
| cameraOutput  | [CameraOutput](#cameraoutput)   | 是   | 需要移除的CameraOutput实例。 |
N
nikhilraut 已提交
1318

1319 1320 1321 1322
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1323
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1324

M
mali 已提交
1325 1326
**错误码:**

Z
zengyawen 已提交
1327
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1328 1329 1330 1331 1332 1333

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400102                |  Operation not allow.                                  |

N
nikhilraut 已提交
1334 1335
**示例:**

Z
zengyawen 已提交
1336
```js
1337 1338 1339
try {
    captureSession.removeOutput(previewOutput);
} catch (error) {
1340
    // 失败返回错误码error.code并处理
1341 1342
    console.log(error.code);
}
N
nikhilraut 已提交
1343 1344
```

J
jiangminyang 已提交
1345
### start
N
nikhilraut 已提交
1346

C
cold_yixiu 已提交
1347
start\(callback: AsyncCallback\<void\>\): void
N
nikhilraut 已提交
1348

J
jiangminyang 已提交
1349
开始会话工作,通过注册回调函数获取结果。
N
nikhilraut 已提交
1350

Z
zengyawen 已提交
1351
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1352 1353 1354

**参数:**

M
mali 已提交
1355
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1356
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
1357
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1358

M
mali 已提交
1359 1360
**错误码:**

Z
zengyawen 已提交
1361
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1362 1363 1364 1365 1366 1367

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1368 1369
**示例:**

Z
zengyawen 已提交
1370
```js
J
jiangminyang 已提交
1371
captureSession.start((err) => {
N
nikhilraut 已提交
1372
    if (err) {
1373
        console.error(`Failed to start the session ${err.code}`);
N
nikhilraut 已提交
1374 1375
        return;
    }
J
jiangminyang 已提交
1376
    console.log('Callback invoked to indicate the session start success.');
N
nikhilraut 已提交
1377 1378 1379
});
```

J
jiangminyang 已提交
1380
### start
N
nikhilraut 已提交
1381

C
cold_yixiu 已提交
1382
start\(\): Promise\<void\>
N
nikhilraut 已提交
1383

J
jiangminyang 已提交
1384
开始会话工作,通过Promise获取结果。
N
nikhilraut 已提交
1385

Z
zengyawen 已提交
1386
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1387 1388 1389

**返回值:**

J
jiangminyang 已提交
1390 1391
| 类型            | 说明                     |
| -------------- | ------------------------ |
C
cold_yixiu 已提交
1392
| Promise\<void\> | 使用Promise的方式获取结果。 |
N
nikhilraut 已提交
1393

M
mali 已提交
1394 1395
**错误码:**

Z
zengyawen 已提交
1396
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1397 1398 1399 1400 1401 1402

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1403 1404
**示例:**

Z
zengyawen 已提交
1405
```js
J
jiangminyang 已提交
1406 1407
captureSession.start().then(() => {
    console.log('Promise returned to indicate the session start success.');
1408 1409 1410
}).catch((err) => {
    console.error(`Failed to start the session ${err.code}`);
});
N
nikhilraut 已提交
1411 1412
```

J
jiangminyang 已提交
1413
### stop
N
nikhilraut 已提交
1414

C
cold_yixiu 已提交
1415
stop\(callback: AsyncCallback\<void\>\): void
N
nikhilraut 已提交
1416

J
jiangminyang 已提交
1417
停止会话工作,通过注册回调函数获取结果。
N
nikhilraut 已提交
1418

Z
zengyawen 已提交
1419
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1420 1421 1422

**参数:**

M
mali 已提交
1423
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1424
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
1425
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1426

M
mali 已提交
1427 1428
**错误码:**

Z
zengyawen 已提交
1429
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1430 1431 1432 1433 1434

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1435 1436
**示例:**

Z
zengyawen 已提交
1437
```js
J
jiangminyang 已提交
1438
captureSession.stop((err) => {
N
nikhilraut 已提交
1439
    if (err) {
1440
        console.error(`Failed to stop the session ${err.code}`);
N
nikhilraut 已提交
1441 1442
        return;
    }
J
jiangminyang 已提交
1443
    console.log('Callback invoked to indicate the session stop success.');
N
nikhilraut 已提交
1444 1445 1446
});
```

J
jiangminyang 已提交
1447
### stop
N
nikhilraut 已提交
1448

C
cold_yixiu 已提交
1449
stop(): Promise\<void\>
N
nikhilraut 已提交
1450

J
jiangminyang 已提交
1451
停止会话工作,通过Promise获取结果。
N
nikhilraut 已提交
1452

Z
zengyawen 已提交
1453
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1454 1455 1456

**返回值:**

J
jiangminyang 已提交
1457 1458
| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
1459
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1460

M
mali 已提交
1461 1462
**错误码:**

Z
zengyawen 已提交
1463
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1464 1465 1466 1467 1468

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1469 1470
**示例:**

Z
zengyawen 已提交
1471
```js
J
jiangminyang 已提交
1472 1473
captureSession.stop().then(() => {
    console.log('Promise returned to indicate the session stop success.');
1474 1475 1476
}).catch((err) => {
    console.error(`Failed to stop the session ${err.code}`);
});
N
nikhilraut 已提交
1477 1478
```

Z
zengyawen 已提交
1479
### release
N
nikhilraut 已提交
1480

C
cold_yixiu 已提交
1481
release\(callback: AsyncCallback\<void\>\): void
N
nikhilraut 已提交
1482

J
jiangminyang 已提交
1483
释放会话资源,通过注册回调函数获取结果。
N
nikhilraut 已提交
1484

Z
zengyawen 已提交
1485
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1486 1487

**参数:**
Z
zengyawen 已提交
1488

M
mali 已提交
1489
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1490
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
1491
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1492

M
mali 已提交
1493 1494
**错误码:**

Z
zengyawen 已提交
1495
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1496 1497 1498 1499 1500

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1501 1502
**示例:**

Z
zengyawen 已提交
1503
```js
N
nikhilraut 已提交
1504 1505
captureSession.release((err) => {
    if (err) {
1506
        console.error(`Failed to release the CaptureSession instance ${err.code}`);
N
nikhilraut 已提交
1507 1508 1509 1510 1511 1512
        return;
    }
    console.log('Callback invoked to indicate that the CaptureSession instance is released successfully.');
});
```

Z
zengyawen 已提交
1513
### release
N
nikhilraut 已提交
1514

C
cold_yixiu 已提交
1515
release(): Promise\<void\>
N
nikhilraut 已提交
1516

J
jiangminyang 已提交
1517
释放会话资源,通过Promise获取结果。
N
nikhilraut 已提交
1518

Z
zengyawen 已提交
1519
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1520 1521 1522

**返回值:**

J
jiangminyang 已提交
1523 1524
| 类型            | 说明                     |
| -------------- | ------------------------ |
C
cold_yixiu 已提交
1525
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1526

M
mali 已提交
1527 1528
**错误码:**

Z
zengyawen 已提交
1529
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1530 1531 1532 1533 1534

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
1535 1536
**示例:**

Z
zengyawen 已提交
1537
```js
N
nikhilraut 已提交
1538 1539
captureSession.release().then(() => {
    console.log('Promise returned to indicate that the CaptureSession instance is released successfully.');
1540 1541 1542
}).catch((err) => {
    console.error(`Failed to release the CaptureSession instance ${err.code}`);
});
N
nikhilraut 已提交
1543 1544
```

J
jiangminyang 已提交
1545
### hasFlash
N
nikhilraut 已提交
1546

1547
hasFlash(): boolean
N
nikhilraut 已提交
1548

J
jiangminyang 已提交
1549
检测是否有闪光灯,通过注册回调函数获取结果。
N
nikhilraut 已提交
1550

Z
zengyawen 已提交
1551
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1552

J
jiangminyang 已提交
1553
**返回值:**
Z
zengyawen 已提交
1554

1555 1556
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1557
| boolean    | 返回true表示设备支持闪光灯。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
Z
zengyawen 已提交
1558

M
mali 已提交
1559 1560
**错误码:**

Z
zengyawen 已提交
1561
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1562 1563 1564 1565 1566

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1567
**示例:**
Z
zengyawen 已提交
1568

J
jiangminyang 已提交
1569
```js
1570 1571 1572
try {
    let status = captureSession.hasFlash();
} catch (error) {
1573
    // 失败返回错误码error.code并处理
1574 1575
    console.log(error.code);
}
J
jiangminyang 已提交
1576
```
N
nikhilraut 已提交
1577

J
jiangminyang 已提交
1578
### isFlashModeSupported
Z
zengyawen 已提交
1579

1580
isFlashModeSupported(flashMode: FlashMode): boolean
N
nikhilraut 已提交
1581

1582
检测闪光灯模式是否支持。
N
nikhilraut 已提交
1583

Z
zengyawen 已提交
1584
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1585 1586 1587

**参数:**

M
mali 已提交
1588
| 参数名       | 类型                     | 必填 | 说明                               |
J
jiangminyang 已提交
1589 1590
| --------- | ----------------------- | ---- | --------------------------------- |
| flashMode | [FlashMode](#flashmode) | 是   | 指定闪光灯模式。                     |
N
nikhilraut 已提交
1591 1592 1593

**返回值:**

1594 1595
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1596
| boolean    | 返回true表示支持该闪光灯模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1597

M
mali 已提交
1598 1599
**错误码:**

Z
zengyawen 已提交
1600
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1601 1602 1603 1604 1605

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

N
nikhilraut 已提交
1606 1607
**示例:**

Z
zengyawen 已提交
1608
```js
1609 1610 1611
try {
    let status = captureSession.isFlashModeSupported(camera.FlashMode.FLASH_MODE_AUTO);
} catch (error) {
1612
    // 失败返回错误码error.code并处理
1613 1614
    console.log(error.code);
}
N
nikhilraut 已提交
1615 1616
```

J
jiangminyang 已提交
1617
### setFlashMode
N
nikhilraut 已提交
1618

1619
setFlashMode(flashMode: FlashMode): void
N
nikhilraut 已提交
1620

1621
设置闪光灯模式。
N
nikhilraut 已提交
1622

J
jiangminyang 已提交
1623
进行设置之前,需要先检查:
N
nikhilraut 已提交
1624

J
jiangminyang 已提交
1625 1626
1. 设备是否支持闪光灯,可使用方法[hasFlash](#hasflash)
2. 设备是否支持指定的闪光灯模式,可使用方法[isFlashModeSupported](#isflashmodesupported)
N
nikhilraut 已提交
1627

Z
zengyawen 已提交
1628
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1629 1630 1631

**参数:**

M
mali 已提交
1632
| 参数名       | 类型                     | 必填 | 说明                  |
J
jiangminyang 已提交
1633
| --------- | ----------------------- | ---- | --------------------- |
1634 1635 1636 1637 1638 1639
| flashMode | [FlashMode](#flashmode) | 是   | 指定闪光灯模式。       |

**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1640
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1641

M
mali 已提交
1642 1643
**错误码:**

Z
zengyawen 已提交
1644
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1645 1646 1647 1648 1649

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

N
nikhilraut 已提交
1650 1651
**示例:**

Z
zengyawen 已提交
1652
```js
1653 1654 1655
try {
    captureSession.setFlashMode(camera.FlashMode.FLASH_MODE_AUTO);
} catch (error) {
1656
    // 失败返回错误码error.code并处理
1657 1658
    console.log(error.code);
}
N
nikhilraut 已提交
1659 1660
```

1661
### getFlashMode
J
jiangminyang 已提交
1662

1663
getFlashMode(): FlashMode
J
jiangminyang 已提交
1664

1665
获取当前设备的闪光灯模式。
N
nikhilraut 已提交
1666

Z
zengyawen 已提交
1667
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1668 1669 1670

**返回值:**

1671 1672
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1673
| [FlashMode](#flashmode)    | 获取当前设备的闪光灯模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
1674

M
mali 已提交
1675 1676
**错误码:**

Z
zengyawen 已提交
1677
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1678 1679 1680 1681 1682

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

N
nikhilraut 已提交
1683 1684
**示例:**

Z
zengyawen 已提交
1685
```js
1686 1687 1688
try {
    let flashMode = captureSession.getFlashMode();
} catch (error) {
1689
    // 失败返回错误码error.code并处理
1690 1691
    console.log(error.code);
}
N
nikhilraut 已提交
1692 1693
```

J
jiangminyang 已提交
1694
### isExposureModeSupported
J
jiangminyang 已提交
1695

1696
isExposureModeSupported(aeMode: ExposureMode): boolean;
J
jiangminyang 已提交
1697

1698
检测曝光模式是否支持。
Z
zengyawen 已提交
1699 1700 1701

**系统能力:** SystemCapability.Multimedia.Camera.Core

J
jiangminyang 已提交
1702
**参数:**
J
jiangminyang 已提交
1703

M
mali 已提交
1704
| 参数名      | 类型                           | 必填  | 说明                           |
J
jiangminyang 已提交
1705 1706
| -------- | -------------------------------| ---- | ----------------------------- |
| aeMode   | [ExposureMode](#exposuremode)  | 是   | 曝光模式。                      |
Z
zengyawen 已提交
1707

J
jiangminyang 已提交
1708
**返回值:**
Z
zengyawen 已提交
1709

1710 1711
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1712
| boolean    | 获取是否支持曝光模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
1713

M
mali 已提交
1714 1715
**错误码:**

Z
zengyawen 已提交
1716
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1717 1718 1719 1720 1721

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1722 1723 1724
**示例:**

```js
1725 1726 1727
try {
    let isSupported = captureSession.isExposureModeSupported(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
} catch (error) {
1728
    // 失败返回错误码error.code并处理
1729 1730
    console.log(error.code);
}
J
jiangminyang 已提交
1731 1732
```

J
jiangminyang 已提交
1733
### getExposureMode
J
jiangminyang 已提交
1734

1735
getExposureMode(): ExposureMode
J
jiangminyang 已提交
1736

1737
获取当前曝光模式。
Z
zengyawen 已提交
1738

J
jiangminyang 已提交
1739 1740 1741 1742
**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

1743 1744
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1745
| [ExposureMode](#exposuremode)    | 获取当前曝光模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
1746

M
mali 已提交
1747 1748
**错误码:**

Z
zengyawen 已提交
1749
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1750 1751 1752 1753 1754

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1755 1756 1757
**示例:**

```js
1758 1759 1760
try {
    let exposureMode = captureSession.getExposureMode();
} catch (error) {
1761
    // 失败返回错误码error.code并处理
1762 1763
    console.log(error.code);
}
J
jiangminyang 已提交
1764
```
N
nikhilraut 已提交
1765

J
jiangminyang 已提交
1766
### setExposureMode
N
nikhilraut 已提交
1767

1768
setExposureMode(aeMode: ExposureMode): void
N
nikhilraut 已提交
1769

1770
设置曝光模式。
N
nikhilraut 已提交
1771

J
jiangminyang 已提交
1772
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1773

J
jiangminyang 已提交
1774
**参数:**
N
nikhilraut 已提交
1775

M
mali 已提交
1776
| 参数名      | 类型                            | 必填 | 说明                    |
J
jiangminyang 已提交
1777 1778
| -------- | -------------------------------| ---- | ----------------------- |
| aeMode   | [ExposureMode](#exposuremode)  | 是   | 曝光模式。                |
J
jiangminyang 已提交
1779

1780 1781 1782 1783
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1784
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1785

M
mali 已提交
1786 1787
**错误码:**

Z
zengyawen 已提交
1788
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1789 1790 1791 1792 1793

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1794 1795 1796
**示例:**

```js
1797 1798 1799
try {
    captureSession.setExposureMode(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
} catch (error) {
1800
    // 失败返回错误码error.code并处理
1801 1802
    console.log(error.code);
}
J
jiangminyang 已提交
1803 1804
```

J
jiangminyang 已提交
1805
### getMeteringPoint
J
jiangminyang 已提交
1806

1807
getMeteringPoint(): Point
J
jiangminyang 已提交
1808

1809
查询曝光区域中心点。(该接口目前为预留,将在3.2版本开放)
J
jiangminyang 已提交
1810 1811

**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1812

J
jiangminyang 已提交
1813
**返回值:**
N
nikhilraut 已提交
1814

1815 1816
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1817
| [Point](#point)    | 获取当前曝光点。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
1818

M
mali 已提交
1819 1820
**错误码:**

Z
zengyawen 已提交
1821
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1822 1823 1824 1825 1826

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1827 1828 1829
**示例:**

```js
1830 1831 1832
try {
    let exposurePoint = captureSession.getMeteringPoint();
} catch (error) {
1833
    // 失败返回错误码error.code并处理
1834 1835
    console.log(error.code);
}
J
jiangminyang 已提交
1836 1837
```

J
jiangminyang 已提交
1838
### setMeteringPoint
J
jiangminyang 已提交
1839

1840
setMeteringPoint(point: Point): void
J
jiangminyang 已提交
1841

C
cold_yixiu 已提交
1842 1843 1844 1845
设置曝光区域中心点,曝光点应在0-1坐标系内,该坐标系左上角为{0,0},右下角为{1,1}。
此坐标系是以设备充电口在右侧时的横向设备方向为基准的,例如应用的预览界面布局以
设备充电口在下侧时的竖向方向为基准,布局宽高为{w,h},且触碰点为{x,y},
则转换后的坐标点为{y/h,1-x/w}。
J
jiangminyang 已提交
1846 1847 1848

**系统能力:** SystemCapability.Multimedia.Camera.Core

J
jiangminyang 已提交
1849 1850
**参数:**

M
mali 已提交
1851
| 参数名           | 类型                            | 必填 | 说明                 |
J
jiangminyang 已提交
1852
| ------------- | -------------------------------| ---- | ------------------- |
M
review  
mali 已提交
1853
| exposurePoint | [Point](#point)                | 是   | 曝光点,x,y设置范围应在[0,1]之内,超过范围,如果小于0设置0,大于1设置1。             |
J
jiangminyang 已提交
1854

1855 1856 1857 1858
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
1859
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
1860

M
mali 已提交
1861 1862
**错误码:**

Z
zengyawen 已提交
1863
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1864 1865 1866 1867 1868

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1869 1870 1871
**示例:**

```js
1872 1873 1874 1875
const exposurePoint = {x: 1, y: 1};
try {
    captureSession.setMeteringPoint(exposurePoint);
} catch (error) {
1876
    // 失败返回错误码error.code并处理
1877 1878
    console.log(error.code);
}
J
jiangminyang 已提交
1879 1880 1881 1882
```

### getExposureBiasRange

C
cold_yixiu 已提交
1883
getExposureBiasRange(): Array\<number\>
J
jiangminyang 已提交
1884

1885
查询曝光补偿范围。
J
jiangminyang 已提交
1886 1887 1888 1889 1890

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

1891 1892
| 类型        | 说明                          |
| ---------- | ----------------------------- |
C
cold_yixiu 已提交
1893
| Array\<number\>   | 获取补偿范围的数组。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
1894

M
mali 已提交
1895 1896
**错误码:**

Z
zengyawen 已提交
1897
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1898 1899 1900 1901 1902

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1903 1904 1905
**示例:**

```js
1906 1907 1908
try {
    let biasRangeArray = captureSession.getExposureBiasRange();
} catch (error) {
1909
    // 失败返回错误码error.code并处理
1910 1911
    console.log(error.code);
}
J
jiangminyang 已提交
1912 1913 1914 1915
```

### setExposureBias

1916
setExposureBias(exposureBias: number): void
J
jiangminyang 已提交
1917

C
cold_yixiu 已提交
1918
设置曝光补偿,曝光补偿值(EV)。
J
jiangminyang 已提交
1919 1920 1921 1922 1923 1924 1925

进行设置之前,建议先通过方法[getExposureBiasRange](#getexposurebiasrange)查询支持的范围。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
1926
| 参数名     | 类型                            | 必填 | 说明                 |
J
jiangminyang 已提交
1927
| -------- | -------------------------------| ---- | ------------------- |
C
cold 已提交
1928
| exposureBias   | number                   | 是   | 曝光补偿,getExposureBiasRange查询支持的范围,如果设置超过支持范围的值,自动匹配到就近临界点。曝光补偿存在步长,如步长为0.5。则设置1.2时,获取到实际生效曝光补偿为1.0。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode), |
J
jiangminyang 已提交
1929

M
mali 已提交
1930 1931
**错误码:**

Z
zengyawen 已提交
1932
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1933 1934 1935 1936 1937

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1938 1939 1940
**示例:**

```js
M
mali 已提交
1941
let exposureBias = biasRangeArray[0];
1942 1943 1944
try {
    captureSession.setExposureBias(exposureBias);
} catch (error) {
1945
    // 失败返回错误码error.code并处理
1946 1947
    console.log(error.code);
}
J
jiangminyang 已提交
1948 1949 1950 1951
```

### getExposureValue

1952
getExposureValue(): number
J
jiangminyang 已提交
1953

1954
查询当前曝光值。
J
jiangminyang 已提交
1955 1956 1957 1958 1959

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

1960 1961
| 类型        | 说明                          |
| ---------- | ----------------------------- |
C
cold 已提交
1962
| number    | 获取曝光值。曝光补偿存在步长,如步长为0.5。则设置1.2时,获取到实际生效曝光补偿为1.0。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
1963

M
mali 已提交
1964 1965
**错误码:**

Z
zengyawen 已提交
1966
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
1967 1968 1969 1970 1971

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
1972 1973 1974
**示例:**

```js
1975 1976 1977
try {
    let exposureValue = captureSession.getExposureValue();
} catch (error) {
1978
    // 失败返回错误码error.code并处理
1979 1980
    console.log(error.code);
}
J
jiangminyang 已提交
1981 1982 1983 1984
```

### isFocusModeSupported

1985
isFocusModeSupported(afMode: FocusMode): boolean
J
jiangminyang 已提交
1986

1987
检测对焦模式是否支持。
J
jiangminyang 已提交
1988 1989 1990 1991 1992

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
1993
| 参数名      | 类型                     | 必填 | 说明                              |
J
jiangminyang 已提交
1994 1995 1996 1997 1998
| -------- | ----------------------- | ---- | -------------------------------- |
| afMode   | [FocusMode](#focusmode) | 是   | 指定的焦距模式。                    |

**返回值:**

1999 2000
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2001
| boolean    | 返回true表示支持该焦距模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2002

M
mali 已提交
2003 2004
**错误码:**

Z
zengyawen 已提交
2005
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2006 2007 2008 2009 2010

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2011 2012 2013
**示例:**

```js
2014 2015 2016
try {
    let status = captureSession.isFocusModeSupported(camera.FocusMode.FOCUS_MODE_AUTO);
} catch (error) {
2017
    // 失败返回错误码error.code并处理
2018 2019
    console.log(error.code);
}
J
jiangminyang 已提交
2020 2021 2022 2023
```

### setFocusMode

2024
setFocusMode(afMode: FocusMode): void
J
jiangminyang 已提交
2025

2026
设置对焦模式。
J
jiangminyang 已提交
2027

J
jiangminyang 已提交
2028
进行设置之前,需要先检查设备是否支持指定的焦距模式,可使用方法[isFocusModeSupported](#isfocusmodesupported)
J
jiangminyang 已提交
2029 2030 2031 2032 2033

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2034
| 参数名      | 类型                     | 必填 | 说明                 |
J
jiangminyang 已提交
2035 2036 2037
| -------- | ----------------------- | ---- | ------------------- |
| afMode   | [FocusMode](#focusmode) | 是   | 指定的焦距模式。       |

2038 2039 2040 2041
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
2042
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
2043

M
mali 已提交
2044 2045
**错误码:**

Z
zengyawen 已提交
2046
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2047 2048 2049 2050 2051

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2052 2053 2054
**示例:**

```js
2055 2056 2057
try {
    captureSession.setFocusMode(camera.FocusMode.FOCUS_MODE_AUTO);
} catch (error) {
2058
    // 失败返回错误码error.code并处理
2059 2060
    console.log(error.code);
}
J
jiangminyang 已提交
2061 2062 2063 2064
```

### getFocusMode

2065
getFocusMode(): FocusMode
J
jiangminyang 已提交
2066

2067
获取当前的对焦模式。
J
jiangminyang 已提交
2068 2069 2070 2071 2072

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

2073 2074
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2075
| [FocusMode](#focusmode)   | 获取当前设备的焦距模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2076

M
mali 已提交
2077 2078
**错误码:**

Z
zengyawen 已提交
2079
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2080 2081 2082 2083 2084

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2085 2086 2087
**示例:**

```js
2088 2089 2090
try {
    let afMode = captureSession.getFocusMode();
} catch (error) {
2091
    // 失败返回错误码error.code并处理
2092 2093
    console.log(error.code);
}
J
jiangminyang 已提交
2094 2095 2096 2097
```

### setFocusPoint

2098
setFocusPoint(point: Point): void
J
jiangminyang 已提交
2099

C
cold_yixiu 已提交
2100 2101 2102 2103
设置焦点,焦点应在0-1坐标系内,该坐标系左上角为{0,0},右下角为{1,1}。
此坐标系是以设备充电口在右侧时的横向设备方向为基准的,例如应用的预览界面布局以
设备充电口在下侧时的竖向方向为基准,布局宽高为{w,h},且触碰点为{x,y},
则转换后的坐标点为{y/h,1-x/w}。
J
jiangminyang 已提交
2104 2105 2106 2107 2108

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2109
| 参数名      | 类型                     | 必填 | 说明                 |
J
jiangminyang 已提交
2110
| -------- | ----------------------- | ---- | ------------------- |
M
review  
mali 已提交
2111
| Point1    | [Point](#point)         | 是   | 焦点。x,y设置范围应在[0,1]之内,超过范围,如果小于0设置0,大于1设置1。   |
J
jiangminyang 已提交
2112

2113 2114 2115 2116
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
2117
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
2118

M
mali 已提交
2119 2120
**错误码:**

Z
zengyawen 已提交
2121
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2122 2123 2124 2125 2126

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2127 2128 2129 2130
**示例:**

```js
const Point1 = {x: 1, y: 1};
2131 2132 2133
try {
    captureSession.setFocusPoint(Point1);
} catch (error) {
2134
    // 失败返回错误码error.code并处理
2135 2136
    console.log(error.code);
}
J
jiangminyang 已提交
2137 2138 2139 2140
```

### getFocusPoint

2141
getFocusPoint(): Point
J
jiangminyang 已提交
2142

2143
查询焦点。
J
jiangminyang 已提交
2144 2145 2146 2147 2148

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

2149 2150
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2151
| [Point](#point)    | 用于获取当前焦点。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2152

M
mali 已提交
2153 2154
**错误码:**

Z
zengyawen 已提交
2155
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2156 2157 2158 2159 2160

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2161 2162 2163
**示例:**

```js
2164 2165 2166
try {
    let point = captureSession.getFocusPoint();
} catch (error) {
2167
    // 失败返回错误码error.code并处理
2168 2169
    console.log(error.code);
}
J
jiangminyang 已提交
2170 2171 2172 2173
```

### getFocalLength

2174
getFocalLength(): number
J
jiangminyang 已提交
2175

2176
查询焦距值。
J
jiangminyang 已提交
2177 2178 2179 2180 2181

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

2182 2183
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2184
| number    | 用于获取当前焦距。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2185

M
mali 已提交
2186 2187
**错误码:**

Z
zengyawen 已提交
2188
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2189 2190 2191 2192 2193

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2194 2195 2196
**示例:**

```js
2197 2198 2199
try {
    let focalLength = captureSession.getFocalLength();
} catch (error) {
2200
    // 失败返回错误码error.code并处理
2201 2202
    console.log(error.code);
}
J
jiangminyang 已提交
2203 2204 2205 2206
```

### getZoomRatioRange

C
cold_yixiu 已提交
2207
getZoomRatioRange(): Array\<number\>
J
jiangminyang 已提交
2208

2209
获取支持的变焦范围。
J
jiangminyang 已提交
2210 2211 2212

**系统能力:** SystemCapability.Multimedia.Camera.Core

2213
**返回值:**
J
jiangminyang 已提交
2214

2215 2216
| 类型        | 说明                          |
| ---------- | ----------------------------- |
C
cold_yixiu 已提交
2217
| Array\<number\>   | 用于获取可变焦距比范围,返回的数组包括其最小值和最大值。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2218

M
mali 已提交
2219 2220
**错误码:**

Z
zengyawen 已提交
2221
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2222 2223 2224 2225 2226

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2227 2228 2229
**示例:**

```js
2230 2231 2232
try {
    let zoomRatioRange = captureSession.getZoomRatioRange();
} catch (error) {
2233
    // 失败返回错误码error.code并处理
2234 2235
    console.log(error.code);
}
J
jiangminyang 已提交
2236 2237
```

2238
### setZoomRatio
J
jiangminyang 已提交
2239

2240
setZoomRatio(zoomRatio: number): void
J
jiangminyang 已提交
2241

C
cold_yixiu 已提交
2242
设置变焦比,变焦精度最高为小数点后两位,超过变焦精度的变焦值系统无法响应。
J
jiangminyang 已提交
2243 2244 2245

**系统能力:** SystemCapability.Multimedia.Camera.Core

2246
**参数:**
J
jiangminyang 已提交
2247

2248 2249
| 参数名       | 类型                  | 必填 | 说明                 |
| --------- | -------------------- | ---- | ------------------- |
M
mali 已提交
2250
| zoomRatio | number               | 是   | 可变焦距比,通过getZoomRatioRange获取支持的变焦范围,如果设置超过支持范围的值,自动匹配到就近临界点。 |
J
jiangminyang 已提交
2251

2252 2253 2254 2255
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
2256
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
2257

M
mali 已提交
2258 2259
**错误码:**

Z
zengyawen 已提交
2260
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2261 2262 2263 2264 2265

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2266 2267 2268
**示例:**

```js
2269 2270 2271 2272
let zoomRatio = zoomRatioRange[0];
try {
    captureSession.setZoomRatio(zoomRatio);
} catch (error) {
2273
    // 失败返回错误码error.code并处理
2274 2275
    console.log(error.code);
}
J
jiangminyang 已提交
2276 2277
```

2278
### getZoomRatio
J
jiangminyang 已提交
2279

2280
getZoomRatio(): number
J
jiangminyang 已提交
2281

2282
获取当前的变焦比。
J
jiangminyang 已提交
2283 2284 2285

**系统能力:** SystemCapability.Multimedia.Camera.Core

2286
**返回值:**
J
jiangminyang 已提交
2287

2288 2289
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2290
| number    | 获取当前的变焦比结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2291

M
mali 已提交
2292 2293
**错误码:**

Z
zengyawen 已提交
2294
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2295 2296 2297 2298 2299

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2300 2301 2302
**示例:**

```js
2303 2304 2305
try {
    let zoomRatio = captureSession.getZoomRatio();
} catch (error) {
2306
    // 失败返回错误码error.code并处理
2307 2308
    console.log(error.code);
}
J
jiangminyang 已提交
2309 2310
```

2311
### isVideoStabilizationModeSupported
J
jiangminyang 已提交
2312

2313
isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): boolean
J
jiangminyang 已提交
2314

2315
查询是否支持指定的视频防抖模式。
J
jiangminyang 已提交
2316 2317 2318

**系统能力:** SystemCapability.Multimedia.Camera.Core

2319 2320 2321 2322 2323 2324
**参数:**

| 参数名      | 类型                                              | 必填 | 说明                             |
| -------- | ------------------------------------------------- | ---- | ------------------------------ |
| vsMode   | [VideoStabilizationMode](#videostabilizationmode) | 是   | 视频防抖模式。                    |

J
jiangminyang 已提交
2325 2326
**返回值:**

2327 2328
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2329
| boolean    | 返回视频防抖模式是否支持。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2330

M
mali 已提交
2331 2332
**错误码:**

Z
zengyawen 已提交
2333
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2334 2335 2336 2337 2338

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2339 2340 2341
**示例:**

```js
2342 2343 2344
try {
    let isSupported = captureSession.isVideoStabilizationModeSupported(camera.VideoStabilizationMode.OFF);
} catch (error) {
2345
    // 失败返回错误码error.code并处理
2346 2347
    console.log(error.code);
}
J
jiangminyang 已提交
2348 2349
```

2350
### getActiveVideoStabilizationMode
J
jiangminyang 已提交
2351

2352
getActiveVideoStabilizationMode(): VideoStabilizationMode
J
jiangminyang 已提交
2353

2354
查询当前正在使用的视频防抖模式。
J
jiangminyang 已提交
2355 2356 2357

**系统能力:** SystemCapability.Multimedia.Camera.Core

2358
**返回值:**
J
jiangminyang 已提交
2359

2360 2361
| 类型        | 说明                          |
| ---------- | ----------------------------- |
2362
| VideoStabilizationMode    | 视频防抖是否正在使用。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2363

M
mali 已提交
2364 2365
**错误码:**

Z
zengyawen 已提交
2366
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2367 2368 2369 2370 2371

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2372 2373 2374
**示例:**

```js
2375 2376 2377
try {
    let vsMode = captureSession.getActiveVideoStabilizationMode();
} catch (error) {
2378
    // 失败返回错误码error.code并处理
2379 2380
    console.log(error.code);
}
J
jiangminyang 已提交
2381 2382 2383 2384
```

### setVideoStabilizationMode

2385
setVideoStabilizationMode(mode: VideoStabilizationMode): void
J
jiangminyang 已提交
2386

2387
设置视频防抖模式。
J
jiangminyang 已提交
2388 2389 2390 2391 2392

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2393
| 参数名      | 类型                                              | 必填 | 说明                    |
J
jiangminyang 已提交
2394 2395 2396
| -------- | ------------------------------------------------- | ---- | --------------------- |
| mode     | [VideoStabilizationMode](#videostabilizationmode) | 是   | 需要设置的视频防抖模式。   |

2397 2398 2399 2400
**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
2401
| [CameraErrorCode](#cameraerrorcode)    | 接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
2402

M
mali 已提交
2403 2404
**错误码:**

Z
zengyawen 已提交
2405
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2406 2407 2408 2409 2410

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2411 2412 2413
**示例:**

```js
2414 2415 2416
try {
    captureSession.setVideoStabilizationMode(camera.VideoStabilizationMode.OFF);
} catch (error) {
2417
    // 失败返回错误码error.code并处理
2418 2419
    console.log(error.code);
}
J
jiangminyang 已提交
2420 2421 2422 2423
```

### on('focusStateChange')

C
cold_yixiu 已提交
2424
on(type: 'focusStateChange', callback: AsyncCallback\<FocusState\>): void
J
jiangminyang 已提交
2425

2426
监听相机聚焦的状态变化,通过注册回调函数获取结果。
J
jiangminyang 已提交
2427 2428 2429 2430 2431

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2432
| 参数名     | 类型                                      | 必填 | 说明                       |
J
jiangminyang 已提交
2433
| -------- | ----------------------------------------- | ---- | ------------------------ |
2434
| type     | string                                    | 是   | 监听事件,固定为'focusStateChange',session 创建成功可监听。仅当自动对焦模式时,且相机对焦状态发生改变时可触发该事件 |
C
cold_yixiu 已提交
2435
| callback | AsyncCallback\<[FocusState](#focusstate)\> | 是   | 回调函数,用于获取当前对焦状态。  |
J
jiangminyang 已提交
2436 2437 2438 2439

**示例:**

```js
M
mali 已提交
2440
captureSession.on('focusStateChange', (err, focusState) => {
J
jiangminyang 已提交
2441 2442 2443 2444 2445 2446
    console.log(`Focus state  : ${focusState}`);
})
```

### on('error')

Z
zengyawen 已提交
2447
on(type: 'error', callback: ErrorCallback): void
J
jiangminyang 已提交
2448 2449 2450 2451 2452 2453 2454

监听拍照会话的错误事件,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2455
| 参数名     | 类型                                                          | 必填 | 说明                           |
J
jiangminyang 已提交
2456
| -------- | ----------------------------------------------------------- | ---- | ------------------------------ |
2457
| type     | string                                                      | 是   | 监听事件,固定为'error',session创建成功之后可监听该接口。session调用相关接口出现错误时会触发该事件,比如调用(beginConfig(),commitConfig(),addInput)等接口发生错误时返回错误信息。 |
Z
zengyawen 已提交
2458
| callback | ErrorCallback| 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)        |
J
jiangminyang 已提交
2459 2460 2461 2462

**示例:**

```js
2463 2464
captureSession.on('error', (error) => {
    console.log(`Capture session error code: ${error.code}`);
J
jiangminyang 已提交
2465 2466 2467 2468 2469 2470 2471
})
```

## CameraOutput

会话中[CaptureSession](#capturesession)使用的输出信息,output的基类。

M
mali 已提交
2472
## PreviewOutput
J
jiangminyang 已提交
2473

M
mali 已提交
2474
预览输出类。继承[CameraOutput](#cameraoutput)
J
jiangminyang 已提交
2475

M
mali 已提交
2476 2477
### start

C
cold_yixiu 已提交
2478
start(callback: AsyncCallback\<void\>): void
M
mali 已提交
2479 2480

开始输出预览流,通过注册回调函数获取结果。
J
jiangminyang 已提交
2481 2482 2483 2484 2485

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2486
| 参数名      | 类型                  | 必填 | 说明                 |
M
mali 已提交
2487
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
2488
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2489

M
mali 已提交
2490 2491
**错误码:**

Z
zengyawen 已提交
2492
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2493 2494 2495 2496 2497

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2498 2499 2500
**示例:**

```js
M
mali 已提交
2501
previewOutput.start((err) => {
J
jiangminyang 已提交
2502
    if (err) {
2503
        console.error(`Failed to start the previewOutput. ${err.code}`);
J
jiangminyang 已提交
2504 2505
        return;
    }
M
mali 已提交
2506 2507
    console.log('Callback returned with previewOutput started.');
})
J
jiangminyang 已提交
2508 2509
```

M
mali 已提交
2510
### start
J
jiangminyang 已提交
2511

C
cold_yixiu 已提交
2512
start(): Promise\<void\>
J
jiangminyang 已提交
2513

M
mali 已提交
2514
开始输出预览流,通过Promise获取结果。
J
jiangminyang 已提交
2515 2516 2517 2518 2519 2520 2521

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
2522
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode)|
J
jiangminyang 已提交
2523

M
mali 已提交
2524 2525
**错误码:**

Z
zengyawen 已提交
2526
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2527 2528 2529 2530 2531

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |

J
jiangminyang 已提交
2532 2533 2534
**示例:**

```js
M
mali 已提交
2535 2536
previewOutput.start().then(() => {
    console.log('Promise returned with previewOutput started.');
2537 2538 2539
}).catch((err) => {
    console.log('Failed to previewOutput start '+ err.code);
});
J
jiangminyang 已提交
2540 2541
```

M
mali 已提交
2542
### stop
J
jiangminyang 已提交
2543

C
cold_yixiu 已提交
2544
stop(callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2545

M
mali 已提交
2546
停止输出预览流,通过注册回调函数获取结果。
J
jiangminyang 已提交
2547 2548 2549 2550 2551

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2552
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
2553
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
2554
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。 |
J
jiangminyang 已提交
2555 2556 2557 2558

**示例:**

```js
M
mali 已提交
2559
previewOutput.stop((err) => {
J
jiangminyang 已提交
2560
    if (err) {
2561
        console.error(`Failed to stop the previewOutput. ${err.code}`);
J
jiangminyang 已提交
2562 2563
        return;
    }
M
mali 已提交
2564
    console.log('Callback returned with previewOutput stopped.');
J
jiangminyang 已提交
2565 2566 2567
})
```

M
mali 已提交
2568
### stop
J
jiangminyang 已提交
2569

C
cold_yixiu 已提交
2570
stop(): Promise\<void\>
J
jiangminyang 已提交
2571

M
mali 已提交
2572
停止输出预览流,通过Promise获取结果。
J
jiangminyang 已提交
2573 2574 2575 2576 2577 2578

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
M
mali 已提交
2579
| -------------- | ------------------------ |
C
cold_yixiu 已提交
2580
| Promise\<void\> | 使用Promise的方式获取结果。 |
J
jiangminyang 已提交
2581 2582 2583 2584

**示例:**

```js
M
mali 已提交
2585 2586
previewOutput.stop().then(() => {
    console.log('Callback returned with previewOutput stopped.');
2587
}).catch((err) => {
2588
    console.log('Failed to previewOutput stop '+ err.code);
2589
});
J
jiangminyang 已提交
2590 2591
```

M
mali 已提交
2592
### release
J
jiangminyang 已提交
2593

C
cold_yixiu 已提交
2594
release(callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2595

M
mali 已提交
2596
释放输出资源,通过注册回调函数获取结果。
J
jiangminyang 已提交
2597 2598 2599 2600 2601

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2602
| 参数名      | 类型                  | 必填 | 说明                 |
M
mali 已提交
2603
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
2604
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2605

M
mali 已提交
2606 2607
**错误码:**

Z
zengyawen 已提交
2608
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2609 2610 2611 2612 2613

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

J
jiangminyang 已提交
2614 2615 2616
**示例:**

```js
M
mali 已提交
2617
previewOutput.release((err) => {
J
jiangminyang 已提交
2618
    if (err) {
2619
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
J
jiangminyang 已提交
2620 2621
        return;
    }
M
mali 已提交
2622 2623
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
J
jiangminyang 已提交
2624 2625
```

M
mali 已提交
2626
### release
J
jiangminyang 已提交
2627

C
cold_yixiu 已提交
2628
release(): Promise\<void\>
J
jiangminyang 已提交
2629

M
mali 已提交
2630
释放输出资源,通过Promise获取结果。
J
jiangminyang 已提交
2631 2632 2633 2634 2635 2636

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
M
mali 已提交
2637
| -------------- | ----------------------- |
C
cold_yixiu 已提交
2638
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2639

M
mali 已提交
2640 2641
**错误码:**

Z
zengyawen 已提交
2642
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2643 2644 2645 2646 2647

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

J
jiangminyang 已提交
2648 2649 2650
**示例:**

```js
M
mali 已提交
2651 2652
previewOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
2653 2654 2655
}).catch((err) => {
    console.log('Failed to previewOutput release '+ err.code);
});
J
jiangminyang 已提交
2656 2657 2658 2659
```

### on('frameStart')

C
cold_yixiu 已提交
2660
on(type: 'frameStart', callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2661 2662 2663 2664 2665 2666 2667

监听预览帧启动,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2668
| 参数名      | 类型                  | 必填 | 说明                                     |
J
jiangminyang 已提交
2669
| -------- | -------------------- | ---- | --------------------------------------- |
2670
| type     | string               | 是   | 监听事件,固定为'frameStart',previewOutput创建成功可监听。底层第一次开始曝光时触发该事件并返回 |
C
cold_yixiu 已提交
2671
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。只要有该事件返回就证明预览开始                     |
J
jiangminyang 已提交
2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682

**示例:**

```js
previewOutput.on('frameStart', () => {
    console.log('Preview frame started');
})
```

### on('frameEnd')

C
cold_yixiu 已提交
2683
on(type: 'frameEnd', callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2684 2685 2686 2687 2688 2689 2690

监听预览帧结束,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2691
| 参数名      | 类型                  | 必填 | 说明                                  |
J
jiangminyang 已提交
2692
| -------- | -------------------- | ---- | ------------------------------------- |
2693
| type     | string               | 是   | 监听事件,固定为'frameEnd',previewOutput创建成功可监听。预览完全结束最后一帧时触发该事件并返回, |
C
cold_yixiu 已提交
2694
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。只要有该事件返回就证明预览结束                 |
J
jiangminyang 已提交
2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705

**示例:**

```js
previewOutput.on('frameEnd', () => {
    console.log('Preview frame ended');
})
```

### on('error')

Z
zengyawen 已提交
2706
on(type: 'error', callback: ErrorCallback): void
J
jiangminyang 已提交
2707 2708 2709 2710 2711 2712 2713

监听预览输出的错误事件,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

2714 2715
| 参数名     | 类型         | 必填 | 说明                       |
| -------- | --------------| ---- | ------------------------ |
2716
| type     | string        | 是   | 监听事件,固定为'error',previewOutput创建成功可监听。预览接口使用错误时触发该事件,比如调用(start(),release())等接口发生错误时返回对应错误信息。|
Z
zengyawen 已提交
2717
| callback | ErrorCallback | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)  |
J
jiangminyang 已提交
2718 2719 2720 2721 2722 2723 2724 2725 2726

**示例:**

```js
previewOutput.on('error', (previewOutputError) => {
    console.log(`Preview output error code: ${previewOutputError.code}`);
})
```

Z
zengyawen 已提交
2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744
### addDeferredSurface

addDeferredSurface(surfaceId: string): void

配置延迟预览的Surface,可以在session.commitConfig()配流和session.start()启流之后运行。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型         | 必填 | 说明                       |
| -------- | --------------| ---- | ------------------------ |
| surfaceId | string | 是 | 从[XComponent](../arkui-ts/ts-basic-components-xcomponent.md)组件获取的surfaceId。|

**错误码:**

Z
zengyawen 已提交
2745
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
Z
zengyawen 已提交
2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |

**示例:**

```js
function async preview(context: Context, cameraInfo: camera.Device, previewProfile: camera.Profile, photoProfile: camera.Profile, surfaceId: string): Promise<void> {
  const cameraManager: camera.CameraManager = camera.getCameraManager(context);
  const cameraInput camera.CameraInput = await cameraManager.createCameraInput(cameraInfo)
  const previewOutput: camera.PreviewOutput = await cameraManager.createDeferredPreviewOutput(previewProfile);
  const photoOutput: camera.PhotoOutput = await cameraManager.createPhotoOutput(photoProfile);
  const session: camera.CaptureSession  = await this.mCameraManager.createCaptureSession();
  await session.beginConfig();
  await session.addInput(cameraInput);
  await session.addOutput(previewOutput);
  await session.addOutput(photoOutput);
  await session.commitConfig();
  await session.start();
  await previewOutput.addDeferredSurface(surfaceId);
}
```

J
jiangminyang 已提交
2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784
## ImageRotation

枚举,图片旋转角度。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称          | 值   | 说明           |
| ------------ | ---- | ------------- |
| ROTATION_0   | 0    | 图片旋转0度。   |
| ROTATION_90  | 90   | 图片旋转90度。  |
| ROTATION_180 | 180  | 图片旋转180度。 |
| ROTATION_270 | 270  | 图片旋转270度。 |

## Location

J
jiangminyang 已提交
2785
图片地理位置信息。
J
jiangminyang 已提交
2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称          | 类型   | 必填 |说明         |
| ------------ | ------ | --- |------------ |
| latitude     | number | 是  |纬度(度)。    |
| longitude    | number | 是  |经度(度)。    |
| altitude     | number | 是  |海拔(米)。    |

## QualityLevel

枚举,图片质量。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称                  | 值   | 说明         |
| -------------------- | ---- | ------------ |
| QUALITY_LEVEL_HIGH   | 0    | 图片质量高。   |
| QUALITY_LEVEL_MEDIUM | 1    | 图片质量中等。 |
| QUALITY_LEVEL_LOW    | 2    | 图片质量差。   |


## PhotoCaptureSetting

J
jiangminyang 已提交
2810
拍摄照片的设置。
J
jiangminyang 已提交
2811 2812 2813

**系统能力:** SystemCapability.Multimedia.Camera.Core

M
mali 已提交
2814 2815 2816 2817 2818 2819
| 名称      | 类型                            | 必填  | 说明              |
| -------- | ------------------------------- | ---- | -----------------|
| quality  | [QualityLevel](#qualitylevel)   | 否   | 图片质量。         |
| rotation | [ImageRotation](#imagerotation) | 否   | 图片旋转角度。      |
| location | [Location](#location)           | 否   | 图片地理位置信息。   |
| mirror   | boolean                         | 否   |镜像使能开关(默认关)。 |
J
jiangminyang 已提交
2820 2821 2822

## PhotoOutput

M
mali 已提交
2823
拍照会话中使用的输出信息,继承[CameraOutput](#cameraoutput)
J
jiangminyang 已提交
2824 2825 2826

### capture

C
cold_yixiu 已提交
2827
capture(callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2828 2829 2830 2831 2832 2833 2834

以默认设置触发一次拍照,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2835
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
2836
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
2837
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2838

M
mali 已提交
2839 2840
**错误码:**

Z
zengyawen 已提交
2841
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2842 2843 2844 2845 2846 2847

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400104                |  Session not running.                                  |
| 7400201                |  Camera service fatal error.                           |

J
jiangminyang 已提交
2848 2849 2850 2851 2852
**示例:**

```js
photoOutput.capture((err) => {
    if (err) {
2853
        console.error(`Failed to capture the photo ${err.code}`);
J
jiangminyang 已提交
2854 2855 2856 2857 2858 2859 2860 2861
        return;
    }
    console.log('Callback invoked to indicate the photo capture request success.');
});
```

### capture

C
cold_yixiu 已提交
2862
capture(): Promise\<void\>
2863 2864 2865 2866 2867 2868 2869 2870 2871

以默认设置触发一次拍照,通过Promise获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
| -------------- | ------------------------ |
C
cold_yixiu 已提交
2872
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
2873

M
mali 已提交
2874 2875
**错误码:**

Z
zengyawen 已提交
2876
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2877 2878 2879 2880 2881 2882

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400104                |  Session not running.                                  |
| 7400201                |  Camera service fatal error.                           |

2883 2884 2885 2886 2887
**示例:**

```js
photoOutput.capture().then(() => {
    console.log('Promise returned to indicate that photo capture request success.');
2888 2889 2890
}).catch((err) => {
    console.log('Failed to photoOutput capture '+ err.code);
});
2891 2892 2893 2894
```

### capture

C
cold_yixiu 已提交
2895
capture(setting: PhotoCaptureSetting, callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
2896 2897 2898 2899 2900 2901 2902

以指定参数触发一次拍照,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2903
| 参数名      | 类型                                         | 必填 | 说明                  |
J
jiangminyang 已提交
2904 2905
| -------- | ------------------------------------------- | ---- | -------------------- |
| setting  | [PhotoCaptureSetting](#photocapturesetting) | 是   | 拍照设置。             |
C
cold_yixiu 已提交
2906
| callback | AsyncCallback\<void\>                        | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode)  |
J
jiangminyang 已提交
2907

M
mali 已提交
2908 2909
**错误码:**

Z
zengyawen 已提交
2910
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2911 2912 2913 2914 2915 2916 2917

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400104                |  Session not running.                                  |
| 7400201                |  Camera service fatal error.                           |

J
jiangminyang 已提交
2918 2919 2920
**示例:**

```js
M
mali 已提交
2921 2922 2923 2924 2925 2926 2927 2928 2929 2930
let captureLocation = {
  latitude: 0,
  longitude: 0,
  altitude: 0,
}
let settings = {
  quality: camera.QualityLevel.QUALITY_LEVEL_LOW,
  rotation: camera.ImageRotation.ROTATION_0,
  location: captureLocation,
  mirror: false
J
jiangminyang 已提交
2931 2932
}
photoOutput.capture(settings, (err) => {
Z
zengyawen 已提交
2933
    if (err) {
2934
        console.error(`Failed to capture the photo ${err.code}`);
Z
zengyawen 已提交
2935 2936 2937 2938
        return;
    }
    console.log('Callback invoked to indicate the photo capture request success.');
});
J
jiangminyang 已提交
2939 2940
```

J
jiangminyang 已提交
2941 2942
### capture

C
cold_yixiu 已提交
2943
capture(setting?: PhotoCaptureSetting): Promise\<void\>
J
jiangminyang 已提交
2944 2945 2946 2947 2948 2949 2950

以指定参数触发一次拍照,通过Promise获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2951
| 参数名     | 类型                                         | 必填 | 说明      |
J
jiangminyang 已提交
2952
| ------- | ------------------------------------------- | ---- | -------- |
M
review  
mali 已提交
2953
| setting | [PhotoCaptureSetting](#photocapturesetting) | 否   | 拍照设置,传入undefined类型数据按默认无参处理。 |
J
jiangminyang 已提交
2954 2955 2956 2957 2958

**返回值:**

| 类型            | 说明                     |
| -------------- | ------------------------ |
C
cold_yixiu 已提交
2959
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
2960

M
mali 已提交
2961 2962
**错误码:**

Z
zengyawen 已提交
2963
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
2964 2965 2966 2967 2968 2969

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |
| 7400104                |  Session not running.                                  |
| 7400201                |  Camera service fatal error.                           |
J
jiangminyang 已提交
2970 2971 2972 2973

**示例:**

```js
M
mali 已提交
2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984
let captureLocation = {
  latitude: 0,
  longitude: 0,
  altitude: 0,
}
let settings = {
  quality: camera.QualityLevel.QUALITY_LEVEL_LOW,
  rotation: camera.ImageRotation.ROTATION_0,
  location: captureLocation,
  mirror: false
}
2985
photoOutput.capture(settings).then(() => {
J
jiangminyang 已提交
2986
    console.log('Promise returned to indicate that photo capture request success.');
2987 2988 2989
}).catch((err) => {
    console.log('Failed to photoOutput capture '+ err.code);
});
J
jiangminyang 已提交
2990 2991 2992 2993
```

### isMirrorSupported

2994
isMirrorSupported(): boolean
J
jiangminyang 已提交
2995

2996
查询是否支持镜像拍照。
J
jiangminyang 已提交
2997 2998 2999

**系统能力:** SystemCapability.Multimedia.Camera.Core

3000
**返回值:**
J
jiangminyang 已提交
3001

3002 3003
| 类型            | 说明                     |
| -------------- | ----------------------- |
3004
| boolean | 返回是否支持镜像拍照。 |
J
jiangminyang 已提交
3005 3006 3007 3008

**示例:**

```js
3009
let isSupported = photoOutput.isMirrorSupported();
J
jiangminyang 已提交
3010 3011
```

M
mali 已提交
3012 3013
### release

C
cold_yixiu 已提交
3014
release(callback: AsyncCallback\<void\>): void
M
mali 已提交
3015 3016 3017 3018 3019 3020 3021 3022 3023

释放输出资源,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名      | 类型                  | 必填 | 说明                 |
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
3024
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
M
mali 已提交
3025

M
mali 已提交
3026 3027
**错误码:**

Z
zengyawen 已提交
3028
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3029 3030 3031 3032 3033

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

M
mali 已提交
3034 3035 3036 3037 3038
**示例:**

```js
photoOutput.release((err) => {
    if (err) {
3039
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
M
mali 已提交
3040 3041 3042 3043 3044 3045 3046 3047
        return;
    }
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
```

### release

C
cold_yixiu 已提交
3048
release(): Promise\<void\>
M
mali 已提交
3049 3050 3051 3052 3053 3054 3055 3056 3057

释放输出资源,通过Promise获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
3058
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
M
mali 已提交
3059

M
mali 已提交
3060 3061
**错误码:**

Z
zengyawen 已提交
3062
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3063 3064 3065 3066 3067

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

M
mali 已提交
3068 3069 3070 3071 3072
**示例:**

```js
photoOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
3073 3074 3075
}).catch((err) => {
    console.log('Failed to photoOutput release '+ err.code);
});
M
mali 已提交
3076 3077
```

J
jiangminyang 已提交
3078 3079
### on('captureStart')

C
cold_yixiu 已提交
3080
on(type: 'captureStart', callback: AsyncCallback\<number\>): void
J
jiangminyang 已提交
3081 3082 3083 3084 3085 3086 3087

监听拍照开始,通过注册回调函数获取Capture ID。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
3088
| 参数名      | 类型                    | 必填 | 说明                                       |
J
jiangminyang 已提交
3089
| -------- | ---------------------- | ---- | ------------------------------------------ |
3090
| type     | string                 | 是   | 监听事件,固定为'captureStart',photoOutput创建成功后可监听。每次拍照,底层开始曝光时触发该事件并返回。 |
C
cold_yixiu 已提交
3091
| callback | AsyncCallback\<number\> | 是   | 使用callback的方式获取Capture ID。            |
J
jiangminyang 已提交
3092 3093 3094 3095

**示例:**

```js
M
mali 已提交
3096
photoOutput.on('captureStart', (err, captureId) => {
J
jiangminyang 已提交
3097 3098 3099 3100 3101 3102
    console.log(`photo capture stated, captureId : ${captureId}`);
})
```

### on('frameShutter')

C
cold_yixiu 已提交
3103
on(type: 'frameShutter', callback: AsyncCallback\<FrameShutterInfo\>): void
J
jiangminyang 已提交
3104 3105 3106 3107 3108 3109 3110

监听拍照帧输出捕获,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

3111 3112
| 参数名     | 类型      | 必填 | 说明                                  |
| -------- | ---------- | --- | ------------------------------------ |
3113
| type     | string     | 是   | 监听事件,固定为'frameShutter',photoOutput创建成功后可监听。 |
C
cold_yixiu 已提交
3114
| callback | AsyncCallback\<[FrameShutterInfo](#frameshutterinfo)\> | 是   | 回调函数,用于获取相关信息。该回调返回意味着可以再次下发拍照请求。             |
J
jiangminyang 已提交
3115 3116 3117 3118

**示例:**

```js
M
mali 已提交
3119
photoOutput.on('frameShutter', (err, frameShutterInfo) => {
J
jiangminyang 已提交
3120 3121 3122 3123 3124 3125
    console.log(`photo capture end, captureId : ${frameShutterInfo.captureId}`);
    console.log(`Timestamp for frame : ${frameShutterInfo.timestamp}`);
})
```

### on('captureEnd')
J
jiangminyang 已提交
3126

C
cold_yixiu 已提交
3127
on(type: 'captureEnd', callback: AsyncCallback\<CaptureEndInfo\>): void
J
jiangminyang 已提交
3128

J
jiangminyang 已提交
3129
监听拍照结束,通过注册回调函数获取结果。
J
jiangminyang 已提交
3130 3131 3132 3133 3134

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

3135 3136
| 参数名     | 类型           | 必填 | 说明                                       |
| -------- | --------------- | ---- | ---------------------------------------- |
3137
| type     | string          | 是   | 监听事件,固定为'captureEnd',photoOutput创建成功后可监听。拍照完全结束可触发该事件发生并返回相应信息。 |
C
cold_yixiu 已提交
3138
| callback | AsyncCallback\<[CaptureEndInfo](#captureendinfo)\> | 是   | 回调函数,用于获取相关信息。                  |
J
jiangminyang 已提交
3139

J
jiangminyang 已提交
3140
**示例:**
J
jiangminyang 已提交
3141

J
jiangminyang 已提交
3142
```js
M
mali 已提交
3143
photoOutput.on('captureEnd', (err, captureEndInfo) => {
J
jiangminyang 已提交
3144 3145 3146 3147 3148 3149 3150
    console.log(`photo capture end, captureId : ${captureEndInfo.captureId}`);
    console.log(`frameCount : ${captureEndInfo.frameCount}`);
})
```

### on('error')

Z
zengyawen 已提交
3151
on(type: 'error', callback: ErrorCallback): void
J
jiangminyang 已提交
3152 3153

监听拍照输出发生错误,通过注册回调函数获取结果。
J
jiangminyang 已提交
3154

J
jiangminyang 已提交
3155 3156 3157 3158
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

3159 3160
| 参数名     | 类型         | 必填 | 说明                                 |
| -------- | ------------- | ---- | ----------------------------------- |
3161
| type     | string       | 是   | 监听事件,固定为'error',photoOutput创建成功后可监听。拍照接口调用时出现错误触发该事件并返回错误信息。 |
Z
zengyawen 已提交
3162
| callback | ErrorCallback | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)             |
J
jiangminyang 已提交
3163 3164 3165 3166

**示例:**

```js
3167
photoOutput.on('error', (error) => {
3168
    console.log(`Photo output error code: ${error.code}`);
J
jiangminyang 已提交
3169 3170 3171
})
```

Z
zengyawen 已提交
3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191
### isQuickThumbnailSupported

isQuickThumbnailSupported(): boolean

是否支持输出快速缩略图。

在CaptureSession.addOutput、CaptureSession.addInput之后,CaptureSession.commitConfig之前生效。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型 | 说明 |
| --------- | ------ |
| boolean | 返回支持情况,如果返回true表示支持,否则不支持。 |

**错误码:**

Z
zengyawen 已提交
3192
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
Z
zengyawen 已提交
3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |

**示例:**

```js
this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
let cameras = this.cameraManager.getSupportedCameras()
// 创建CaptureSession实例
this.captureSession = await this.cameraManager.createCaptureSession()
// 开始配置会话
await this.captureSession.beginConfig()
// 把CameraInput加入到会话
this.mCameraInput = await this.cameraManager.createCameraInput(cameras[0])
await this.cameraInput.open()
await this.captureSession.addInput(this.cameraInput)
// 把PhotoOutPut加入到会话
this.photoOutPut = await this.cameraManager.createPhotoOutput(photoProfile, surfaceId)
await this.captureSession.addOutput(this.photoOutPut)

boolean isSupported = this.photoOutPut.isQuickThumbnailSupported()
```

### enableQuickThumbnail

enableQuickThumbnail(enabled: boolean): void

使能/去使能快速缩略图。

在CaptureSession.addOutput、CaptureSession.addInput之后,CaptureSession.commitConfig之前生效。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型         | 必填 | 说明                                 |
| -------- | ------------- | ---- | ----------------------------------- |
| enabled    | boolean       | 是   | true:使能快速缩略图;false:去使能快速缩略图。 |

**错误码:**

Z
zengyawen 已提交
3238
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
Z
zengyawen 已提交
3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400101                |  Parameter missing or parameter type incorrect        |

**示例:**

```js
this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
let cameras = this.cameraManager.getSupportedCameras()
// 创建CaptureSession实例
this.captureSession = await this.cameraManager.createCaptureSession()
// 开始配置会话
await this.captureSession.beginConfig()
// 把CameraInput加入到会话
this.cameraInput = await this.cameraManager.createCameraInput(cameras[0])
await this.cameraInput.open()
await this.captureSession.addInput(this.cameraInput)
// 把PhotoOutPut加入到会话
this.photoOutPut = await this.cameraManager.createPhotoOutput(photoProfile, surfaceId)
await this.captureSession.addOutput(this.photoOutPut)
boolean isSupported = this.photoOutPut.isQuickThumbnailSupported()
if (isSupported) {
    // 使能快速缩略图
    this.photoOutPut.enableQuickThumbnail(true)
}
```

### on('quickThumbnail')

on(type: 'quickThumbnail', callback: AsyncCallback\<image.PixelMap>): void

监听快速缩略图输出事件。

在enableQuickThumbnail(true)使能快速缩略图之后监听生效。

**系统接口:** 此接口为系统接口。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名     | 类型         | 必填 | 说明                                 |
| -------- | ------------- | ---- | ----------------------------------- |
| type    | string     | 是   | 监听事件,固定为'quickThumbnail'。 |
| callback | AsyncCallback\<[image.PixelMap](js-apis-image.md#pixelmap7)> | 回调返回PixelMap。 |

**示例:**

```js
import camera from '@ohos.multimedia.camera'

this.cameraManager = camera.getCameraManager(globalThis.abilityContext);
let cameras = this.cameraManager.getSupportedCameras()
// 创建CaptureSession实例
this.captureSession = await this.cameraManager.createCaptureSession()
// 开始配置会话
await this.captureSession.beginConfig()
// 把CameraInput加入到会话
this.cameraInput = await this.cameraManager.createCameraInput(cameras[0])
await this.cameraInput.open()
await this.captureSession.addInput(this.cameraInput)
// 把PhotoOutPut加入到会话
this.photoOutPut = await this.cameraManager.createPhotoOutput(photoProfile, surfaceId)
await this.captureSession.addOutput(this.photoOutPut)
boolean isSupported = this.photoOutPut.isQuickThumbnailSupported()
if (isSupported) {
    // 使能快速缩略图
    this.photoOutPut.enableQuickThumbnail(true)
}
this.photoOutPut.on('quickThumbnail', (err, pixelmap) => {
    if (err || pixelmap === undefined) {
        Logger.error(this.tag, 'photoOutPut on thumbnail failed ')
        return
    }
    // 显示或保存pixelmap
    this.showOrSavePicture(pixelmap)
})
```

J
jiangminyang 已提交
3319
## FrameShutterInfo
J
jiangminyang 已提交
3320

J
jiangminyang 已提交
3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342
拍照帧输出信息。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称      | 类型   | 必填 | 说明         |
| --------- | ------ | ---- | ---------- |
| captureId | number | 是   | 拍照的ID。  |
| timestamp | number | 是   | 快门时间戳。 |

## CaptureEndInfo

拍照停止信息。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称       | 类型   | 必填 | 说明       |
| ---------- | ------ | ---- | ---------|
| captureId  | number | 是   | 拍照的ID。 |
| frameCount | number | 是   | 帧数。    |

## VideoOutput

M
mali 已提交
3343
录像会话中使用的输出信息,继承[CameraOutput](#cameraoutput)
J
jiangminyang 已提交
3344 3345 3346

### start

C
cold_yixiu 已提交
3347
start(callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
3348 3349

启动录制,通过注册回调函数获取结果。
J
jiangminyang 已提交
3350 3351 3352 3353 3354

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
3355
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
3356
| -------- | -------------------- | ---- | -------------------- |
C
cold_yixiu 已提交
3357
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
J
jiangminyang 已提交
3358

M
mali 已提交
3359 3360
**错误码:**

Z
zengyawen 已提交
3361
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3362 3363 3364 3365 3366 3367

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |

J
jiangminyang 已提交
3368 3369 3370
**示例:**

```js
J
jiangminyang 已提交
3371
videoOutput.start((err) => {
N
nikhilraut 已提交
3372
    if (err) {
3373
        console.error(`Failed to start the video output ${err.code}`);
N
nikhilraut 已提交
3374 3375
        return;
    }
J
jiangminyang 已提交
3376
    console.log('Callback invoked to indicate the video output start success.');
N
nikhilraut 已提交
3377 3378 3379
});
```

J
jiangminyang 已提交
3380
### start
N
nikhilraut 已提交
3381

C
cold_yixiu 已提交
3382
start(): Promise\<void\>
N
nikhilraut 已提交
3383

J
jiangminyang 已提交
3384
启动录制,通过Promise获取结果。
N
nikhilraut 已提交
3385

Z
zengyawen 已提交
3386
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3387 3388 3389

**返回值:**

J
jiangminyang 已提交
3390 3391
| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
3392
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
3393

M
mali 已提交
3394 3395
**错误码:**

Z
zengyawen 已提交
3396
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3397 3398 3399 3400 3401

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |
N
nikhilraut 已提交
3402 3403 3404

**示例:**

Z
zengyawen 已提交
3405
```js
J
jiangminyang 已提交
3406 3407
videoOutput.start().then(() => {
    console.log('Promise returned to indicate that start method execution success.');
3408 3409 3410
}).catch((err) => {
    console.log('Failed to videoOutput start '+ err.code);
});
N
nikhilraut 已提交
3411 3412
```

J
jiangminyang 已提交
3413
### stop
N
nikhilraut 已提交
3414

C
cold_yixiu 已提交
3415
stop(callback: AsyncCallback\<void\>): void
N
nikhilraut 已提交
3416

J
jiangminyang 已提交
3417
结束录制,通过注册回调函数获取结果。
N
nikhilraut 已提交
3418

Z
zengyawen 已提交
3419
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3420 3421 3422

**参数:**

M
mali 已提交
3423
| 参数名     | 类型                 | 必填 | 说明                     |
J
jiangminyang 已提交
3424
| -------- | -------------------- | ---- | ------------------------ |
C
cold_yixiu 已提交
3425
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。 |
N
nikhilraut 已提交
3426 3427 3428

**示例:**

Z
zengyawen 已提交
3429
```js
J
jiangminyang 已提交
3430 3431
videoOutput.stop((err) => {
    if (err) {
3432
        console.error(`Failed to stop the video output ${err.code}`);
J
jiangminyang 已提交
3433 3434 3435 3436
        return;
    }
    console.log('Callback invoked to indicate the video output stop success.');
});
Z
zengyawen 已提交
3437
```
N
nikhilraut 已提交
3438

J
jiangminyang 已提交
3439
### stop
N
nikhilraut 已提交
3440

C
cold_yixiu 已提交
3441
stop(): Promise\<void\>
J
jiangminyang 已提交
3442 3443 3444 3445 3446 3447 3448 3449 3450

结束录制,通过Promise获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
3451
| Promise\<void\> | 使用Promise的方式获取结果。 |
J
jiangminyang 已提交
3452 3453 3454 3455 3456 3457

**示例:**

```js
videoOutput.stop().then(() => {
    console.log('Promise returned to indicate that stop method execution success.');
3458
}).catch((err) => {
3459
    console.log('Failed to videoOutput stop '+ err.code);
3460
});
3461
```
J
jiangminyang 已提交
3462

M
mali 已提交
3463 3464
### release

C
cold_yixiu 已提交
3465
release(callback: AsyncCallback\<void\>): void
M
mali 已提交
3466 3467 3468 3469 3470 3471 3472 3473 3474

释放输出资源,通过注册回调函数获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

| 参数名      | 类型                  | 必填 | 说明                 |
| -------- | -------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
3475
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
M
mali 已提交
3476

M
mali 已提交
3477 3478
**错误码:**

Z
zengyawen 已提交
3479
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3480 3481 3482 3483 3484

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

M
mali 已提交
3485 3486 3487 3488 3489
**示例:**

```js
videoOutput.release((err) => {
    if (err) {
3490
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
M
mali 已提交
3491 3492 3493 3494 3495 3496 3497 3498
        return;
    }
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
```

### release

C
cold_yixiu 已提交
3499
release(): Promise\<void\>
M
mali 已提交
3500 3501 3502 3503 3504 3505 3506 3507 3508

释放输出资源,通过Promise获取结果。

**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
C
cold_yixiu 已提交
3509
| Promise\<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
M
mali 已提交
3510

M
mali 已提交
3511 3512
**错误码:**

Z
zengyawen 已提交
3513
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3514 3515 3516 3517 3518

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400201                |  Camera service fatal error.                           |

M
mali 已提交
3519 3520 3521 3522 3523
**示例:**

```js
videoOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
3524 3525 3526
}).catch((err) => {
    console.log('Failed to videoOutput release '+ err.code);
});
M
mali 已提交
3527 3528
```

J
jiangminyang 已提交
3529 3530
### on('frameStart')

C
cold_yixiu 已提交
3531
on(type: 'frameStart', callback: AsyncCallback\<void\>): void
N
nikhilraut 已提交
3532

J
jiangminyang 已提交
3533
监听录像开始,通过注册回调函数获取结果。
N
nikhilraut 已提交
3534

Z
zengyawen 已提交
3535
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3536 3537 3538

**参数:**

M
mali 已提交
3539
| 参数名      | 类型                  | 必填 | 说明                                       |
J
jiangminyang 已提交
3540
| -------- | -------------------- | ---- | ----------------------------------------- |
3541
| type     | string               | 是   | 监听事件,固定为'frameStart',videoOutput创建成功后可监听。底层第一次曝光时触发该事件并返回。 |
C
cold_yixiu 已提交
3542
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。  只要有该事件返回就证明录像开始                     |
N
nikhilraut 已提交
3543 3544 3545

**示例:**

Z
zengyawen 已提交
3546
```js
J
jiangminyang 已提交
3547 3548
videoOutput.on('frameStart', () => {
    console.log('Video frame started');
N
nikhilraut 已提交
3549 3550 3551
})
```

J
jiangminyang 已提交
3552
### on('frameEnd')
N
nikhilraut 已提交
3553

C
cold_yixiu 已提交
3554
on(type: 'frameEnd', callback: AsyncCallback\<void\>): void
N
nikhilraut 已提交
3555

J
jiangminyang 已提交
3556
监听录像结束,通过注册回调函数获取结果。
N
nikhilraut 已提交
3557

Z
zengyawen 已提交
3558
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3559 3560 3561

**参数:**

M
mali 已提交
3562
| 参数名      | 类型                  | 必填 | 说明                                       |
J
jiangminyang 已提交
3563
| -------- | -------------------- | ---- | ------------------------------------------ |
3564
| type     | string               | 是   | 监听事件,固定为'frameEnd',videoOutput创建成功后可监听。录像完全结束最后一帧时触发该事件并返回  。 |
C
cold_yixiu 已提交
3565
| callback | AsyncCallback\<void\> | 是   | 回调函数,用于获取结果。 只要有该事件返回就证明录像结束                      |
N
nikhilraut 已提交
3566 3567 3568

**示例:**

Z
zengyawen 已提交
3569
```js
J
jiangminyang 已提交
3570 3571
videoOutput.on('frameEnd', () => {
    console.log('Video frame ended');
N
nikhilraut 已提交
3572 3573 3574
})
```

J
jiangminyang 已提交
3575
### on('error')
N
nikhilraut 已提交
3576

Z
zengyawen 已提交
3577
on(type: 'error', callback: ErrorCallback): void
N
nikhilraut 已提交
3578

J
jiangminyang 已提交
3579
监听录像输出发生错误,通过注册回调函数获取结果。
N
nikhilraut 已提交
3580

Z
zengyawen 已提交
3581
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3582 3583 3584

**参数:**

3585 3586
| 参数名     | 类型       | 必填 | 说明                                    |
| -------- | ----------- | ---- | -------------------------------------- |
3587
| type     | string      | 是   | 监听事件,固定为'error',videoOutput创建成功后可监听。录像接口调用出现错误时触发该事件并返回对应错误码,比如调用(start(),release())接口时出现错误返回对应错误信息。 |
Z
zengyawen 已提交
3588
| callback | ErrorCallback | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)                 |
N
nikhilraut 已提交
3589 3590 3591

**示例:**

Z
zengyawen 已提交
3592
```js
3593 3594
videoOutput.on('error', (error) => {
    console.log(`Video output error code: ${error.code}`);
N
nikhilraut 已提交
3595 3596 3597
})
```

M
mali 已提交
3598
## MetadataOutput
N
nikhilraut 已提交
3599

M
mali 已提交
3600
metadata流。继承[CameraOutput](#cameraoutput)
N
nikhilraut 已提交
3601

M
mali 已提交
3602
### start
J
jiangminyang 已提交
3603

C
cold_yixiu 已提交
3604
start(callback: AsyncCallback\<void\>): void
J
jiangminyang 已提交
3605

M
mali 已提交
3606
开始输出metadata,通过注册回调函数获取结果。
N
nikhilraut 已提交
3607

Z
zengyawen 已提交
3608
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3609 3610 3611

**参数:**

M
mali 已提交
3612
| 参数名     | 类型                                                         | 必填 | 说明                 |
3613
| -------- | -------------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
3614
| callback | AsyncCallback\<void\>       | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
3615

M
mali 已提交
3616 3617
**错误码:**

Z
zengyawen 已提交
3618
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3619 3620 3621 3622 3623 3624

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
3625 3626
**示例:**

Z
zengyawen 已提交
3627
```js
M
mali 已提交
3628
metadataOutput.start((err) => {
N
nikhilraut 已提交
3629
    if (err) {
3630
        console.error(`Failed to start metadataOutput. ${err.code}`);
N
nikhilraut 已提交
3631 3632
        return;
    }
M
mali 已提交
3633
    console.log('Callback returned with metadataOutput started.');
J
jiangminyang 已提交
3634
})
Z
zengyawen 已提交
3635
```
N
nikhilraut 已提交
3636

M
mali 已提交
3637
### start
N
nikhilraut 已提交
3638

C
cold_yixiu 已提交
3639
start(): Promise\<void\>
N
nikhilraut 已提交
3640

M
mali 已提交
3641
开始输出metadata,通过Promise获取结果。
N
nikhilraut 已提交
3642

Z
zengyawen 已提交
3643
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3644 3645 3646

**返回值:**

M
mali 已提交
3647 3648
| 类型                     | 说明                     |
| ----------------------  | ------------------------ |
C
cold_yixiu 已提交
3649
| Promise\<void\>          | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorcode) |
N
nikhilraut 已提交
3650

M
mali 已提交
3651 3652
**错误码:**

Z
zengyawen 已提交
3653
以下错误码的详细介绍请参见[Camera错误码](../errorcodes/errorcode-camera.md)
M
mali 已提交
3654 3655 3656 3657 3658 3659

| 错误码ID         | 错误信息        |
| --------------- | --------------- |
| 7400103                |  Session not config.                                   |
| 7400201                |  Camera service fatal error.                           |

N
nikhilraut 已提交
3660 3661
**示例:**

Z
zengyawen 已提交
3662
```js
M
mali 已提交
3663 3664
metadataOutput.start().then(() => {
    console.log('Callback returned with metadataOutput started.');
3665 3666 3667
}).catch((err) => {
    console.log('Failed to metadataOutput start '+ err.code);
});
N
nikhilraut 已提交
3668 3669
```

M
mali 已提交
3670
### stop
N
nikhilraut 已提交
3671

C
cold_yixiu 已提交
3672
stop(callback: AsyncCallback\<void\>): void
N
nikhilraut 已提交
3673

M
mali 已提交
3674
停止输出metadata,通过注册回调函数获取结果。
N
nikhilraut 已提交
3675

Z
zengyawen 已提交
3676
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3677 3678 3679

**参数:**

M
mali 已提交
3680 3681
| 参数名     | 类型                         | 必填 | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
C
cold_yixiu 已提交
3682
| callback | AsyncCallback\<void\>       | 是   | 回调函数,用于获取结果。 |
N
nikhilraut 已提交
3683 3684 3685

**示例:**

Z
zengyawen 已提交
3686
```js
M
mali 已提交
3687
metadataOutput.stop((err) => {
N
nikhilraut 已提交
3688
    if (err) {
3689
        console.error(`Failed to stop the metadataOutput. ${err.code}`);
N
nikhilraut 已提交
3690 3691
        return;
    }
M
mali 已提交
3692
    console.log('Callback returned with metadataOutput stopped.');
J
jiangminyang 已提交
3693
})
N
nikhilraut 已提交
3694 3695
```

M
mali 已提交
3696
### stop
N
nikhilraut 已提交
3697

C
cold_yixiu 已提交
3698
stop(): Promise\<void\>
N
nikhilraut 已提交
3699

M
mali 已提交
3700
停止输出metadata,通过Promise获取结果。
N
nikhilraut 已提交
3701

Z
zengyawen 已提交
3702
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3703 3704 3705

**返回值:**

M
mali 已提交
3706 3707
| 类型                    | 说明                        |
| ----------------------  | --------------------------- |
C
cold_yixiu 已提交
3708
| Promise\<void\>         | 使用Promise的方式获取结果。 |
N
nikhilraut 已提交
3709 3710 3711

**示例:**

Z
zengyawen 已提交
3712
```js
M
mali 已提交
3713 3714
metadataOutput.stop().then(() => {
    console.log('Callback returned with metadataOutput stopped.');
3715
}).catch((err) => {
3716
    console.log('Failed to metadataOutput stop '+ err.code);
3717
});
N
nikhilraut 已提交
3718 3719
```

M
mali 已提交
3720
### on('metadataObjectsAvailable')
N
nikhilraut 已提交
3721

C
cold_yixiu 已提交
3722
on(type: 'metadataObjectsAvailable', callback: AsyncCallback\<Array\<MetadataObject\>\>): void
N
nikhilraut 已提交
3723

M
mali 已提交
3724
监听检测到的metadata对象,通过注册回调函数获取结果。
N
nikhilraut 已提交
3725

Z
zengyawen 已提交
3726
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3727 3728 3729

**参数:**

3730 3731 3732
| 参数名      | 类型         | 必填 | 说明                                  |
| -------- | -------------- | ---- | ------------------------------------ |
| type     | string         | 是   | 监听事件,固定为'metadataObjectsAvailable',metadataOutput创建成功后可监听。检测到有效的metadata数据时触发该事件发生并返回相应的metadata数据 |
C
cold_yixiu 已提交
3733
| callback | Callback\<Array\<[MetadataObject](#metadataobject)\>\> | 是   | 回调函数,用于获取metadata数据。 |
N
nikhilraut 已提交
3734 3735 3736

**示例:**

Z
zengyawen 已提交
3737
```js
M
mali 已提交
3738
metadataOutput.on('metadataObjectsAvailable', (err, metadataObjectArr) => {
M
mali 已提交
3739
    console.log(`metadata output metadataObjectsAvailable`);
J
jiangminyang 已提交
3740
})
N
nikhilraut 已提交
3741 3742
```

M
mali 已提交
3743
### on('error')
N
nikhilraut 已提交
3744

Z
zengyawen 已提交
3745
on(type: 'error', callback: ErrorCallback): void
N
nikhilraut 已提交
3746

M
mali 已提交
3747
监听metadata流的错误,通过注册回调函数获取结果。
N
nikhilraut 已提交
3748

Z
zengyawen 已提交
3749
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
3750

M
mali 已提交
3751
**参数:**
N
nikhilraut 已提交
3752

3753 3754
| 参数名     | 类型         | 必填 | 说明                                     |
| -------- | ------------- | ---- | --------------------------------------- |
3755
| type     | string        | 是   | 监听事件,固定为'error',metadataOutput创建成功后可监听。metadata接口使用错误时触发该事件并返回对应错误码,比如调用(start(),release())接口时发生错误返回对应错误信息。 |
Z
zengyawen 已提交
3756
| callback | ErrorCallback | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorcode)            |
N
nikhilraut 已提交
3757 3758 3759

**示例:**

Z
zengyawen 已提交
3760
```js
M
review  
mali 已提交
3761
metadataOutput.on('error', (metadataOutputError) => {
M
mali 已提交
3762
    console.log(`Metadata output error code: ${metadataOutputError.code}`);
N
nikhilraut 已提交
3763 3764 3765
})
```

M
mali 已提交
3766 3767 3768 3769 3770 3771 3772 3773
## MetadataObjectType

枚举,metadata流。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称                       | 值   | 说明              |
| ------------------------- | ---- | ----------------- |
C
cold_yixiu 已提交
3774
| FACE_DETECTION            | 0    | metadata对象类型,人脸检测。检测点应在0-1坐标系内,该坐标系左上角为{0,0},右下角为{1,1}。<br> 此坐标系是以设备充电口在右侧时的横向设备方向为基准的,<br> 例如应用的预览界面布局以设备充电口在下侧时的竖向方向为基准,<br> 布局宽高为{w,h}, 返回点为{x,y},则转换后的坐标点为{1-y,x}。 |
M
mali 已提交
3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790

## Rect

矩形定义。

**系统能力:** SystemCapability.Multimedia.Camera.Core

| 名称      | 类型   |      必填     |           说明                 |
| -------- | ------ | --------------- | -------------------- |
| topLeftX | number |        是          | 矩形区域左上角x坐标。   |
| topLeftY | number |         是          | 矩形区域左上角y坐标。   |
| width    | number |         是         | 矩形宽。              |
| height   | number |         是           |矩形高。              |

## MetadataObject

M
mali 已提交
3791
相机元能力信息,[CameraInput](#camerainput)相机信息中的数据来源,通过metadataOutput.on('metadataObjectsAvailable')接口获取
M
mali 已提交
3792

C
cold_yixiu 已提交
3793 3794
**系统能力:** SystemCapability.Multimedia.Camera.Core

3795 3796
| 名称      | 类型                            | 必填  | 说明              |
| -------- | ------------------------------- | ---- | -----------------|
3797 3798 3799
| type  | [MetadataObjectType](#metadataobjecttype)   | 否   | metadata 类型,目前只有人脸识别。 |
| timestamp | number | 否   | 当前时间戳(毫秒)。 |
| boundingBox | [Rect](#rect)           | 否   | metadata 区域框 |