• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Interface (AutoExposure)
2<!--Kit: Camera Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @qano-->
5<!--Designer: @leo_ysl-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **说明:**
10>
11> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
12> - 本Interface首批接口从API version 11开始支持。
13
14AutoExposure 继承自 [AutoExposureQuery](arkts-apis-camera-AutoExposureQuery.md)。
15
16自动曝光类,对设备自动曝光(AE)操作。
17
18## 导入模块
19
20```ts
21import { camera } from '@kit.CameraKit';
22```
23
24## getExposureMode<sup>11+</sup>
25
26getExposureMode(): ExposureMode
27
28获取当前曝光模式。
29
30> **说明:**
31>
32> 若未通过[setExposureMode](arkts-apis-camera-AutoExposure.md#setexposuremode11)接口进行设置,直接调用该接口查询当前曝光模式,会返回无效值。
33
34**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
35
36**系统能力:** SystemCapability.Multimedia.Camera.Core
37
38**返回值:**
39
40| 类型        | 说明                          |
41| ---------- | ----------------------------- |
42| [ExposureMode](arkts-apis-camera-e.md#exposuremode)    | 获取当前曝光模式。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 |
43
44**错误码:**
45
46以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
47
48| 错误码ID         | 错误信息        |
49| --------------- | --------------- |
50| 7400103                |  Session not config.                                   |
51
52**示例:**
53
54```ts
55import { BusinessError } from '@kit.BasicServicesKit';
56
57function getExposureMode(photoSession: camera.PhotoSession): camera.ExposureMode | undefined {
58  let exposureMode: camera.ExposureMode | undefined = undefined;
59  try {
60    exposureMode = photoSession.getExposureMode();
61  } catch (error) {
62    // 失败返回错误码error.code并处理。
63    let err = error as BusinessError;
64    console.error(`The getExposureMode call failed. error code: ${err.code}`);
65  }
66  return exposureMode;
67}
68```
69
70## setExposureMode<sup>11+</sup>
71
72setExposureMode(aeMode: ExposureMode): void
73
74设置曝光模式。进行设置之前,需要先检查设备是否支持指定的曝光模式,可使用方法[isExposureModeSupported](arkts-apis-camera-AutoExposureQuery.md#isexposuremodesupported11)。
75
76**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
77
78**系统能力:** SystemCapability.Multimedia.Camera.Core
79
80**参数:**
81
82| 参数名      | 类型                            | 必填 | 说明                    |
83| -------- | -------------------------------| ---- | ----------------------- |
84| aeMode   | [ExposureMode](arkts-apis-camera-e.md#exposuremode)  | 是   | 曝光模式。传参为null或者undefined,作为0处理,曝光锁定。                |
85
86**错误码:**
87
88以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
89
90| 错误码ID         | 错误信息        |
91| --------------- | --------------- |
92| 7400102                | Operation not allowed.                                 |
93| 7400103                |  Session not config.                                   |
94
95**示例:**
96
97```ts
98import { BusinessError } from '@kit.BasicServicesKit';
99
100function setExposureMode(photoSession: camera.PhotoSession): void {
101  try {
102    photoSession.setExposureMode(camera.ExposureMode.EXPOSURE_MODE_LOCKED);
103  } catch (error) {
104    // 失败返回错误码error.code并处理。
105    let err = error as BusinessError;
106    console.error(`The setExposureMode call failed. error code: ${err.code}`);
107  }
108}
109```
110
111## getMeteringPoint<sup>11+</sup>
112
113getMeteringPoint(): Point
114
115查询曝光区域中心点。
116
117**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
118
119**系统能力:** SystemCapability.Multimedia.Camera.Core
120
121**返回值:**
122
123| 类型        | 说明                          |
124| ---------- | ----------------------------- |
125| [Point](arkts-apis-camera-i.md#point)    | 获取当前曝光点。接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 |
126
127**错误码:**
128
129以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
130
131| 错误码ID   | 错误信息        |
132|---------| --------------- |
133| 7400103 |  Session not config.                                   |
134
135**示例:**
136
137```ts
138import { BusinessError } from '@kit.BasicServicesKit';
139
140function getMeteringPoint(photoSession: camera.PhotoSession): camera.Point | undefined {
141  let exposurePoint: camera.Point | undefined = undefined;
142  try {
143    exposurePoint = photoSession.getMeteringPoint();
144  } catch (error) {
145    // 失败返回错误码error.code并处理。
146    let err = error as BusinessError;
147    console.error(`The getMeteringPoint call failed. error code: ${err.code}`);
148  }
149  return exposurePoint;
150}
151```
152
153## setMeteringPoint<sup>11+</sup>
154
155setMeteringPoint(point: Point): void
156
157设置曝光区域中心点,曝光点应在0-1坐标系内,该坐标系左上角为{0,0},右下角为{1,1}。
158
159此坐标系是以设备充电口在右侧时的横向设备方向为基准的,例如应用的预览界面布局以设备充电口在下侧时的竖向方向为基准,布局宽高为{w,h},且触碰点为{x,y},则转换后的坐标点为{y/h,1-x/w}。
160
161**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
162
163**系统能力:** SystemCapability.Multimedia.Camera.Core
164
165**参数:**
166
167| 参数名           | 类型                            | 必填 | 说明                 |
168| ------------- | -------------------------------| ---- | ------------------- |
169| point | [Point](arkts-apis-camera-i.md#point)                | 是   | 曝光点,x、y设置范围应在[0,1]之内,超过范围,如果小于0设置0,大于1设置1。             |
170
171**错误码:**
172
173以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
174
175| 错误码ID         | 错误信息        |
176| --------------- | --------------- |
177| 7400103                |  Session not config.                                   |
178
179**示例:**
180
181```ts
182import { BusinessError } from '@kit.BasicServicesKit';
183
184function setMeteringPoint(photoSession: camera.PhotoSession): void {
185  const point: camera.Point = {x: 1, y: 1};
186  try {
187    photoSession.setMeteringPoint(point);
188  } catch (error) {
189    // 失败返回错误码error.code并处理。
190    let err = error as BusinessError;
191    console.error(`The setMeteringPoint call failed. error code: ${err.code}`);
192  }
193}
194```
195
196## setExposureBias<sup>11+</sup>
197
198setExposureBias(exposureBias: number): void
199
200设置曝光补偿,曝光补偿值(EV)。
201
202进行设置之前,建议先通过方法[getExposureBiasRange](arkts-apis-camera-AutoExposureQuery.md#getexposurebiasrange11)查询支持的范围。
203
204**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
205
206**系统能力:** SystemCapability.Multimedia.Camera.Core
207
208**参数:**
209
210| 参数名     | 类型                            | 必填 | 说明                                                                                                                                                                                            |
211| -------- | -------------------------------| ---- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
212| exposureBias   | number                   | 是   | 曝光补偿,[getExposureBiasRange](arkts-apis-camera-AutoExposureQuery.md#getexposurebiasrange11)查询支持的范围,如果设置超过支持范围的值,自动匹配到就近临界点。<br>曝光补偿存在步长,由于设备差异,步长也存在差异。例如步长为0.5,则设置1.2时,获取到实际生效曝光补偿为1.0。<br>接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 |
213
214**错误码:**
215
216以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
217
218| 错误码ID         | 错误信息        |
219| --------------- | --------------- |
220| 7400102                |  Operation not allowed.                                |
221| 7400103                |  Session not config.                                   |
222
223**示例:**
224
225```ts
226import { BusinessError } from '@kit.BasicServicesKit';
227
228function setExposureBias(photoSession: camera.PhotoSession, biasRangeArray: Array<number>): void {
229  if (biasRangeArray && biasRangeArray.length > 0) {
230    let exposureBias = biasRangeArray[0];
231    try {
232      photoSession.setExposureBias(exposureBias);
233    } catch (error) {
234      // 失败返回错误码error.code并处理。
235      let err = error as BusinessError;
236      console.error(`The setExposureBias call failed. error code: ${err.code}`);
237    }
238  }
239}
240```
241
242## getExposureValue<sup>11+</sup>
243
244getExposureValue(): number
245
246查询当前曝光值。
247
248**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。
249
250**系统能力:** SystemCapability.Multimedia.Camera.Core
251
252**返回值:**
253
254| 类型        | 说明                          |
255| ---------- | ----------------------------- |
256| number    | 获取曝光值。曝光补偿存在步长,如步长为0.5。则设置1.2时,获取到实际生效曝光补偿为1.0。<br>接口调用失败会返回相应错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 |
257
258**错误码:**
259
260以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。
261
262| 错误码ID         | 错误信息        |
263| --------------- | --------------- |
264| 7400103                |  Session not config.                                   |
265
266**示例:**
267
268```ts
269import { BusinessError } from '@kit.BasicServicesKit';
270
271function getExposureValue(photoSession: camera.PhotoSession): number {
272  const invalidValue: number = -1;
273  let exposureValue: number = invalidValue;
274  try {
275    exposureValue = photoSession.getExposureValue();
276  } catch (error) {
277    // 失败返回错误码error.code并处理。
278    let err = error as BusinessError;
279    console.error(`The getExposureValue call failed. error code: ${err.code}`);
280  }
281  return exposureValue;
282}
283```
284