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