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

Z
zengyawen 已提交
3
> **说明:**
4
>
Z
zengyawen 已提交
5
> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
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 33 34

**示例:**

Z
zengyawen 已提交
35
```js
36
let cameraManager = camera.getCameraManager(context);
N
nikhilraut 已提交
37 38
```

Z
zengyawen 已提交
39
## CameraStatus
N
nikhilraut 已提交
40

Z
zengyawen 已提交
41
枚举,相机状态。
N
nikhilraut 已提交
42

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

45 46
| 名称                       | 值   | 说明            |
| ------------------------- | ---- | ------------    |
J
jiangminyang 已提交
47
| CAMERA_STATUS_APPEAR      | 0    | 新的相机出现。   |
48 49 50
| CAMERA_STATUS_DISAPPEAR   | 1    | 相机被移除。     |
| CAMERA_STATUS_AVAILABLE   | 2    | 相机可用。       |
| CAMERA_STATUS_UNAVAILABLE | 3    | 相机不可用。     |
N
nikhilraut 已提交
51

J
jiangminyang 已提交
52
## Profile
J
jiangminyang 已提交
53

J
jiangminyang 已提交
54
相机配置信息项。
J
jiangminyang 已提交
55 56 57

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

M
mali 已提交
58
| 名称      | 类型                           | 必填 | 说明         |
J
jiangminyang 已提交
59 60 61
| -------- | ----------------------------- |---- | ------------- |
| format   | [CameraFormat](#cameraformat) | 是  | 输出格式。      |
| size     | [Size](#size)                 | 是  | 分辨率。       |
J
jiangminyang 已提交
62

J
jiangminyang 已提交
63 64 65 66 67 68
## FrameRateRange

帧率范围。

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

M
mali 已提交
69
| 名称      | 类型                           | 必填 | 说明         |
J
jiangminyang 已提交
70 71 72 73
| -------- | ----------------------------- |---- | ------------- |
| min      | number                        | 是  | 最小帧率。      |
| max      | number                        | 是  | 最大帧率。      |

J
jiangminyang 已提交
74
## VideoProfile
J
jiangminyang 已提交
75

J
jiangminyang 已提交
76
视频配置信息项。
J
jiangminyang 已提交
77 78 79

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

M
mali 已提交
80
| 名称                       | 类型                                      | 必填 | 说明        |
J
jiangminyang 已提交
81
| ------------------------- | ----------------------------------------- | --- |----------- |
J
jiangminyang 已提交
82
| frameRateRange            | [FrameRateRange](#frameraterange)         | 是  | 帧率范围。   |
J
jiangminyang 已提交
83

J
jiangminyang 已提交
84
## CameraOutputCapability
J
jiangminyang 已提交
85

J
jiangminyang 已提交
86
相机输出能力项。
J
jiangminyang 已提交
87 88 89

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

M
mali 已提交
90
| 名称                           | 类型                                               | 必填 | 说明                |
J
jiangminyang 已提交
91 92 93 94 95
| ----------------------------- | -------------------------------------------------- | --- |------------------- |
| previewProfiles               | Array<[Profile](#profile)\>                        | 是  | 支持的预览配置信息。    |
| photoProfiles                 | Array<[Profile](#profile)\>                        | 是  | 支持的拍照配置信息。    |
| videoProfiles                 | Array<[VideoProfile](#videoprofile)\>              | 是  | 支持的录像配置信息。    |
| supportedMetadataObjectTypes  | Array<[MetadataObjectType](#metadataobjecttype)\>  | 是  | 支持的metadata流类型信息。|
J
jiangminyang 已提交
96

97
## CameraErrorCode
N
nikhilraut 已提交
98

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

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

103 104 105 106 107 108 109 110 111 112 113
| 名称                       | 值   | 说明            |
| ------------------------- | ---- | ------------    |
| 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    | 设备设置已锁定返回。     |
| CONFILICT_CAMERA  | 7400107    | 设备重复打开返回。     |
| DEVICE_DISABLED  | 7400108    | 安全原因摄像头被禁用。     |
| SERVICE_FATAL_ERROR  | 7400201    | 相机服务错误返回。     |
N
nikhilraut 已提交
114

115
## CameraManager
N
nikhilraut 已提交
116

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

J
jiangminyang 已提交
119
### getSupportedCameras
N
nikhilraut 已提交
120

121
getSupportedCameras(): Array<CameraDevice\>
N
nikhilraut 已提交
122

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

Z
zengyawen 已提交
125
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
126 127 128

**返回值:**

129 130 131
| 类型                                             | 说明                           |
| ----------------------------------------------- | ---------------------------- |
|  Array<[CameraDevice](#cameradevice)>            | 相机设备列表。                   |
N
nikhilraut 已提交
132 133 134

**示例:**

Z
zengyawen 已提交
135
```js
136 137
let cameras = cameraManager.getSupportedCameras();

N
nikhilraut 已提交
138 139
```

J
jiangminyang 已提交
140
### getSupportedOutputCapability
N
nikhilraut 已提交
141

142
getSupportedOutputCapability(cameraDevice:CameraDevice): CameraOutputCapability
N
nikhilraut 已提交
143

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

Z
zengyawen 已提交
146
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
147 148 149

**参数:**

M
mali 已提交
150
| 参数名         | 类型                                                            | 必填 | 说明                      |
J
jiangminyang 已提交
151
| ------------ |--------------------------------------------------------------- | -- | -------------------------- |
M
mali 已提交
152
| cameraDevice | [CameraDevice](#cameradevice)                              | 是 | 相机设备,通过 getSupportedCameras 接口获取       |
N
nikhilraut 已提交
153 154 155

**返回值:**

156 157 158
| 类型                                             | 说明                           |
| ----------------------------------------------- | ---------------------------- |
| [CameraOutputCapability](#cameraoutputcapability)            | 相机输出能力。                   |
J
jiangminyang 已提交
159

N
nikhilraut 已提交
160 161
**示例:**

Z
zengyawen 已提交
162
```js
163
let cameraDevice = cameras[0];
164 165
let cameraOutputCapability = cameraManager.getSupportedOutputCapability(cameraDevice);

J
jiangminyang 已提交
166 167
```

J
jiangminyang 已提交
168 169
### isCameraMuted

J
jiangminyang 已提交
170
isCameraMuted(): boolean
J
jiangminyang 已提交
171

172 173 174
查询相机当前的禁用状态(禁用/未禁用)。

在此之前,需要通过[isCameraMuteSupported](#iscameramutesupported)确认当前设备支持禁用相机。
J
jiangminyang 已提交
175 176 177 178 179

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

**返回值:**

J
jiangminyang 已提交
180 181 182
| 类型        | 说明                                         |
| ---------- | -------------------------------------------- |
| boolean    | 返回true表示相机被禁用,返回false表示相机未被禁用。 |
J
jiangminyang 已提交
183 184 185 186

**示例:**

```js
M
mali 已提交
187
let ismuted = cameraManager.isCameraMuted();
J
jiangminyang 已提交
188 189 190 191
```

### isCameraMuteSupported

J
jiangminyang 已提交
192
isCameraMuteSupported(): boolean
J
jiangminyang 已提交
193

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

M
mali 已提交
196 197
此接口为系统接口。

J
jiangminyang 已提交
198 199 200 201 202 203
**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

| 类型        | 说明                          |
| ---------- | ----------------------------- |
J
jiangminyang 已提交
204
| boolean    | 返回true表示相机可以被禁用,返回false表示相机不能被禁用。 |
J
jiangminyang 已提交
205 206 207 208

**示例:**

```js
M
mali 已提交
209
let ismutesuppotred = cameraManager.isCameraMuteSupported();
J
jiangminyang 已提交
210 211 212 213
```

### muteCamera

J
jiangminyang 已提交
214
muteCamera(mute: boolean): void
J
jiangminyang 已提交
215 216 217

禁用相机。

M
mali 已提交
218 219
此接口为系统接口。

J
jiangminyang 已提交
220 221 222 223
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
224
| 参数名      | 类型                              | 必填  | 说明        |
J
jiangminyang 已提交
225 226 227 228 229 230
| -------- | --------------------------------- | ---- | ---------- |
| mute     | boolean                           |  是  |  禁用相机。  |

**示例:**

```js
M
mali 已提交
231
let mute = true;
J
jiangminyang 已提交
232 233 234
cameraManager.muteCamera(mute);
```

J
jiangminyang 已提交
235
### createCameraInput
N
nikhilraut 已提交
236

237
createCameraInput(camera: CameraDevice): CameraInput
J
jiangminyang 已提交
238

239
使用CameraDevice对象创建CameraInput实例,同步返回结果。
J
jiangminyang 已提交
240 241

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

Z
zengyawen 已提交
243
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
244 245 246

**参数:**

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

N
nikhilraut 已提交
251 252
**返回值:**

253 254
| 类型        | 说明                          |
| ---------- | ----------------------------- |
255
| [CameraInput](#camerainput)    | CameraInput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
256 257 258

**示例:**

Z
zengyawen 已提交
259
```js
M
mali 已提交
260
let cameraDevice = cameras[0];
261 262 263 264
let cameraInput;
try {
	cameraInput = cameraManager.createCameraInput(cameraDevice);
} catch (error) {
265
    // 失败返回错误码error.code并处理
266 267
    console.log(error.code);
}
N
nikhilraut 已提交
268 269
```

J
jiangminyang 已提交
270
### createCameraInput
N
nikhilraut 已提交
271

272
createCameraInput(position: CameraPosition, type: CameraType): CameraInput
N
nikhilraut 已提交
273

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

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

Z
zengyawen 已提交
278
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
279 280 281

**参数:**

M
mali 已提交
282
| 参数名     | 类型                                        | 必填 | 说明                                |
J
jiangminyang 已提交
283
| -------- | ------------------------------------------- | ---- | --------------------------------- |
M
mali 已提交
284 285
| position | [CameraPosition](#cameraposition)           | 是   | 相机位置,通过 getSupportedCameras 接口获取设备,然后获取设备位置信息  |
| type     | [CameraType](#cameratype)                   | 是   | 相机类型,通过 getSupportedCameras 接口获取设备,然后获取设备类型信息  |
J
jiangminyang 已提交
286 287 288

**返回值:**

289 290
| 类型        | 说明                          |
| ---------- | ----------------------------- |
291
| [CameraInput](#camerainput)    | CameraInput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
292 293 294 295

**示例:**

```js
M
mali 已提交
296 297 298
let cameraDevice = cameras[0];
let position = cameraDevice.cameraPosition;
let type = cameraDevice.cameraType;
299 300 301 302
let cameraInput;
try {
    cameraInput = cameraManager.createCameraInput(position, type);
} catch (error) {
303
    // 失败返回错误码error.code并处理
304 305
    console.log(error.code);
}
J
jiangminyang 已提交
306 307
```

J
jiangminyang 已提交
308
### createPreviewOutput
N
nikhilraut 已提交
309

310
createPreviewOutput(profile: Profile, surfaceId: string): PreviewOutput
J
jiangminyang 已提交
311

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

Z
zengyawen 已提交
314
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
315 316 317

**参数:**

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

N
nikhilraut 已提交
323 324
**返回值:**

325 326
| 类型        | 说明                          |
| ---------- | ----------------------------- |
327
| [PreviewOutput](#previewoutput)    | PreviewOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
328 329 330

**示例:**

Z
zengyawen 已提交
331
```js
M
mali 已提交
332
let profile = cameraoutputcapability.previewProfiles[0];
333 334 335 336
let previewOutput;
try {
    previewOutput = cameraManager.createPreviewOutput(profile, surfaceId);
} catch (error) {
337
    // 失败返回错误码error.code并处理
338 339
    console.log(error.code);
}
N
nikhilraut 已提交
340 341
```

J
jiangminyang 已提交
342
### createPhotoOutput
N
nikhilraut 已提交
343

344
createPhotoOutput(profile: Profile, surfaceId: string): PhotoOutput
N
nikhilraut 已提交
345

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

Z
zengyawen 已提交
348
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
349 350 351

**参数:**

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

N
nikhilraut 已提交
357 358
**返回值:**

359 360
| 类型        | 说明                          |
| ---------- | ----------------------------- |
361
| [PhotoOutput](#photooutput)   | PhotoOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
362 363 364

**示例:**

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

J
jiangminyang 已提交
376
### createVideoOutput
N
nikhilraut 已提交
377

378
createVideoOutput(profile: VideoProfile, surfaceId: string): VideoOutput
N
nikhilraut 已提交
379

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

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

**参数:**

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

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

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

**示例:**

Z
zengyawen 已提交
399
```js
M
mali 已提交
400
let profile = cameraoutputcapability.videoProfiles[0];
401 402 403 404
let videoOutput;
try {
    videoOutput = cameraManager.createVideoOutput(profile, surfaceId);
} catch (error) {
405
    // 失败返回错误码error.code并处理
406 407
    console.log(error.code);
}
N
nikhilraut 已提交
408 409
```

J
jiangminyang 已提交
410
### createMetadataOutput
N
nikhilraut 已提交
411

412
createMetadataOutput(metadataObjectTypes:Array<MetadataObjectType\>): MetadataOutput
N
nikhilraut 已提交
413

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

Z
zengyawen 已提交
416
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
417 418 419

**参数:**

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

N
nikhilraut 已提交
424 425
**返回值:**

426 427
| 类型        | 说明                          |
| ---------- | ----------------------------- |
428
| [MetadataOutput](#metadataoutput)   | MetadataOutput实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
429 430 431

**示例:**

Z
zengyawen 已提交
432
```js
M
mali 已提交
433
let metadataObjectTypes = cameraoutputcapability.supportedMetadataObjectTypes;
434 435 436 437
let metadataOutput;
try {
    metadataOutput = cameraManager.createMetadataOutput(metadataObjectTypes);
} catch (error) {
438
    // 失败返回错误码error.code并处理
439 440
    console.log(error.code);
}
N
nikhilraut 已提交
441 442
```

J
jiangminyang 已提交
443
### createCaptureSession
N
nikhilraut 已提交
444

445
createCaptureSession(): CaptureSession
N
nikhilraut 已提交
446

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

Z
zengyawen 已提交
449
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
450 451 452

**返回值:**

453 454
| 类型        | 说明                          |
| ---------- | ----------------------------- |
455
| [CaptureSession](#capturesession)   | CaptureSession实例。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
456 457 458

**示例:**

Z
zengyawen 已提交
459
```js
460 461 462 463
let captureSession;
try {
    captureSession = cameraManager.createCaptureSession();
} catch (error) {
464
    // 失败返回错误码error.code并处理
465 466
    console.log(error.code);
}
N
nikhilraut 已提交
467 468
```

J
jiangminyang 已提交
469
### on('cameraStatus')
N
nikhilraut 已提交
470

J
jiangminyang 已提交
471
on(type: 'cameraStatus', callback: AsyncCallback<CameraStatusInfo\>): void
N
nikhilraut 已提交
472

J
jiangminyang 已提交
473
镜头状态回调,通过注册回调函数获取相机的状态变化。
N
nikhilraut 已提交
474

Z
zengyawen 已提交
475
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
476 477 478

**参数:**

M
mali 已提交
479
| 参数名     | 类型                                                    | 必填 | 说明       |
J
jiangminyang 已提交
480 481 482
| -------- | ----------------------------------------------------- | ---- | --------- |
| type     | string                                                | 是   | 监听事件,固定为'cameraStatus',即镜头状态变化事件。 |
| callback | AsyncCallback<[CameraStatusInfo](#camerastatusinfo)\> | 是   | 回调函数,用于获取镜头状态变化信息。                 |
N
nikhilraut 已提交
483 484 485

**示例:**

Z
zengyawen 已提交
486
```js
J
jiangminyang 已提交
487
cameraManager.on('cameraStatus', (err, cameraStatusInfo) => {
N
nikhilraut 已提交
488
    if (err) {
J
jiangminyang 已提交
489
        console.error(`Failed to get cameraStatus callback. ${err.message}`);
N
nikhilraut 已提交
490 491
        return;
    }
J
jiangminyang 已提交
492 493
    console.log(`camera : ${cameraStatusInfo.camera.cameraId}`);
    console.log(`status: ${cameraStatusInfo.status}`);
N
nikhilraut 已提交
494 495 496
})
```

J
jiangminyang 已提交
497 498 499 500 501 502
### on('cameraMute')

on(type: 'cameraMute', callback: AsyncCallback<boolean\>): void

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

503
此接口为系统接口。
M
mali 已提交
504

J
jiangminyang 已提交
505 506 507 508
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
509
| 参数名     | 类型             | 必填 | 说明       |
J
jiangminyang 已提交
510 511
| -------- | --------------- | ---- | --------- |
| type     | string          | 是   | 监听事件,固定为'cameraMute',即禁用状态变化事件。 |
Z
zengyawen 已提交
512
| callback | AsyncCallback\<boolean> | 是   | 回调函数,用于获取禁用状态变化信息。               |
J
jiangminyang 已提交
513 514 515 516

**示例:**

```js
M
mali 已提交
517
cameraManager.on('cameraMute', (err, curMuetd) => {
J
jiangminyang 已提交
518 519 520 521
    if (err) {
        console.error(`Failed to get cameraMute callback. ${err.message}`);
        return;
    }
522
    let isMuted = curMuetd;
J
jiangminyang 已提交
523 524 525
})
```

J
jiangminyang 已提交
526
## CameraStatusInfo
N
nikhilraut 已提交
527

J
jiangminyang 已提交
528 529 530 531
相机管理器回调返回的接口实例,表示相机状态信息。

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

M
mali 已提交
532 533 534 535
| 名称   | 类型                            |     必填     | 说明       |
| ------ | ----------------------------- | -------------- | ---------- |
| camera | [CameraDevice](#cameradevice) |        是       | 相机信息。 |
| status | [CameraStatus](#camerastatus) |        是        | 相机状态。 |
J
jiangminyang 已提交
536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556

## CameraPosition

枚举,相机位置。

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

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

## CameraType

枚举,相机类型。

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

| 名称                     | 值   | 说明            |
| ----------------------- | ---- | -------------- |
557
| CAMERA_TYPE_DEFAULT     | 0    | 相机类型未指定。  |
J
jiangminyang 已提交
558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580
| 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    | 远程连接的相机。 |

## CameraDevice

相机设备信息。

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

M
mali 已提交
581
| 名称           | 类型                                | 必填 | 说明        |
J
jiangminyang 已提交
582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600
| -------------- | --------------------------------- | ---- | ---------- |
| cameraId       | string                            | 是   | CameraDevice对象|
| cameraPosition | [CameraPosition](#cameraposition) | 是   | 相机位置。    |
| cameraType     | [CameraType](#cameratype)         | 是   | 相机类型。    |
| connectionType | [ConnectionType](#connectiontype) | 是   | 相机连接类型。 |

## Size

枚举,输出能力查询。

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

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

## Point

J
jiangminyang 已提交
601
枚举,点坐标用于对焦、曝光配置。
J
jiangminyang 已提交
602 603

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

J
jiangminyang 已提交
605 606 607 608 609 610 611 612 613 614 615
| 名称   | 类型   | 必填   | 说明         |
| ------ | ------ | ---- | ------------ |
| x      | number | 是    | 点的x坐标。   |
| y      | number | 是    | 点的y坐标。   |

## CameraFormat

枚举,输出格式。

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

M
mali 已提交
616
| 名称                     | 值        | 说明         |
J
jiangminyang 已提交
617
| ----------------------- | --------- | ------------ |
J
jiangminyang 已提交
618
| CAMERA_FORMAT_RGBA_8888 | 3         | RGB格式的图片。             |
J
jiangminyang 已提交
619 620 621 622 623 624 625 626 627 628 629
| CAMERA_FORMAT_YUV_420_SP| 1003      | YUV 420 SP格式的图片。      |
| CAMERA_FORMAT_JPEG      | 2000      | JPEG格式的图片。            |

## CameraInput

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

### open

open\(callback: AsyncCallback<void\>\): void

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

Z
zengyawen 已提交
632
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
633 634 635

**参数:**

M
mali 已提交
636
| 参数名     | 类型                  | 必填 | 说明                  |
J
jiangminyang 已提交
637
| -------- | -------------------- | ---- | ------------------- |
638
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
639 640 641

**示例:**

Z
zengyawen 已提交
642
```js
J
jiangminyang 已提交
643
cameraInput.open((err) => {
N
nikhilraut 已提交
644
    if (err) {
J
jiangminyang 已提交
645
        console.error(`Failed to open the camera. ${err.message}`);
646
        console.error(`Failed to open the camera. ${err.code}`);
N
nikhilraut 已提交
647 648
        return;
    }
J
jiangminyang 已提交
649 650
    console.log('Callback returned with camera opened.');
})
N
nikhilraut 已提交
651 652
```

J
jiangminyang 已提交
653
### open
N
nikhilraut 已提交
654

J
jiangminyang 已提交
655
open(): Promise<void\>
N
nikhilraut 已提交
656

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

Z
zengyawen 已提交
659
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
660 661 662

**返回值:**

J
jiangminyang 已提交
663 664
| 类型           | 说明                      |
| -------------- | ----------------------- |
665
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
666 667 668

**示例:**

Z
zengyawen 已提交
669
```js
J
jiangminyang 已提交
670 671
cameraInput.open().then(() => {
    console.log('Promise returned with camera opened.');
672 673 674 675
}).catch((err) => {
    console.log('Failed to open the camera '+ err.message);
    console.error(`Failed to open the camera. ${err.code}`);
});
N
nikhilraut 已提交
676 677
```

J
jiangminyang 已提交
678
### close
N
nikhilraut 已提交
679

J
jiangminyang 已提交
680
close\(callback: AsyncCallback<void\>\): void
N
nikhilraut 已提交
681

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

Z
zengyawen 已提交
684
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
685 686 687

**参数:**

M
mali 已提交
688
| 参数名     | 类型                   | 必填 | 说明                  |
J
jiangminyang 已提交
689
| -------- | -------------------- | ---- | -------------------- |
690
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
691 692 693

**示例:**

Z
zengyawen 已提交
694
```js
J
jiangminyang 已提交
695 696 697
cameraInput.close((err) => {
    if (err) {
        console.error(`Failed to close the cameras. ${err.message}`);
698
        console.error(`Failed to close the cameras. ${err.code}`);
J
jiangminyang 已提交
699 700 701 702 703 704 705 706 707 708
        return;
    }
    console.log('Callback returned with camera closed.');
})
```

### close

close(): Promise<void\>

J
jiangminyang 已提交
709
关闭相机,通过Promise获取状态。
J
jiangminyang 已提交
710 711 712 713 714 715 716 717 718 719 720 721 722 723

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

**返回值:**

| 类型           | 说明                      |
| -------------- | ----------------------- |
| Promise<void\> | 使用Promise的方式获取结果。 |

**示例:**

```js
cameraInput.close().then(() => {
    console.log('Promise returned with camera closed.');
724 725 726 727
}).catch((err) => {
    console.log('Failed to close the camera '+ err.message);
    console.error(`Failed to close the cameras. ${err.code}`);
});
J
jiangminyang 已提交
728 729
```

730
### on('error')
J
jiangminyang 已提交
731

732
on(type: 'error', cameraDevice:CameraDevice, callback: ErrorCallback<BusinessError\>): void
J
jiangminyang 已提交
733

734
监听CameraInput的错误事件,通过注册回调函数获取结果。
J
jiangminyang 已提交
735 736 737 738 739

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

**参数:**

740 741 742 743
| 参数名     | 类型                              | 必填 | 说明                                          |
| -------- | -------------------------------- | --- | ------------------------------------------- |
| type     | string                           | 是   | 监听事件,固定为'error',即CameraInput错误事件。 |
| cameraDevice   | [CameraDevice](#cameradevice)    | 是   | CameraDevice对象。 |
744
| callback | ErrorCallback<BusinessError\> | 是   | 回调函数,用于获取结果。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)   |
J
jiangminyang 已提交
745 746 747 748

**示例:**

```js
749 750 751 752
let cameraDevice = cameras[0];
cameraInput.on('error', cameraDevice, (error) => {
    console.log(`Camera input error code: ${error.code}`);
})
J
jiangminyang 已提交
753 754
```

755
## FlashMode
J
jiangminyang 已提交
756

757
枚举,闪光灯模式。
J
jiangminyang 已提交
758

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

761 762 763 764 765 766
| 名称                    | 值   | 说明        |
| ---------------------- | ---- | ---------- |
| FLASH_MODE_CLOSE       | 0    | 闪光灯关闭。 |
| FLASH_MODE_OPEN        | 1    | 闪光灯打开。 |
| FLASH_MODE_AUTO        | 2    | 自动闪光灯。 |
| FLASH_MODE_ALWAYS_OPEN | 3    | 闪光灯常亮。 |
J
jiangminyang 已提交
767

768
## ExposureMode
N
nikhilraut 已提交
769

J
jiangminyang 已提交
770
枚举,曝光模式。
N
nikhilraut 已提交
771

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

J
jiangminyang 已提交
774 775 776 777 778
| 名称                           | 值   | 说明         |
| ----------------------------- | ---- | ----------- |
| EXPOSURE_MODE_LOCKED          | 0    | 锁定曝光模式。 |
| EXPOSURE_MODE_AUTO            | 1    | 自动曝光模式。 |
| EXPOSURE_MODE_CONTINUOUS_AUTO | 2    | 连续自动曝光。 |
Z
zengyawen 已提交
779

J
jiangminyang 已提交
780
 ## FocusMode
N
nikhilraut 已提交
781

J
jiangminyang 已提交
782
枚举,焦距模式。
N
nikhilraut 已提交
783

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

J
jiangminyang 已提交
786 787 788 789
| 名称                        | 值   | 说明          |
| -------------------------- | ---- | ------------ |
| FOCUS_MODE_MANUAL          | 0    | 手动对焦。     |
| FOCUS_MODE_CONTINUOUS_AUTO | 1    | 连续自动对焦。 |
M
mali 已提交
790
| FOCUS_MODE_AUTO            | 2    | 自动对焦。     |
J
jiangminyang 已提交
791
| FOCUS_MODE_LOCKED          | 3    | 对焦锁定。     |
N
nikhilraut 已提交
792

J
jiangminyang 已提交
793
## FocusState
N
nikhilraut 已提交
794

J
jiangminyang 已提交
795
枚举,焦距状态。
Z
zengyawen 已提交
796

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

J
jiangminyang 已提交
799 800 801 802 803
| 名称                   | 值   | 说明       |
| --------------------- | ---- | --------- |
| FOCUS_STATE_SCAN      | 0    | 触发对焦。  |
| FOCUS_STATE_FOCUSED   | 1    | 对焦成功。  |
| FOCUS_STATE_UNFOCUSED | 2    | 未完成对焦。 |
Z
zengyawen 已提交
804

J
jiangminyang 已提交
805
## VideoStabilizationMode
Z
zengyawen 已提交
806

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

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

J
jiangminyang 已提交
811 812 813 814 815 816 817
| 名称       | 值   | 说明         |
| --------- | ---- | ------------ |
| OFF       | 0    | 关闭视频防抖功能。   |
| LOW       | 1    | 使用基础防抖算法。   |
| MIDDLE    | 2    | 使用防抖效果一般的防抖算法,防抖效果优于LOW类型。   |
| HIGH      | 3    | 使用防抖效果最好的防抖算法,防抖效果优于MIDDLE类型。   |
| AUTO      | 4    | 自动进行选择。   |
N
nikhilraut 已提交
818

J
jiangminyang 已提交
819
## CaptureSession
N
nikhilraut 已提交
820

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

Z
zengyawen 已提交
823
### beginConfig
N
nikhilraut 已提交
824

825
beginConfig(): void
N
nikhilraut 已提交
826

827
开始配置会话。
N
nikhilraut 已提交
828

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

831 832 833 834 835 836
**返回值:**

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

N
nikhilraut 已提交
837 838
**示例:**

Z
zengyawen 已提交
839
```js
840 841 842
try {
    captureSession.beginConfig();
} catch (error) {
843
    // 失败返回错误码error.code并处理
844 845
    console.log(error.code);
}
N
nikhilraut 已提交
846 847
```

Z
zengyawen 已提交
848
### commitConfig
N
nikhilraut 已提交
849

850
commitConfig(callback: AsyncCallback<void\>): void
N
nikhilraut 已提交
851

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

Z
zengyawen 已提交
854
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
855 856 857

**参数:**

M
mali 已提交
858
| 参数名     | 类型                   | 必填 | 说明                  |
J
jiangminyang 已提交
859
| -------- | -------------------- | ---- | -------------------- |
860
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
861 862 863

**示例:**

Z
zengyawen 已提交
864
```js
N
nikhilraut 已提交
865 866
captureSession.commitConfig((err) => {
    if (err) {
J
jiangminyang 已提交
867
        console.error(`Failed to commit the configuration. ${err.message}`);
868
        console.log('Failed to commitConfig '+ err.code);
N
nikhilraut 已提交
869 870 871 872 873 874
        return;
    }
    console.log('Callback invoked to indicate the commit config success.');
});
```

Z
zengyawen 已提交
875
### commitConfig
N
nikhilraut 已提交
876

877
commitConfig(): Promise<void\>
N
nikhilraut 已提交
878

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

Z
zengyawen 已提交
881
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
882 883 884

**返回值:**

J
jiangminyang 已提交
885 886
| 类型            | 说明                      |
| -------------- | ------------------------ |
887
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
888 889 890

**示例:**

Z
zengyawen 已提交
891
```js
N
nikhilraut 已提交
892 893
captureSession.commitConfig().then(() => {
    console.log('Promise returned to indicate the commit config success.');
894 895 896 897 898
}).catch((err) => {
    // 失败返回错误码error.code并处理
    console.log('Failed to commitConfig '+ err.message);
    console.log('Failed to commitConfig '+ err.code);
});
N
nikhilraut 已提交
899 900
```

J
jiangminyang 已提交
901
### addInput
N
nikhilraut 已提交
902

903
addInput(cameraInput: CameraInput): void
N
nikhilraut 已提交
904

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

Z
zengyawen 已提交
907
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
908 909 910

**参数:**

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

915 916 917 918 919 920
**返回值:**

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

N
nikhilraut 已提交
921 922
**示例:**

Z
zengyawen 已提交
923
```js
924 925 926
try {
    captureSession.addInput(cameraInput);
} catch (error) {
927
    // 失败返回错误码error.code并处理
928 929
    console.log(error.code);
}
N
nikhilraut 已提交
930 931
```

J
jiangminyang 已提交
932
### removeInput
N
nikhilraut 已提交
933

934
removeInput(cameraInput: CameraInput): void
N
nikhilraut 已提交
935

936
移除[CameraInput](#camerainput)
N
nikhilraut 已提交
937

Z
zengyawen 已提交
938
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
939 940 941

**参数:**

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

946 947 948 949 950 951
**返回值:**

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

N
nikhilraut 已提交
952 953
**示例:**

Z
zengyawen 已提交
954
```js
955 956 957
try {
    captureSession.removeInput(cameraInput);
} catch (error) {
958
    // 失败返回错误码error.code并处理
959 960
    console.log(error.code);
}
N
nikhilraut 已提交
961 962
```

J
jiangminyang 已提交
963
### addOutput
N
nikhilraut 已提交
964

965
addOutput(previewOutput: CameraOutput): void
N
nikhilraut 已提交
966

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

Z
zengyawen 已提交
969
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
970 971 972

**参数:**

M
mali 已提交
973
| 参数名           | 类型                             | 必填 | 说明                      |
J
jiangminyang 已提交
974
| ------------- | ------------------------------- | ---- | ------------------------ |
M
mali 已提交
975
| previewOutput  | [PreviewOutput](#previewoutput)   | 是   | 需要添加的previewoutput实例。 |
N
nikhilraut 已提交
976

977 978 979 980 981 982
**返回值:**

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

N
nikhilraut 已提交
983 984
**示例:**

Z
zengyawen 已提交
985
```js
986 987 988
try {
    captureSession.addOutput(previewOutput);
} catch (error) {
989
    // 失败返回错误码error.code并处理
990 991
    console.log(error.code);
}
N
nikhilraut 已提交
992 993
```

Z
zengyawen 已提交
994
### removeOutput
N
nikhilraut 已提交
995

996
removeOutput(previewOutput: CameraOutput): void
N
nikhilraut 已提交
997

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

Z
zengyawen 已提交
1000
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1001 1002 1003

**参数:**

M
mali 已提交
1004
| 参数名           | 类型                             | 必填 | 说明                      |
J
jiangminyang 已提交
1005
| ------------- | ------------------------------- | ---- | ------------------------ |
M
mali 已提交
1006
| previewOutput  | [PreviewOutput](#previewoutput)   | 是   | 需要移除的previewoutput实例。 |
N
nikhilraut 已提交
1007

1008 1009 1010 1011 1012 1013
**返回值:**

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

N
nikhilraut 已提交
1014 1015
**示例:**

Z
zengyawen 已提交
1016
```js
1017 1018 1019
try {
    captureSession.removeOutput(previewOutput);
} catch (error) {
1020
    // 失败返回错误码error.code并处理
1021 1022
    console.log(error.code);
}
N
nikhilraut 已提交
1023 1024
```

J
jiangminyang 已提交
1025
### start
N
nikhilraut 已提交
1026

J
jiangminyang 已提交
1027
start\(callback: AsyncCallback<void\>\): void
N
nikhilraut 已提交
1028

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

Z
zengyawen 已提交
1031
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1032 1033 1034

**参数:**

M
mali 已提交
1035
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1036
| -------- | -------------------- | ---- | -------------------- |
1037
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1038 1039 1040

**示例:**

Z
zengyawen 已提交
1041
```js
J
jiangminyang 已提交
1042
captureSession.start((err) => {
N
nikhilraut 已提交
1043
    if (err) {
J
jiangminyang 已提交
1044
        console.error(`Failed to start the session ${err.message}`);
1045
        console.error(`Failed to start the session ${err.code}`);
N
nikhilraut 已提交
1046 1047
        return;
    }
J
jiangminyang 已提交
1048
    console.log('Callback invoked to indicate the session start success.');
N
nikhilraut 已提交
1049 1050 1051
});
```

J
jiangminyang 已提交
1052
### start
N
nikhilraut 已提交
1053

J
jiangminyang 已提交
1054
start\(\): Promise<void\>
N
nikhilraut 已提交
1055

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

Z
zengyawen 已提交
1058
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1059 1060 1061

**返回值:**

J
jiangminyang 已提交
1062 1063
| 类型            | 说明                     |
| -------------- | ------------------------ |
Z
zengyawen 已提交
1064
| Promise<void\> | 使用Promise的方式获取结果。 |
N
nikhilraut 已提交
1065 1066 1067

**示例:**

Z
zengyawen 已提交
1068
```js
J
jiangminyang 已提交
1069 1070
captureSession.start().then(() => {
    console.log('Promise returned to indicate the session start success.');
1071 1072 1073 1074
}).catch((err) => {
    console.log('Failed to captureSession start '+ err.message);
    console.error(`Failed to start the session ${err.code}`);
});
N
nikhilraut 已提交
1075 1076
```

J
jiangminyang 已提交
1077
### stop
N
nikhilraut 已提交
1078

J
jiangminyang 已提交
1079
stop\(callback: AsyncCallback<void\>\): void
N
nikhilraut 已提交
1080

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

Z
zengyawen 已提交
1083
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1084 1085 1086

**参数:**

M
mali 已提交
1087
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1088
| -------- | -------------------- | ---- | ------------------- |
1089
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1090 1091 1092

**示例:**

Z
zengyawen 已提交
1093
```js
J
jiangminyang 已提交
1094
captureSession.stop((err) => {
N
nikhilraut 已提交
1095
    if (err) {
J
jiangminyang 已提交
1096
        console.error(`Failed to stop the session ${err.message}`);
1097
        console.error(`Failed to stop the session ${err.code}`);
N
nikhilraut 已提交
1098 1099
        return;
    }
J
jiangminyang 已提交
1100
    console.log('Callback invoked to indicate the session stop success.');
N
nikhilraut 已提交
1101 1102 1103
});
```

J
jiangminyang 已提交
1104
### stop
N
nikhilraut 已提交
1105

J
jiangminyang 已提交
1106
stop(): Promise<void\>
N
nikhilraut 已提交
1107

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

Z
zengyawen 已提交
1110
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1111 1112 1113

**返回值:**

J
jiangminyang 已提交
1114 1115
| 类型            | 说明                     |
| -------------- | ----------------------- |
1116
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1117 1118 1119

**示例:**

Z
zengyawen 已提交
1120
```js
J
jiangminyang 已提交
1121 1122
captureSession.stop().then(() => {
    console.log('Promise returned to indicate the session stop success.');
1123 1124 1125 1126
}).catch((err) => {
    console.log('Failed to captureSession stop '+ err.message);
    console.error(`Failed to stop the session ${err.code}`);
});
N
nikhilraut 已提交
1127 1128
```

Z
zengyawen 已提交
1129
### release
N
nikhilraut 已提交
1130

Z
zengyawen 已提交
1131
release\(callback: AsyncCallback<void\>\): void
N
nikhilraut 已提交
1132

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

Z
zengyawen 已提交
1135
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1136 1137

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

M
mali 已提交
1139
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1140
| -------- | -------------------- | ---- | -------------------- |
1141
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1142 1143 1144

**示例:**

Z
zengyawen 已提交
1145
```js
N
nikhilraut 已提交
1146 1147
captureSession.release((err) => {
    if (err) {
J
jiangminyang 已提交
1148
        console.error(`Failed to release the CaptureSession instance ${err.message}`);
1149
        console.error(`Failed to release the CaptureSession instance ${err.code}`);
N
nikhilraut 已提交
1150 1151 1152 1153 1154 1155
        return;
    }
    console.log('Callback invoked to indicate that the CaptureSession instance is released successfully.');
});
```

Z
zengyawen 已提交
1156
### release
N
nikhilraut 已提交
1157

Z
zengyawen 已提交
1158
release(): Promise<void\>
N
nikhilraut 已提交
1159

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

Z
zengyawen 已提交
1162
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1163 1164 1165

**返回值:**

J
jiangminyang 已提交
1166 1167
| 类型            | 说明                     |
| -------------- | ------------------------ |
1168
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1169 1170 1171

**示例:**

Z
zengyawen 已提交
1172
```js
N
nikhilraut 已提交
1173 1174
captureSession.release().then(() => {
    console.log('Promise returned to indicate that the CaptureSession instance is released successfully.');
1175 1176 1177 1178
}).catch((err) => {
    console.log('Failed to captureSession release '+ err.message);
    console.error(`Failed to release the CaptureSession instance ${err.code}`);
});
N
nikhilraut 已提交
1179 1180
```

J
jiangminyang 已提交
1181
### hasFlash
N
nikhilraut 已提交
1182

1183
hasFlash(): boolean
N
nikhilraut 已提交
1184

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

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

J
jiangminyang 已提交
1189
**返回值:**
Z
zengyawen 已提交
1190

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

J
jiangminyang 已提交
1195
**示例:**
Z
zengyawen 已提交
1196

J
jiangminyang 已提交
1197
```js
1198 1199 1200
try {
    let status = captureSession.hasFlash();
} catch (error) {
1201
    // 失败返回错误码error.code并处理
1202 1203
    console.log(error.code);
}
J
jiangminyang 已提交
1204
```
N
nikhilraut 已提交
1205

J
jiangminyang 已提交
1206
### isFlashModeSupported
Z
zengyawen 已提交
1207

1208
isFlashModeSupported(flashMode: FlashMode): boolean
N
nikhilraut 已提交
1209

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

Z
zengyawen 已提交
1212
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1213 1214 1215

**参数:**

M
mali 已提交
1216
| 参数名       | 类型                     | 必填 | 说明                               |
J
jiangminyang 已提交
1217 1218
| --------- | ----------------------- | ---- | --------------------------------- |
| flashMode | [FlashMode](#flashmode) | 是   | 指定闪光灯模式。                     |
N
nikhilraut 已提交
1219 1220 1221

**返回值:**

1222 1223
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1224
| boolean    | 返回true表示支持该闪光灯模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1225 1226 1227

**示例:**

Z
zengyawen 已提交
1228
```js
1229 1230 1231
try {
    let status = captureSession.isFlashModeSupported(camera.FlashMode.FLASH_MODE_AUTO);
} catch (error) {
1232
    // 失败返回错误码error.code并处理
1233 1234
    console.log(error.code);
}
N
nikhilraut 已提交
1235 1236
```

J
jiangminyang 已提交
1237
### setFlashMode
N
nikhilraut 已提交
1238

1239
setFlashMode(flashMode: FlashMode): void
N
nikhilraut 已提交
1240

1241
设置闪光灯模式。
N
nikhilraut 已提交
1242

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

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

Z
zengyawen 已提交
1248
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1249 1250 1251

**参数:**

M
mali 已提交
1252
| 参数名       | 类型                     | 必填 | 说明                  |
J
jiangminyang 已提交
1253
| --------- | ----------------------- | ---- | --------------------- |
1254 1255 1256 1257 1258 1259 1260
| flashMode | [FlashMode](#flashmode) | 是   | 指定闪光灯模式。       |

**返回值:**

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

**示例:**

Z
zengyawen 已提交
1264
```js
1265 1266 1267
try {
    captureSession.setFlashMode(camera.FlashMode.FLASH_MODE_AUTO);
} catch (error) {
1268
    // 失败返回错误码error.code并处理
1269 1270
    console.log(error.code);
}
N
nikhilraut 已提交
1271 1272
```

1273
### getFlashMode
J
jiangminyang 已提交
1274

1275
getFlashMode(): FlashMode
J
jiangminyang 已提交
1276

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

Z
zengyawen 已提交
1279
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
1280 1281 1282

**返回值:**

1283 1284
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1285
| [FlashMode](#flashmode)    | 获取当前设备的闪光灯模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
1286 1287 1288

**示例:**

Z
zengyawen 已提交
1289
```js
1290 1291 1292
try {
    let flashMode = captureSession.getFlashMode();
} catch (error) {
1293
    // 失败返回错误码error.code并处理
1294 1295
    console.log(error.code);
}
N
nikhilraut 已提交
1296 1297
```

J
jiangminyang 已提交
1298
### isExposureModeSupported
J
jiangminyang 已提交
1299

1300
isExposureModeSupported(aeMode: ExposureMode): boolean;
J
jiangminyang 已提交
1301

1302
检测曝光模式是否支持。
Z
zengyawen 已提交
1303 1304 1305

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

J
jiangminyang 已提交
1306
**参数:**
J
jiangminyang 已提交
1307

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

J
jiangminyang 已提交
1312
**返回值:**
Z
zengyawen 已提交
1313

1314 1315
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1316
| boolean    | 获取是否支持曝光模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1317 1318 1319 1320

**示例:**

```js
1321 1322 1323
try {
    let isSupported = captureSession.isExposureModeSupported(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
} catch (error) {
1324
    // 失败返回错误码error.code并处理
1325 1326
    console.log(error.code);
}
J
jiangminyang 已提交
1327 1328
```

J
jiangminyang 已提交
1329
### getExposureMode
J
jiangminyang 已提交
1330

1331
getExposureMode(): ExposureMode
J
jiangminyang 已提交
1332

1333
获取当前曝光模式。
Z
zengyawen 已提交
1334

J
jiangminyang 已提交
1335 1336 1337 1338
**系统能力:** SystemCapability.Multimedia.Camera.Core

**返回值:**

1339 1340
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1341
| [ExposureMode](#exposuremode)    | 获取当前曝光模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1342 1343 1344 1345

**示例:**

```js
1346 1347 1348
try {
    let exposureMode = captureSession.getExposureMode();
} catch (error) {
1349
    // 失败返回错误码error.code并处理
1350 1351
    console.log(error.code);
}
J
jiangminyang 已提交
1352
```
N
nikhilraut 已提交
1353

J
jiangminyang 已提交
1354
### setExposureMode
N
nikhilraut 已提交
1355

1356
setExposureMode(aeMode: ExposureMode): void
N
nikhilraut 已提交
1357

1358
设置曝光模式。
N
nikhilraut 已提交
1359

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

J
jiangminyang 已提交
1362
**参数:**
N
nikhilraut 已提交
1363

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

1368 1369 1370 1371 1372 1373
**返回值:**

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

J
jiangminyang 已提交
1374 1375 1376
**示例:**

```js
1377 1378 1379
try {
    captureSession.setExposureMode(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
} catch (error) {
1380
    // 失败返回错误码error.code并处理
1381 1382
    console.log(error.code);
}
J
jiangminyang 已提交
1383 1384
```

J
jiangminyang 已提交
1385
### getMeteringPoint
J
jiangminyang 已提交
1386

1387
getMeteringPoint(): Point
J
jiangminyang 已提交
1388

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

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

J
jiangminyang 已提交
1393
**返回值:**
N
nikhilraut 已提交
1394

1395 1396
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1397
| [Point](#point)    | 获取当前曝光点。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1398 1399 1400 1401

**示例:**

```js
1402 1403 1404
try {
    let exposurePoint = captureSession.getMeteringPoint();
} catch (error) {
1405
    // 失败返回错误码error.code并处理
1406 1407
    console.log(error.code);
}
J
jiangminyang 已提交
1408 1409
```

J
jiangminyang 已提交
1410
### setMeteringPoint
J
jiangminyang 已提交
1411

1412
setMeteringPoint(point: Point): void
J
jiangminyang 已提交
1413

1414
设置曝光区域中心点。(该接口目前为预留,将在3.2版本开放)
J
jiangminyang 已提交
1415 1416 1417

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

J
jiangminyang 已提交
1418 1419
**参数:**

M
mali 已提交
1420
| 参数名           | 类型                            | 必填 | 说明                 |
J
jiangminyang 已提交
1421 1422 1423
| ------------- | -------------------------------| ---- | ------------------- |
| exposurePoint | [Point](#point)                | 是   | 曝光点。              |

1424 1425 1426 1427 1428 1429
**返回值:**

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

J
jiangminyang 已提交
1430 1431 1432
**示例:**

```js
1433 1434 1435 1436
const exposurePoint = {x: 1, y: 1};
try {
    captureSession.setMeteringPoint(exposurePoint);
} catch (error) {
1437
    // 失败返回错误码error.code并处理
1438 1439
    console.log(error.code);
}
J
jiangminyang 已提交
1440 1441 1442 1443
```

### getExposureBiasRange

1444
getExposureBiasRange(): Array<number\>
J
jiangminyang 已提交
1445

1446
查询曝光补偿范围。
J
jiangminyang 已提交
1447 1448 1449 1450 1451

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

**返回值:**

1452 1453
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1454
| Array<number\>   | 获取补偿范围的数组。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1455 1456 1457 1458

**示例:**

```js
1459 1460 1461
try {
    let biasRangeArray = captureSession.getExposureBiasRange();
} catch (error) {
1462
    // 失败返回错误码error.code并处理
1463 1464
    console.log(error.code);
}
J
jiangminyang 已提交
1465 1466 1467 1468
```

### setExposureBias

1469
setExposureBias(exposureBias: number): void
J
jiangminyang 已提交
1470

1471
设置曝光补偿。
J
jiangminyang 已提交
1472 1473 1474 1475 1476 1477 1478

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

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

**参数:**

M
mali 已提交
1479
| 参数名     | 类型                            | 必填 | 说明                 |
J
jiangminyang 已提交
1480
| -------- | -------------------------------| ---- | ------------------- |
1481
| exposureBias   | number                   | 是   | 曝光补偿,getExposureBiasRange查询支持的范围,接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1482 1483 1484 1485

**示例:**

```js
M
mali 已提交
1486
let exposureBias = biasRangeArray[0];
1487 1488 1489
try {
    captureSession.setExposureBias(exposureBias);
} catch (error) {
1490
    // 失败返回错误码error.code并处理
1491 1492
    console.log(error.code);
}
J
jiangminyang 已提交
1493 1494 1495 1496
```

### getExposureValue

1497
getExposureValue(): number
J
jiangminyang 已提交
1498

1499
查询当前曝光值。
J
jiangminyang 已提交
1500 1501 1502 1503 1504

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

**返回值:**

1505 1506
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1507
| number    | 获取曝光值。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1508 1509 1510 1511

**示例:**

```js
1512 1513 1514
try {
    let exposureValue = captureSession.getExposureValue();
} catch (error) {
1515
    // 失败返回错误码error.code并处理
1516 1517
    console.log(error.code);
}
J
jiangminyang 已提交
1518 1519 1520 1521
```

### isFocusModeSupported

1522
isFocusModeSupported(afMode: FocusMode): boolean
J
jiangminyang 已提交
1523

1524
检测对焦模式是否支持。
J
jiangminyang 已提交
1525 1526 1527 1528 1529

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

**参数:**

M
mali 已提交
1530
| 参数名      | 类型                     | 必填 | 说明                              |
J
jiangminyang 已提交
1531 1532 1533 1534 1535
| -------- | ----------------------- | ---- | -------------------------------- |
| afMode   | [FocusMode](#focusmode) | 是   | 指定的焦距模式。                    |

**返回值:**

1536 1537
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1538
| boolean    | 返回true表示支持该焦距模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1539 1540 1541 1542

**示例:**

```js
1543 1544 1545
try {
    let status = captureSession.isFocusModeSupported(camera.FocusMode.FOCUS_MODE_AUTO);
} catch (error) {
1546
    // 失败返回错误码error.code并处理
1547 1548
    console.log(error.code);
}
J
jiangminyang 已提交
1549 1550 1551 1552
```

### setFocusMode

1553
setFocusMode(afMode: FocusMode): void
J
jiangminyang 已提交
1554

1555
设置对焦模式。
J
jiangminyang 已提交
1556

J
jiangminyang 已提交
1557
进行设置之前,需要先检查设备是否支持指定的焦距模式,可使用方法[isFocusModeSupported](#isfocusmodesupported)
J
jiangminyang 已提交
1558 1559 1560 1561 1562

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

**参数:**

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

1567 1568 1569 1570 1571 1572
**返回值:**

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

J
jiangminyang 已提交
1573 1574 1575
**示例:**

```js
1576 1577 1578
try {
    captureSession.setFocusMode(camera.FocusMode.FOCUS_MODE_AUTO);
} catch (error) {
1579
    // 失败返回错误码error.code并处理
1580 1581
    console.log(error.code);
}
J
jiangminyang 已提交
1582 1583 1584 1585
```

### getFocusMode

1586
getFocusMode(): FocusMode
J
jiangminyang 已提交
1587

1588
获取当前的对焦模式。
J
jiangminyang 已提交
1589 1590 1591 1592 1593

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

**返回值:**

1594 1595
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1596
| [FocusMode](#focusmode)   | 获取当前设备的焦距模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1597 1598 1599 1600

**示例:**

```js
1601 1602 1603
try {
    let afMode = captureSession.getFocusMode();
} catch (error) {
1604
    // 失败返回错误码error.code并处理
1605 1606
    console.log(error.code);
}
J
jiangminyang 已提交
1607 1608 1609 1610
```

### setFocusPoint

1611
setFocusPoint(point: Point): void
J
jiangminyang 已提交
1612

1613
设置焦点。
J
jiangminyang 已提交
1614 1615 1616 1617 1618

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

**参数:**

M
mali 已提交
1619
| 参数名      | 类型                     | 必填 | 说明                 |
J
jiangminyang 已提交
1620
| -------- | ----------------------- | ---- | ------------------- |
1621
| Point1    | [Point](#point)         | 是   | 焦点。                |
J
jiangminyang 已提交
1622

1623 1624 1625 1626 1627 1628
**返回值:**

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

J
jiangminyang 已提交
1629 1630 1631 1632
**示例:**

```js
const Point1 = {x: 1, y: 1};
1633 1634 1635
try {
    captureSession.setFocusPoint(Point1);
} catch (error) {
1636
    // 失败返回错误码error.code并处理
1637 1638
    console.log(error.code);
}
J
jiangminyang 已提交
1639 1640 1641 1642
```

### getFocusPoint

1643
getFocusPoint(): Point
J
jiangminyang 已提交
1644

1645
查询焦点。
J
jiangminyang 已提交
1646 1647 1648 1649 1650

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

**返回值:**

1651 1652
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1653
| [Point](#point)    | 用于获取当前焦点。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1654 1655 1656 1657

**示例:**

```js
1658 1659 1660
try {
    let point = captureSession.getFocusPoint();
} catch (error) {
1661
    // 失败返回错误码error.code并处理
1662 1663
    console.log(error.code);
}
J
jiangminyang 已提交
1664 1665 1666 1667
```

### getFocalLength

1668
getFocalLength(): number
J
jiangminyang 已提交
1669

1670
查询焦距值。
J
jiangminyang 已提交
1671 1672 1673 1674 1675

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

**返回值:**

1676 1677
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1678
| number    | 用于获取当前焦距。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1679 1680 1681 1682

**示例:**

```js
1683 1684 1685
try {
    let focalLength = captureSession.getFocalLength();
} catch (error) {
1686
    // 失败返回错误码error.code并处理
1687 1688
    console.log(error.code);
}
J
jiangminyang 已提交
1689 1690 1691 1692
```

### getZoomRatioRange

1693
getZoomRatioRange(): Array<number\>
J
jiangminyang 已提交
1694

1695
获取支持的变焦范围。
J
jiangminyang 已提交
1696 1697 1698

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

1699
**返回值:**
J
jiangminyang 已提交
1700

1701 1702
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1703
| Array<number\>   | 用于获取可变焦距比范围,返回的数组包括其最小值和最大值。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1704 1705 1706 1707

**示例:**

```js
1708 1709 1710
try {
    let zoomRatioRange = captureSession.getZoomRatioRange();
} catch (error) {
1711
    // 失败返回错误码error.code并处理
1712 1713
    console.log(error.code);
}
J
jiangminyang 已提交
1714 1715
```

1716
### setZoomRatio
J
jiangminyang 已提交
1717

1718
setZoomRatio(zoomRatio: number): void
J
jiangminyang 已提交
1719

1720
设置变焦比。
J
jiangminyang 已提交
1721 1722 1723

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

1724
**参数:**
J
jiangminyang 已提交
1725

1726 1727 1728
| 参数名       | 类型                  | 必填 | 说明                 |
| --------- | -------------------- | ---- | ------------------- |
| zoomRatio | number               | 是   | 可变焦距比,通过getZoomRatioRange获取支持的变焦范围 |
J
jiangminyang 已提交
1729

1730 1731 1732 1733 1734 1735
**返回值:**

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

J
jiangminyang 已提交
1736 1737 1738
**示例:**

```js
1739 1740 1741 1742
let zoomRatio = zoomRatioRange[0];
try {
    captureSession.setZoomRatio(zoomRatio);
} catch (error) {
1743
    // 失败返回错误码error.code并处理
1744 1745
    console.log(error.code);
}
J
jiangminyang 已提交
1746 1747
```

1748
### getZoomRatio
J
jiangminyang 已提交
1749

1750
getZoomRatio(): number
J
jiangminyang 已提交
1751

1752
获取当前的变焦比。
J
jiangminyang 已提交
1753 1754 1755

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

1756
**返回值:**
J
jiangminyang 已提交
1757

1758 1759
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1760
| number    | 获取当前的变焦比结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1761 1762 1763 1764

**示例:**

```js
1765 1766 1767
try {
    let zoomRatio = captureSession.getZoomRatio();
} catch (error) {
1768
    // 失败返回错误码error.code并处理
1769 1770
    console.log(error.code);
}
J
jiangminyang 已提交
1771 1772
```

1773
### isVideoStabilizationModeSupported
J
jiangminyang 已提交
1774

1775
isVideoStabilizationModeSupported(vsMode: VideoStabilizationMode): boolean
J
jiangminyang 已提交
1776

1777
查询是否支持指定的视频防抖模式。
J
jiangminyang 已提交
1778 1779 1780

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

1781 1782 1783 1784 1785 1786
**参数:**

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

J
jiangminyang 已提交
1787 1788
**返回值:**

1789 1790
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1791
| boolean    | 返回视频防抖模式是否支持。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1792 1793 1794 1795

**示例:**

```js
1796 1797 1798
try {
    let isSupported = captureSession.isVideoStabilizationModeSupported(camera.VideoStabilizationMode.OFF);
} catch (error) {
1799
    // 失败返回错误码error.code并处理
1800 1801
    console.log(error.code);
}
J
jiangminyang 已提交
1802 1803
```

1804
### getActiveVideoStabilizationMode
J
jiangminyang 已提交
1805

1806
getActiveVideoStabilizationMode(): VideoStabilizationMode
J
jiangminyang 已提交
1807

1808
查询当前正在使用的视频防抖模式。
J
jiangminyang 已提交
1809 1810 1811

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

1812
**返回值:**
J
jiangminyang 已提交
1813

1814 1815
| 类型        | 说明                          |
| ---------- | ----------------------------- |
1816
| VideoStabilizationMode    | 视频防抖是否正在使用。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1817 1818 1819 1820

**示例:**

```js
1821 1822 1823
try {
    let vsMode = captureSession.getActiveVideoStabilizationMode();
} catch (error) {
1824
    // 失败返回错误码error.code并处理
1825 1826
    console.log(error.code);
}
J
jiangminyang 已提交
1827 1828 1829 1830
```

### setVideoStabilizationMode

1831
setVideoStabilizationMode(mode: VideoStabilizationMode): void
J
jiangminyang 已提交
1832

1833
设置视频防抖模式。
J
jiangminyang 已提交
1834 1835 1836 1837 1838

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

**参数:**

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

1843 1844 1845 1846 1847 1848
**返回值:**

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

J
jiangminyang 已提交
1849 1850 1851
**示例:**

```js
1852 1853 1854
try {
    captureSession.setVideoStabilizationMode(camera.VideoStabilizationMode.OFF);
} catch (error) {
1855
    // 失败返回错误码error.code并处理
1856 1857
    console.log(error.code);
}
J
jiangminyang 已提交
1858 1859 1860 1861 1862 1863
```

### on('focusStateChange')

on(type: 'focusStateChange', callback: AsyncCallback<FocusState\>): void

J
jiangminyang 已提交
1864
监听焦距的状态变化,通过注册回调函数获取结果。
J
jiangminyang 已提交
1865 1866 1867 1868 1869

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

**参数:**

M
mali 已提交
1870
| 参数名     | 类型                                      | 必填 | 说明                       |
J
jiangminyang 已提交
1871 1872 1873 1874 1875 1876 1877
| -------- | ----------------------------------------- | ---- | ------------------------ |
| type     | string                                    | 是   | 监听事件,固定为'focusStateChange',即焦距状态变化事件。 |
| callback | AsyncCallback<[FocusState](#focusstate)\> | 是   | 回调函数,用于获取焦距状态。  |

**示例:**

```js
J
jiangminyang 已提交
1878
captureSession.on('focusStateChange', (focusState) => {
J
jiangminyang 已提交
1879 1880 1881 1882 1883 1884
    console.log(`Focus state  : ${focusState}`);
})
```

### on('error')

1885
on(type: 'error', callback: ErrorCallback<BusinessError\>): void
J
jiangminyang 已提交
1886 1887 1888 1889 1890 1891 1892

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

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

**参数:**

M
mali 已提交
1893
| 参数名     | 类型                                                          | 必填 | 说明                           |
J
jiangminyang 已提交
1894 1895
| -------- | ----------------------------------------------------------- | ---- | ------------------------------ |
| type     | string                                                      | 是   | 监听事件,固定为'error',即拍照会话错误事件。 |
1896
| callback | ErrorCallback<BusinessError\> | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)        |
J
jiangminyang 已提交
1897 1898 1899 1900

**示例:**

```js
1901 1902
captureSession.on('error', (error) => {
    console.log(`Capture session error code: ${error.code}`);
J
jiangminyang 已提交
1903 1904 1905 1906 1907 1908 1909
})
```

## CameraOutput

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

M
mali 已提交
1910
## PreviewOutput
J
jiangminyang 已提交
1911

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

M
mali 已提交
1914 1915 1916 1917 1918
### start

start(callback: AsyncCallback<void\>): void

开始输出预览流,通过注册回调函数获取结果。
J
jiangminyang 已提交
1919 1920 1921 1922 1923

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

**参数:**

M
mali 已提交
1924
| 参数名      | 类型                  | 必填 | 说明                 |
M
mali 已提交
1925
| -------- | -------------------- | ---- | -------------------- |
1926
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
1927 1928 1929 1930

**示例:**

```js
M
mali 已提交
1931
previewOutput.start((err) => {
J
jiangminyang 已提交
1932
    if (err) {
M
mali 已提交
1933
        console.error(`Failed to start the previewOutput. ${err.message}`);
1934
        console.error(`Failed to start the previewOutput. ${err.code}`);
J
jiangminyang 已提交
1935 1936
        return;
    }
M
mali 已提交
1937 1938
    console.log('Callback returned with previewOutput started.');
})
J
jiangminyang 已提交
1939 1940
```

M
mali 已提交
1941
### start
J
jiangminyang 已提交
1942

M
mali 已提交
1943
start(): Promise<void\>
J
jiangminyang 已提交
1944

M
mali 已提交
1945
开始输出预览流,通过Promise获取结果。
J
jiangminyang 已提交
1946 1947 1948 1949 1950 1951 1952

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

**返回值:**

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

**示例:**

```js
M
mali 已提交
1958 1959
previewOutput.start().then(() => {
    console.log('Promise returned with previewOutput started.');
1960 1961 1962 1963
}).catch((err) => {
    console.log('Failed to previewOutput start '+ err.message);
    console.log('Failed to previewOutput start '+ err.code);
});
J
jiangminyang 已提交
1964 1965
```

M
mali 已提交
1966
### stop
J
jiangminyang 已提交
1967

M
mali 已提交
1968
stop(callback: AsyncCallback<void\>): void
J
jiangminyang 已提交
1969

M
mali 已提交
1970
停止输出预览流,通过注册回调函数获取结果。
J
jiangminyang 已提交
1971 1972 1973 1974 1975

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

**参数:**

M
mali 已提交
1976
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
1977 1978 1979 1980 1981 1982
| -------- | -------------------- | ---- | -------------------- |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。 |

**示例:**

```js
M
mali 已提交
1983
previewOutput.stop((err) => {
J
jiangminyang 已提交
1984
    if (err) {
M
mali 已提交
1985
        console.error(`Failed to stop the previewOutput. ${err.message}`);
J
jiangminyang 已提交
1986 1987
        return;
    }
M
mali 已提交
1988
    console.log('Callback returned with previewOutput stopped.');
J
jiangminyang 已提交
1989 1990 1991
})
```

M
mali 已提交
1992
### stop
J
jiangminyang 已提交
1993

M
mali 已提交
1994
stop(): Promise<void\>
J
jiangminyang 已提交
1995

M
mali 已提交
1996
停止输出预览流,通过Promise获取结果。
J
jiangminyang 已提交
1997 1998 1999 2000 2001 2002

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

**返回值:**

| 类型            | 说明                     |
M
mali 已提交
2003
| -------------- | ------------------------ |
J
jiangminyang 已提交
2004 2005 2006 2007 2008
| Promise<void\> | 使用Promise的方式获取结果。 |

**示例:**

```js
M
mali 已提交
2009 2010
previewOutput.stop().then(() => {
    console.log('Callback returned with previewOutput stopped.');
2011 2012 2013
}).catch((err) => {
    console.log('Failed to previewOutput stop '+ err.message);
});
J
jiangminyang 已提交
2014 2015
```

M
mali 已提交
2016
### release
J
jiangminyang 已提交
2017

M
mali 已提交
2018
release(callback: AsyncCallback<void\>): void
J
jiangminyang 已提交
2019

M
mali 已提交
2020
释放输出资源,通过注册回调函数获取结果。
J
jiangminyang 已提交
2021 2022 2023 2024 2025

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

**参数:**

M
mali 已提交
2026
| 参数名      | 类型                  | 必填 | 说明                 |
M
mali 已提交
2027
| -------- | -------------------- | ---- | ------------------- |
2028
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
2029 2030 2031 2032

**示例:**

```js
M
mali 已提交
2033
previewOutput.release((err) => {
J
jiangminyang 已提交
2034
    if (err) {
M
mali 已提交
2035
        console.error(`Failed to release the PreviewOutput instance ${err.message}`);
2036
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
J
jiangminyang 已提交
2037 2038
        return;
    }
M
mali 已提交
2039 2040
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
J
jiangminyang 已提交
2041 2042
```

M
mali 已提交
2043
### release
J
jiangminyang 已提交
2044

M
mali 已提交
2045
release(): Promise<void\>
J
jiangminyang 已提交
2046

M
mali 已提交
2047
释放输出资源,通过Promise获取结果。
J
jiangminyang 已提交
2048 2049 2050 2051 2052 2053

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

**返回值:**

| 类型            | 说明                     |
M
mali 已提交
2054
| -------------- | ----------------------- |
2055
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
2056 2057 2058 2059

**示例:**

```js
M
mali 已提交
2060 2061
previewOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
2062 2063 2064 2065
}).catch((err) => {
    console.log('Failed to previewOutput release '+ err.message);
    console.log('Failed to previewOutput release '+ err.code);
});
J
jiangminyang 已提交
2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077
```

### on('frameStart')

on(type: 'frameStart', callback: AsyncCallback<void\>): void

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

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

**参数:**

M
mali 已提交
2078
| 参数名      | 类型                  | 必填 | 说明                                     |
J
jiangminyang 已提交
2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100
| -------- | -------------------- | ---- | --------------------------------------- |
| type     | string               | 是   | 监听事件,固定为'frameStart',即帧启动事件。 |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。                     |

**示例:**

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

### on('frameEnd')

on(type: 'frameEnd', callback: AsyncCallback<void\>): void

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

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

**参数:**

M
mali 已提交
2101
| 参数名      | 类型                  | 必填 | 说明                                  |
J
jiangminyang 已提交
2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115
| -------- | -------------------- | ---- | ------------------------------------- |
| type     | string               | 是   | 监听事件,固定为'frameEnd',即帧结束事件。 |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。                  |

**示例:**

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

### on('error')

2116
on(type: 'error', callback: ErrorCallback<BusinessError\>): void
J
jiangminyang 已提交
2117 2118 2119 2120 2121 2122 2123

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

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

**参数:**

M
mali 已提交
2124
| 参数名     | 类型                                                               | 必填 | 说明                       |
J
jiangminyang 已提交
2125 2126
| -------- | ----------------------------------------------------------------- | ---- | ------------------------ |
| type     | string                                               | 是   | 监听事件,固定为'error',即预览输出错误事件。|
2127
| callback | ErrorCallback<BusinessError\> | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)  |
J
jiangminyang 已提交
2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151

**示例:**

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

## ImageRotation

枚举,图片旋转角度。

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

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

## Location

J
jiangminyang 已提交
2152
图片地理位置信息。
J
jiangminyang 已提交
2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176

**系统能力:** 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 已提交
2177
拍摄照片的设置。
J
jiangminyang 已提交
2178 2179 2180

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

M
mali 已提交
2181 2182 2183 2184 2185 2186
| 名称      | 类型                            | 必填  | 说明              |
| -------- | ------------------------------- | ---- | -----------------|
| quality  | [QualityLevel](#qualitylevel)   | 否   | 图片质量。         |
| rotation | [ImageRotation](#imagerotation) | 否   | 图片旋转角度。      |
| location | [Location](#location)           | 否   | 图片地理位置信息。   |
| mirror   | boolean                         | 否   |镜像使能开关(默认关)。 |
J
jiangminyang 已提交
2187 2188 2189

## PhotoOutput

M
mali 已提交
2190
拍照会话中使用的输出信息,继承[CameraOutput](#cameraoutput)
J
jiangminyang 已提交
2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201

### capture

capture(callback: AsyncCallback<void\>): void

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

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

**参数:**

M
mali 已提交
2202
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
2203
| -------- | -------------------- | ---- | ------------------- |
2204
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
2205 2206 2207 2208 2209 2210 2211

**示例:**

```js
photoOutput.capture((err) => {
    if (err) {
        console.error(`Failed to capture the photo ${err.message}`);
2212
        console.error(`Failed to capture the photo ${err.code}`);
J
jiangminyang 已提交
2213 2214 2215 2216 2217 2218 2219 2220
        return;
    }
    console.log('Callback invoked to indicate the photo capture request success.');
});
```

### capture

2221 2222 2223 2224 2225 2226 2227 2228 2229 2230
capture(): Promise<void\>

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

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

**返回值:**

| 类型            | 说明                     |
| -------------- | ------------------------ |
2231
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
2232 2233 2234 2235 2236 2237

**示例:**

```js
photoOutput.capture().then(() => {
    console.log('Promise returned to indicate that photo capture request success.');
2238 2239 2240 2241
}).catch((err) => {
    console.log('Failed to photoOutput capture '+ err.message);
    console.log('Failed to photoOutput capture '+ err.code);
});
2242 2243 2244 2245
```

### capture

J
jiangminyang 已提交
2246 2247 2248 2249 2250 2251 2252 2253
capture(setting: PhotoCaptureSetting, callback: AsyncCallback<void\>): void

以指定参数触发一次拍照,通过注册回调函数获取结果。

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

**参数:**

M
mali 已提交
2254
| 参数名      | 类型                                         | 必填 | 说明                  |
J
jiangminyang 已提交
2255 2256
| -------- | ------------------------------------------- | ---- | -------------------- |
| setting  | [PhotoCaptureSetting](#photocapturesetting) | 是   | 拍照设置。             |
2257
| callback | AsyncCallback<void\>                        | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode)  |
J
jiangminyang 已提交
2258 2259 2260 2261

**示例:**

```js
M
mali 已提交
2262 2263 2264 2265 2266 2267 2268 2269 2270 2271
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 已提交
2272 2273
}
photoOutput.capture(settings, (err) => {
Z
zengyawen 已提交
2274
    if (err) {
J
jiangminyang 已提交
2275
        console.error(`Failed to capture the photo ${err.message}`);
2276
        console.error(`Failed to capture the photo ${err.code}`);
Z
zengyawen 已提交
2277 2278 2279 2280
        return;
    }
    console.log('Callback invoked to indicate the photo capture request success.');
});
J
jiangminyang 已提交
2281 2282
```

J
jiangminyang 已提交
2283 2284 2285 2286 2287 2288 2289 2290 2291 2292
### capture

capture(setting?: PhotoCaptureSetting): Promise<void\>

以指定参数触发一次拍照,通过Promise获取结果。

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

**参数:**

M
mali 已提交
2293
| 参数名     | 类型                                         | 必填 | 说明      |
J
jiangminyang 已提交
2294 2295 2296 2297 2298 2299 2300
| ------- | ------------------------------------------- | ---- | -------- |
| setting | [PhotoCaptureSetting](#photocapturesetting) | 否   | 拍照设置。 |

**返回值:**

| 类型            | 说明                     |
| -------------- | ------------------------ |
2301
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
2302 2303 2304 2305 2306


**示例:**

```js
2307
photoOutput.capture(settings).then(() => {
J
jiangminyang 已提交
2308
    console.log('Promise returned to indicate that photo capture request success.');
2309 2310 2311 2312
}).catch((err) => {
    console.log('Failed to photoOutput capture '+ err.message);
    console.log('Failed to photoOutput capture '+ err.code);
});
J
jiangminyang 已提交
2313 2314 2315 2316
```

### isMirrorSupported

2317
isMirrorSupported(): boolean
J
jiangminyang 已提交
2318

2319
查询是否支持镜像拍照。
J
jiangminyang 已提交
2320 2321 2322

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

2323
**返回值:**
J
jiangminyang 已提交
2324

2325 2326 2327
| 类型            | 说明                     |
| -------------- | ----------------------- |
| boolean | 回是否支持镜像拍照。 |
J
jiangminyang 已提交
2328 2329 2330 2331

**示例:**

```js
2332
let isSupported = photoOutput.isMirrorSupported();
J
jiangminyang 已提交
2333 2334
```

M
mali 已提交
2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346
### release

release(callback: AsyncCallback<void\>): void

释放输出资源,通过注册回调函数获取结果。

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

**参数:**

| 参数名      | 类型                  | 必填 | 说明                 |
| -------- | -------------------- | ---- | ------------------- |
2347
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
M
mali 已提交
2348 2349 2350 2351 2352 2353 2354

**示例:**

```js
photoOutput.release((err) => {
    if (err) {
        console.error(`Failed to release the PreviewOutput instance ${err.message}`);
2355
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
M
mali 已提交
2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373
        return;
    }
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
```

### release

release(): Promise<void\>

释放输出资源,通过Promise获取结果。

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

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
2374
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
M
mali 已提交
2375 2376 2377 2378 2379 2380

**示例:**

```js
photoOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
2381 2382 2383 2384
}).catch((err) => {
    console.log('Failed to photoOutput release '+ err.message);
    console.log('Failed to photoOutput release '+ err.code);
});
M
mali 已提交
2385 2386
```

J
jiangminyang 已提交
2387 2388 2389 2390 2391 2392 2393 2394 2395 2396
### on('captureStart')

on(type: 'captureStart', callback: AsyncCallback<number\>): void

监听拍照开始,通过注册回调函数获取Capture ID。

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

**参数:**

M
mali 已提交
2397
| 参数名      | 类型                    | 必填 | 说明                                       |
J
jiangminyang 已提交
2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419
| -------- | ---------------------- | ---- | ------------------------------------------ |
| type     | string                 | 是   | 监听事件,固定为'captureStart',即拍照启动事件。 |
| callback | AsyncCallback<number\> | 是   | 使用callback的方式获取Capture ID。            |

**示例:**

```js
photoOutput.on('captureStart', (err, captureId) => {
    console.log(`photo capture stated, captureId : ${captureId}`);
})
```

### on('frameShutter')

on(type: 'frameShutter', callback: AsyncCallback<FrameShutterInfo\>): void

监听拍照帧输出捕获,通过注册回调函数获取结果。

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

**参数:**

M
mali 已提交
2420
| 参数名     | 类型                                                   | 必填 | 说明                                  |
J
jiangminyang 已提交
2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434
| -------- | ----------------------------------------------------- | --- | ------------------------------------ |
| type     | string                                           | 是   | 监听事件,固定为'frameShutter',即帧刷新事件。 |
| callback | AsyncCallback<[FrameShutterInfo](#frameshutterinfo)\> | 是   | 回调函数,用于获取相关信息。             |

**示例:**

```js
photoOutput.on('frameShutter', (err, frameShutterInfo) => {
    console.log(`photo capture end, captureId : ${frameShutterInfo.captureId}`);
    console.log(`Timestamp for frame : ${frameShutterInfo.timestamp}`);
})
```

### on('captureEnd')
J
jiangminyang 已提交
2435

J
jiangminyang 已提交
2436
on(type: 'captureEnd', callback: AsyncCallback<CaptureEndInfo\>): void
J
jiangminyang 已提交
2437

J
jiangminyang 已提交
2438
监听拍照结束,通过注册回调函数获取结果。
J
jiangminyang 已提交
2439 2440 2441 2442 2443

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

**参数:**

M
mali 已提交
2444
| 参数名     | 类型                                              | 必填 | 说明                                       |
J
jiangminyang 已提交
2445 2446 2447
| -------- | ------------------------------------------------- | ---- | ---------------------------------------- |
| type     | string                                            | 是   | 监听事件,固定为'captureEnd',即拍照停止事件。 |
| callback | AsyncCallback<[CaptureEndInfo](#captureendinfo)\> | 是   | 回调函数,用于获取相关信息。                  |
J
jiangminyang 已提交
2448

J
jiangminyang 已提交
2449
**示例:**
J
jiangminyang 已提交
2450

J
jiangminyang 已提交
2451 2452 2453 2454 2455 2456 2457 2458 2459
```js
photoOutput.on('captureEnd', (err, captureEndInfo) => {
    console.log(`photo capture end, captureId : ${captureEndInfo.captureId}`);
    console.log(`frameCount : ${captureEndInfo.frameCount}`);
})
```

### on('error')

2460
on(type: 'error', callback: ErrorCallback<BusinessError\>): void
J
jiangminyang 已提交
2461 2462

监听拍照输出发生错误,通过注册回调函数获取结果。
J
jiangminyang 已提交
2463

J
jiangminyang 已提交
2464 2465 2466 2467
**系统能力:** SystemCapability.Multimedia.Camera.Core

**参数:**

M
mali 已提交
2468
| 参数名     | 类型                                                    | 必填 | 说明                                 |
J
jiangminyang 已提交
2469 2470
| -------- | ----------------------------------------------------- | ---- | ----------------------------------- |
| type     | string                                                | 是   | 监听事件,固定为'error',即拍照错误事件。 |
2471
| callback | ErrorCallback<BusinessError\> | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)             |
J
jiangminyang 已提交
2472 2473 2474 2475

**示例:**

```js
2476 2477
photoOutput.on('error', (err, error) => {
    console.log(`Photo output error code: ${error.code}`);
J
jiangminyang 已提交
2478 2479 2480
})
```

J
jiangminyang 已提交
2481
## FrameShutterInfo
J
jiangminyang 已提交
2482

J
jiangminyang 已提交
2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504
拍照帧输出信息。

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

| 名称      | 类型   | 必填 | 说明         |
| --------- | ------ | ---- | ---------- |
| captureId | number | 是   | 拍照的ID。  |
| timestamp | number | 是   | 快门时间戳。 |

## CaptureEndInfo

拍照停止信息。

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

| 名称       | 类型   | 必填 | 说明       |
| ---------- | ------ | ---- | ---------|
| captureId  | number | 是   | 拍照的ID。 |
| frameCount | number | 是   | 帧数。    |

## VideoOutput

M
mali 已提交
2505
录像会话中使用的输出信息,继承[CameraOutput](#cameraoutput)
J
jiangminyang 已提交
2506 2507 2508 2509 2510 2511

### start

start(callback: AsyncCallback<void\>): void

启动录制,通过注册回调函数获取结果。
J
jiangminyang 已提交
2512 2513 2514 2515 2516

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

**参数:**

M
mali 已提交
2517
| 参数名      | 类型                  | 必填 | 说明                 |
J
jiangminyang 已提交
2518
| -------- | -------------------- | ---- | -------------------- |
2519
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
J
jiangminyang 已提交
2520 2521 2522 2523

**示例:**

```js
J
jiangminyang 已提交
2524
videoOutput.start((err) => {
N
nikhilraut 已提交
2525
    if (err) {
J
jiangminyang 已提交
2526
        console.error(`Failed to start the video output ${err.message}`);
2527
        console.error(`Failed to start the video output ${err.code}`);
N
nikhilraut 已提交
2528 2529
        return;
    }
J
jiangminyang 已提交
2530
    console.log('Callback invoked to indicate the video output start success.');
N
nikhilraut 已提交
2531 2532 2533
});
```

J
jiangminyang 已提交
2534
### start
N
nikhilraut 已提交
2535

J
jiangminyang 已提交
2536
start(): Promise<void\>
N
nikhilraut 已提交
2537

J
jiangminyang 已提交
2538
启动录制,通过Promise获取结果。
N
nikhilraut 已提交
2539

Z
zengyawen 已提交
2540
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2541 2542 2543

**返回值:**

J
jiangminyang 已提交
2544 2545
| 类型            | 说明                     |
| -------------- | ----------------------- |
2546
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
2547 2548 2549 2550


**示例:**

Z
zengyawen 已提交
2551
```js
J
jiangminyang 已提交
2552 2553
videoOutput.start().then(() => {
    console.log('Promise returned to indicate that start method execution success.');
2554 2555 2556 2557
}).catch((err) => {
    console.log('Failed to videoOutput start '+ err.message);
    console.log('Failed to videoOutput start '+ err.code);
});
N
nikhilraut 已提交
2558 2559
```

J
jiangminyang 已提交
2560
### stop
N
nikhilraut 已提交
2561

J
jiangminyang 已提交
2562
stop(callback: AsyncCallback<void\>): void
N
nikhilraut 已提交
2563

J
jiangminyang 已提交
2564
结束录制,通过注册回调函数获取结果。
N
nikhilraut 已提交
2565

Z
zengyawen 已提交
2566
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2567 2568 2569

**参数:**

M
mali 已提交
2570
| 参数名     | 类型                 | 必填 | 说明                     |
J
jiangminyang 已提交
2571 2572
| -------- | -------------------- | ---- | ------------------------ |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。 |
N
nikhilraut 已提交
2573 2574 2575

**示例:**

Z
zengyawen 已提交
2576
```js
J
jiangminyang 已提交
2577 2578 2579 2580 2581 2582 2583
videoOutput.stop((err) => {
    if (err) {
        console.error(`Failed to stop the video output ${err.message}`);
        return;
    }
    console.log('Callback invoked to indicate the video output stop success.');
});
Z
zengyawen 已提交
2584
```
N
nikhilraut 已提交
2585

J
jiangminyang 已提交
2586
### stop
N
nikhilraut 已提交
2587

J
jiangminyang 已提交
2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604
stop(): Promise<void\>

结束录制,通过Promise获取结果。

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

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
| Promise<void\> | 使用Promise的方式获取结果。 |

**示例:**

```js
videoOutput.stop().then(() => {
    console.log('Promise returned to indicate that stop method execution success.');
2605 2606 2607
}).catch((err) => {
    console.log('Failed to videoOutput stop '+ err.message);
});
2608
```
J
jiangminyang 已提交
2609

M
mali 已提交
2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621
### release

release(callback: AsyncCallback<void\>): void

释放输出资源,通过注册回调函数获取结果。

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

**参数:**

| 参数名      | 类型                  | 必填 | 说明                 |
| -------- | -------------------- | ---- | ------------------- |
2622
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
M
mali 已提交
2623 2624 2625 2626 2627 2628 2629

**示例:**

```js
videoOutput.release((err) => {
    if (err) {
        console.error(`Failed to release the PreviewOutput instance ${err.message}`);
2630
        console.error(`Failed to release the PreviewOutput instance ${err.code}`);
M
mali 已提交
2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648
        return;
    }
    console.log('Callback invoked to indicate that the PreviewOutput instance is released successfully.');
});
```

### release

release(): Promise<void\>

释放输出资源,通过Promise获取结果。

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

**返回值:**

| 类型            | 说明                     |
| -------------- | ----------------------- |
2649
| Promise<void\> | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
M
mali 已提交
2650 2651 2652 2653 2654 2655

**示例:**

```js
videoOutput.release().then(() => {
    console.log('Promise returned to indicate that the PreviewOutput instance is released successfully.');
2656 2657 2658 2659
}).catch((err) => {
    console.log('Failed to videoOutput release '+ err.message);
    console.log('Failed to videoOutput release '+ err.code);
});
M
mali 已提交
2660 2661
```

J
jiangminyang 已提交
2662 2663 2664
### on('frameStart')

on(type: 'frameStart', callback: AsyncCallback<void\>): void
N
nikhilraut 已提交
2665

J
jiangminyang 已提交
2666
监听录像开始,通过注册回调函数获取结果。
N
nikhilraut 已提交
2667

Z
zengyawen 已提交
2668
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2669 2670 2671

**参数:**

M
mali 已提交
2672
| 参数名      | 类型                  | 必填 | 说明                                       |
J
jiangminyang 已提交
2673 2674 2675
| -------- | -------------------- | ---- | ----------------------------------------- |
| type     | string               | 是   | 监听事件,固定为'frameStart',即视频帧开启事件。 |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。                       |
N
nikhilraut 已提交
2676 2677 2678

**示例:**

Z
zengyawen 已提交
2679
```js
J
jiangminyang 已提交
2680 2681
videoOutput.on('frameStart', () => {
    console.log('Video frame started');
N
nikhilraut 已提交
2682 2683 2684
})
```

J
jiangminyang 已提交
2685
### on('frameEnd')
N
nikhilraut 已提交
2686

J
jiangminyang 已提交
2687
on(type: 'frameEnd', callback: AsyncCallback<void\>): void
N
nikhilraut 已提交
2688

J
jiangminyang 已提交
2689
监听录像结束,通过注册回调函数获取结果。
N
nikhilraut 已提交
2690

Z
zengyawen 已提交
2691
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2692 2693 2694

**参数:**

M
mali 已提交
2695
| 参数名      | 类型                  | 必填 | 说明                                       |
J
jiangminyang 已提交
2696 2697 2698
| -------- | -------------------- | ---- | ------------------------------------------ |
| type     | string               | 是   | 监听事件,固定为'frameEnd',即视频帧结束事件  。 |
| callback | AsyncCallback<void\> | 是   | 回调函数,用于获取结果。                       |
N
nikhilraut 已提交
2699 2700 2701

**示例:**

Z
zengyawen 已提交
2702
```js
J
jiangminyang 已提交
2703 2704
videoOutput.on('frameEnd', () => {
    console.log('Video frame ended');
N
nikhilraut 已提交
2705 2706 2707
})
```

J
jiangminyang 已提交
2708
### on('error')
N
nikhilraut 已提交
2709

2710
on(type: 'error', callback: ErrorCallback<BusinessError\>): void
N
nikhilraut 已提交
2711

J
jiangminyang 已提交
2712
监听录像输出发生错误,通过注册回调函数获取结果。
N
nikhilraut 已提交
2713

Z
zengyawen 已提交
2714
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2715 2716 2717

**参数:**

M
mali 已提交
2718
| 参数名     | 类型                                               | 必填 | 说明                                    |
J
jiangminyang 已提交
2719 2720
| -------- | ------------------------------------------------ | ---- | -------------------------------------- |
| type     | string                                           | 是   | 监听事件,固定为'error',即视频输出错误事件。 |
2721
| callback | Callback<BusinessError\> | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)                 |
N
nikhilraut 已提交
2722 2723 2724

**示例:**

Z
zengyawen 已提交
2725
```js
2726 2727
videoOutput.on('error', (error) => {
    console.log(`Video output error code: ${error.code}`);
N
nikhilraut 已提交
2728 2729 2730
})
```

M
mali 已提交
2731
## MetadataOutput
N
nikhilraut 已提交
2732

M
mali 已提交
2733
metadata流。继承[CameraOutput](#cameraoutput)
N
nikhilraut 已提交
2734

M
mali 已提交
2735
### start
J
jiangminyang 已提交
2736

M
mali 已提交
2737
start(callback: AsyncCallback<void\>): void
J
jiangminyang 已提交
2738

M
mali 已提交
2739
开始输出metadata,通过注册回调函数获取结果。
N
nikhilraut 已提交
2740

Z
zengyawen 已提交
2741
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2742 2743 2744

**参数:**

M
mali 已提交
2745
| 参数名     | 类型                                                         | 必填 | 说明                 |
2746 2747
| -------- | -------------------------- | ---- | ------------------- |
| callback | AsyncCallback<void\>       | 是   | 回调函数,用于获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
2748 2749 2750

**示例:**

Z
zengyawen 已提交
2751
```js
M
mali 已提交
2752
metadataOutput.start((err) => {
N
nikhilraut 已提交
2753
    if (err) {
M
mali 已提交
2754
        console.error(`Failed to start metadataOutput. ${err.message}`);
2755
        console.error(`Failed to start metadataOutput. ${err.code}`);
N
nikhilraut 已提交
2756 2757
        return;
    }
M
mali 已提交
2758
    console.log('Callback returned with metadataOutput started.');
J
jiangminyang 已提交
2759
})
Z
zengyawen 已提交
2760
```
N
nikhilraut 已提交
2761

M
mali 已提交
2762
### start
N
nikhilraut 已提交
2763

M
mali 已提交
2764
start(): Promise<void\>
N
nikhilraut 已提交
2765

M
mali 已提交
2766
开始输出metadata,通过Promise获取结果。
N
nikhilraut 已提交
2767

Z
zengyawen 已提交
2768
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2769 2770 2771

**返回值:**

M
mali 已提交
2772 2773
| 类型                     | 说明                     |
| ----------------------  | ------------------------ |
2774
| Promise<void\>          | 使用Promise的方式获取结果。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](#cameraerrorode) |
N
nikhilraut 已提交
2775 2776 2777

**示例:**

Z
zengyawen 已提交
2778
```js
M
mali 已提交
2779 2780
metadataOutput.start().then(() => {
    console.log('Callback returned with metadataOutput started.');
2781 2782 2783 2784
}).catch((err) => {
    console.log('Failed to metadataOutput start '+ err.message);
    console.log('Failed to metadataOutput start '+ err.code);
});
N
nikhilraut 已提交
2785 2786
```

M
mali 已提交
2787
### stop
N
nikhilraut 已提交
2788

M
mali 已提交
2789
stop(callback: AsyncCallback<void\>): void
N
nikhilraut 已提交
2790

M
mali 已提交
2791
停止输出metadata,通过注册回调函数获取结果。
N
nikhilraut 已提交
2792

Z
zengyawen 已提交
2793
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2794 2795 2796

**参数:**

M
mali 已提交
2797 2798 2799
| 参数名     | 类型                         | 必填 | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| callback | AsyncCallback<void\>       | 是   | 回调函数,用于获取结果。 |
N
nikhilraut 已提交
2800 2801 2802

**示例:**

Z
zengyawen 已提交
2803
```js
M
mali 已提交
2804
metadataOutput.stop((err) => {
N
nikhilraut 已提交
2805
    if (err) {
M
mali 已提交
2806
        console.error(`Failed to stop the metadataOutput. ${err.message}`);
N
nikhilraut 已提交
2807 2808
        return;
    }
M
mali 已提交
2809
    console.log('Callback returned with metadataOutput stopped.');
J
jiangminyang 已提交
2810
})
N
nikhilraut 已提交
2811 2812
```

M
mali 已提交
2813
### stop
N
nikhilraut 已提交
2814

M
mali 已提交
2815
stop(): Promise<void\>
N
nikhilraut 已提交
2816

M
mali 已提交
2817
停止输出metadata,通过Promise获取结果。
N
nikhilraut 已提交
2818

Z
zengyawen 已提交
2819
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2820 2821 2822

**返回值:**

M
mali 已提交
2823 2824 2825
| 类型                    | 说明                        |
| ----------------------  | --------------------------- |
| Promise<void\>         | 使用Promise的方式获取结果。 |
N
nikhilraut 已提交
2826 2827 2828

**示例:**

Z
zengyawen 已提交
2829
```js
M
mali 已提交
2830 2831
metadataOutput.stop().then(() => {
    console.log('Callback returned with metadataOutput stopped.');
2832 2833 2834
}).catch((err) => {
    console.log('Failed to metadataOutput stop '+ err.message);
});
N
nikhilraut 已提交
2835 2836
```

M
mali 已提交
2837
### on('metadataObjectsAvailable')
N
nikhilraut 已提交
2838

M
mali 已提交
2839
on(type: 'metadataObjectsAvailable', callback: AsyncCallback<Array<MetadataObject\>\>): void
N
nikhilraut 已提交
2840

M
mali 已提交
2841
监听检测到的metadata对象,通过注册回调函数获取结果。
N
nikhilraut 已提交
2842

Z
zengyawen 已提交
2843
**系统能力:** SystemCapability.Multimedia.Camera.Core
N
nikhilraut 已提交
2844 2845 2846

**参数:**

M
mali 已提交
2847 2848 2849 2850
| 参数名      | 类型                                                  | 必填 | 说明                                  |
| -------- | ------------------------------------------------ | ---- | ------------------------------------ |
| type     | string                            | 是   | 监听事件,固定为'metadataObjectsAvailable',即metadata对象。 |
| callback | Callback<Array<[MetadataObject](#metadataobject)\>\> | 是   | 回调函数,用于获取错误信息。               |
N
nikhilraut 已提交
2851 2852 2853

**示例:**

Z
zengyawen 已提交
2854
```js
M
mali 已提交
2855 2856
metadataOutput.on('metadataObjectsAvailable', (metadataObjectArr) => {
    console.log(`metadata output metadataObjectsAvailable`);
J
jiangminyang 已提交
2857
})
N
nikhilraut 已提交
2858 2859
```

M
mali 已提交
2860
### on('error')
N
nikhilraut 已提交
2861

2862
on(type: 'error', callback: ErrorCallback<BusinessError\>): void
N
nikhilraut 已提交
2863

M
mali 已提交
2864
监听metadata流的错误,通过注册回调函数获取结果。
N
nikhilraut 已提交
2865

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

M
mali 已提交
2868
**参数:**
N
nikhilraut 已提交
2869

M
mali 已提交
2870 2871 2872
| 参数名     | 类型                                               | 必填 | 说明                                     |
| -------- | ------------------------------------------------ | ---- | --------------------------------------- |
| type     | string                                           | 是   | 监听事件,固定为'error',即metadata流的错误。 |
2873
| callback | Callback<BusinessError\> | 是   | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](#cameraerrorode)            |
N
nikhilraut 已提交
2874 2875 2876

**示例:**

Z
zengyawen 已提交
2877
```js
M
mali 已提交
2878 2879
metadataOutput.on('error', (metadataOutputError) => {
    console.log(`Metadata output error code: ${metadataOutputError.code}`);
N
nikhilraut 已提交
2880 2881 2882
})
```

M
mali 已提交
2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907
## MetadataObjectType

枚举,metadata流。

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

| 名称                       | 值   | 说明              |
| ------------------------- | ---- | ----------------- |
| FACE_DETECTION            | 0    | metadata对象类型。 |

## Rect

矩形定义。

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

| 名称      | 类型   |      必填     |           说明                 |
| -------- | ------ | --------------- | -------------------- |
| topLeftX | number |        是          | 矩形区域左上角x坐标。   |
| topLeftY | number |         是          | 矩形区域左上角y坐标。   |
| width    | number |         是         | 矩形宽。              |
| height   | number |         是           |矩形高。              |

## MetadataObject

M
mali 已提交
2908
相机元能力信息,[CameraInput](#camerainput)相机信息中的数据来源,通过metadataOutput.on('metadataObjectsAvailable')接口获取
M
mali 已提交
2909

2910 2911 2912 2913 2914
| 名称      | 类型                            | 必填  | 说明              |
| -------- | ------------------------------- | ---- | -----------------|
| type  | [MetadataObjectType](#metadataobjecttype)   | 否   | 图片质量。         |
| timestamp | number | 否   | 图片旋转角度。      |
| boundingBox | [Rect](#rect)           | 否   | 图片地理位置信息。   |