1# Interface (SecureSession) 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 12开始支持。 13 14SecureSession 继承自 [Session](arkts-apis-camera-Session.md)、[Flash](arkts-apis-camera-Flash.md)、[AutoExposure](arkts-apis-camera-AutoExposure.md)、[WhiteBalance](arkts-apis-camera-WhiteBalance.md)、[Focus](arkts-apis-camera-Focus.md)、[Zoom](arkts-apis-camera-Zoom.md)。 15 16安全模式会话类,提供了对闪光灯、曝光、白平衡、对焦、变焦的操作。 17 18> **说明:** 19> 20> 通过[createSession](arkts-apis-camera-CameraManager.md#createsession11)接口传入[SceneMode](arkts-apis-camera-e.md#scenemode11)为SECURE_PHOTO模式创建一个安全模式的会话。该模式开放给人脸识别、银行等有安全诉求的应用,需要结合<!--RP1-->安全TA<!--RP1End-->使用,支持同时出普通预览流和安全流的业务场景。<!--RP2--> 21> <br>安全TA:可用于图片处理,它具备验证服务器下发数据的验签能力、图片签名、解析及组装tlv逻辑的能力,还具备密钥读取、创建及操作能力。<!--RP2End--> 22 23## 导入模块 24 25```ts 26import { camera } from '@kit.CameraKit'; 27``` 28 29## addSecureOutput<sup>12+</sup> 30 31addSecureOutput(previewOutput: PreviewOutput): void 32 33将其中一条[PreviewOutput](arkts-apis-camera-PreviewOutput.md)标记成安全输出。 34 35**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 36 37**系统能力:** SystemCapability.Multimedia.Camera.Core 38 39**参数:** 40 41| 参数名 | 类型 | 必填 | 说明 | 42| ------------- | ------------------------------- | ---- |---------------| 43| previewOutput | [PreviewOutput](arkts-apis-camera-PreviewOutput.md) | 是 | 需要标记成安全输出的预览流,传参异常时,会返回错误码。 | 44 45**错误码:** 46 47以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 48 49| 错误码ID | 错误信息 | 50| --------------- | --------------- | 51| 7400101 | Parameter missing or parameter type incorrect. | 52| 7400102 | Operation not allowed. | 53 54**示例:** 55 56```ts 57import { BusinessError } from '@kit.BasicServicesKit'; 58 59function addSecureOutput(session: camera.SecureSession, previewOutput: camera.PreviewOutput): void { 60 try { 61 session.addSecureOutput(previewOutput); 62 } catch (error) { 63 // 失败返回错误码error.code并处理。 64 let err = error as BusinessError; 65 console.error(`The addOutput call failed. error code: ${err.code}`); 66 } 67} 68``` 69 70## on('error')<sup>12+</sup> 71 72on(type: 'error', callback: ErrorCallback): void 73 74监听安全相机会话的错误事件,通过注册回调函数获取结果。使用callback异步回调。 75 76> **说明:** 77> 78> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 79 80**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 81 82**系统能力:** SystemCapability.Multimedia.Camera.Core 83 84**参数:** 85 86| 参数名 | 类型 | 必填 | 说明 | 87| -------- | ------------------ | ---- | ------------------------------ | 88| type | string | 是 | 监听事件,固定为'error',session创建成功之后可监听该接口。session调用相关接口出现错误时会触发该事件,比如调用[beginConfig](arkts-apis-camera-Session.md#beginconfig11),[commitConfig](arkts-apis-camera-Session.md#commitconfig11-1),[addInput](arkts-apis-camera-Session.md#addinput11)等接口发生错误时返回错误信息。 | 89| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 90 91**示例:** 92 93```ts 94import { BusinessError } from '@kit.BasicServicesKit'; 95 96function callback(err: BusinessError): void { 97 console.error(`Video session error code: ${err.code}`); 98} 99 100function registerSessionError(secureSession: camera.SecureSession): void { 101 secureSession.on('error', callback); 102} 103``` 104 105## off('error')<sup>12+</sup> 106 107off(type: 'error', callback?: ErrorCallback): void 108 109注销监听安全相机会话的错误事件,通过注册回调函数获取结果。 110 111**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 112 113**系统能力:** SystemCapability.Multimedia.Camera.Core 114 115**参数:** 116 117| 参数名 | 类型 | 必填 | 说明 | 118| -------- | --------------------------- | ---- | ------------------------------ | 119| type | string | 是 | 监听事件,固定为'error',session创建成功之后可监听该接口。 | 120| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback)| 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 121 122**示例:** 123 124```ts 125function unregisterSessionError(secureSession: camera.SecureSession): void { 126 secureSession.off('error'); 127} 128``` 129 130## on('focusStateChange')<sup>12+</sup> 131 132on(type: 'focusStateChange', callback: AsyncCallback\<FocusState\>): void 133 134监听相机聚焦的状态变化,通过注册回调函数获取结果。使用callback异步回调。 135 136> **说明:** 137> 138> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 139 140**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 141 142**系统能力:** SystemCapability.Multimedia.Camera.Core 143 144**参数:** 145 146| 参数名 | 类型 | 必填 | 说明 | 147| -------- | ---------------- | ---- | ------------------------ | 148| type | string | 是 | 监听事件,固定为'focusStateChange',session创建成功可监听。仅当自动对焦模式时,且相机对焦状态发生改变时可触发该事件。 | 149| callback | AsyncCallback\<[FocusState](arkts-apis-camera-e.md#focusstate)\> | 是 | 回调函数,用于获取当前对焦状态。 | 150 151**示例:** 152 153```ts 154import { BusinessError } from '@kit.BasicServicesKit'; 155 156function callback(err: BusinessError, focusState: camera.FocusState): void { 157 if (err !== undefined && err.code !== 0) { 158 console.error(`Callback Error, errorCode: ${err.code}`); 159 return; 160 } 161 console.info(`Focus state: ${focusState}`); 162} 163 164function registerFocusStateChange(secureSession: camera.SecureSession): void { 165 secureSession.on('focusStateChange', callback); 166} 167``` 168 169## off('focusStateChange')<sup>12+</sup> 170 171off(type: 'focusStateChange', callback?: AsyncCallback\<FocusState\>): void 172 173注销监听相机聚焦的状态变化。 174 175**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 176 177**系统能力:** SystemCapability.Multimedia.Camera.Core 178 179**参数:** 180 181| 参数名 | 类型 | 必填 | 说明 | 182| -------- | ----------------------------------------- | ---- | ------------------------ | 183| type | string | 是 | 监听事件,固定为'focusStateChange',session创建成功可监听。 | 184| callback | AsyncCallback\<[FocusState](arkts-apis-camera-e.md#focusstate)\> | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 185 186**示例:** 187 188```ts 189function unregisterFocusStateChange(secureSession: camera.SecureSession): void { 190 secureSession.off('focusStateChange'); 191} 192``` 193