1# Interface (MetadataOutput) 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 13metadata流。继承[CameraOutput](arkts-apis-camera-CameraOutput.md)。 14 15## 导入模块 16 17```ts 18import { camera } from '@kit.CameraKit'; 19``` 20 21## start 22 23start(callback: AsyncCallback\<void\>): void 24 25开始输出metadata,通过注册回调函数获取结果。使用callback异步回调。 26 27**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 28 29**系统能力:** SystemCapability.Multimedia.Camera.Core 30 31**参数:** 32 33| 参数名 | 类型 | 必填 | 说明 | 34| -------- | -------------------------- | ---- | ------------------- | 35| callback | AsyncCallback\<void\> | 是 | 回调函数。当开始输出metadata成功,err为undefined,否则为错误对象。错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 36 37**错误码:** 38 39以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 40 41| 错误码ID | 错误信息 | 42| --------------- | --------------- | 43| 7400103 | Session not config. | 44| 7400201 | Camera service fatal error. | 45 46**示例:** 47 48```ts 49import { BusinessError } from '@kit.BasicServicesKit'; 50 51function startMetadataOutput(metadataOutput: camera.MetadataOutput): void { 52 metadataOutput.start((err: BusinessError) => { 53 if (err) { 54 console.error(`Failed to start metadata output, error code: ${err.code}.`); 55 return; 56 } 57 console.info('Callback returned with metadata output started.'); 58 }); 59} 60``` 61 62## start 63 64start(): Promise\<void\> 65 66开始输出metadata。使用Promise异步回调。 67 68**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 69 70**系统能力:** SystemCapability.Multimedia.Camera.Core 71 72**返回值:** 73 74| 类型 | 说明 | 75| ---------------------- | ------------------------ | 76| Promise\<void\> | Promise对象,无返回结果。 | 77 78**错误码:** 79 80以下错误码的详细介绍请参见[Camera错误码](errorcode-camera.md)。 81 82| 错误码ID | 错误信息 | 83| --------------- | --------------- | 84| 7400103 | Session not config. | 85| 7400201 | Camera service fatal error. | 86 87**示例:** 88 89```ts 90import { BusinessError } from '@kit.BasicServicesKit'; 91 92function startMetadataOutput(metadataOutput: camera.MetadataOutput): void { 93 metadataOutput.start().then(() => { 94 console.info('Callback returned with metadata output started.'); 95 }).catch((error: BusinessError) => { 96 console.error(`Failed to metadata output stop, error code: ${error.code}`); 97 }); 98} 99``` 100 101## stop 102 103stop(callback: AsyncCallback\<void\>): void 104 105停止输出metadata,通过注册回调函数获取结果。使用callback异步回调。 106 107**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 108 109**系统能力:** SystemCapability.Multimedia.Camera.Core 110 111**参数:** 112 113| 参数名 | 类型 | 必填 | 说明 | 114| -------- | -------------------------- | ---- | ------------------- | 115| callback | AsyncCallback\<void\> | 是 | 回调函数。当停止输出metadata成功,err为undefined,否则为错误对象。 | 116 117**示例:** 118 119```ts 120import { BusinessError } from '@kit.BasicServicesKit'; 121 122function stopMetadataOutput(metadataOutput: camera.MetadataOutput): void { 123 metadataOutput.stop((err: BusinessError) => { 124 if (err) { 125 console.error(`Failed to stop the metadata output, error code: ${err.code}.`); 126 return; 127 } 128 console.info('Callback returned with metadata output stopped.'); 129 }) 130} 131``` 132 133## stop 134 135stop(): Promise\<void\> 136 137停止输出metadata。使用Promise异步回调。 138 139**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 140 141**系统能力:** SystemCapability.Multimedia.Camera.Core 142 143**返回值:** 144 145| 类型 | 说明 | 146| ---------------------- | --------------------------- | 147| Promise\<void\> | Promise对象,无返回结果。 | 148 149**示例:** 150 151```ts 152import { BusinessError } from '@kit.BasicServicesKit'; 153 154function stopMetadataOutput(metadataOutput: camera.MetadataOutput): void { 155 metadataOutput.stop().then(() => { 156 console.info('Callback returned with metadata output stopped.'); 157 }).catch((error: BusinessError) => { 158 console.error(`Failed to metadata output stop, error code: ${error.code}`); 159 }); 160} 161``` 162 163## on('metadataObjectsAvailable') 164 165on(type: 'metadataObjectsAvailable', callback: AsyncCallback\<Array\<MetadataObject\>\>): void 166 167监听检测到的metadata对象,通过注册回调函数获取结果。使用callback异步回调。 168 169> **说明:** 170> 171> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 172 173**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 174 175**系统能力:** SystemCapability.Multimedia.Camera.Core 176 177**参数:** 178 179| 参数名 | 类型 | 必填 | 说明 | 180| -------- | -------------- | ---- | ------------------------------------ | 181| type | string | 是 | 监听事件,固定为'metadataObjectsAvailable',metadataOutput创建成功后可监听。检测到有效的metadata数据时触发该事件发生并返回相应的metadata数据。 | 182| callback | AsyncCallback\<Array\<[MetadataObject](arkts-apis-camera-i.md#metadataobject)\>\> | 是 | 回调函数,用于获取metadata数据。 | 183 184**示例:** 185 186```ts 187import { BusinessError } from '@kit.BasicServicesKit'; 188 189function callback(err: BusinessError, metadataObjectArr: Array<camera.MetadataObject>): void { 190 if (err !== undefined && err.code !== 0) { 191 console.error(`Callback Error, errorCode: ${err.code}`); 192 return; 193 } 194 console.info('metadata output metadataObjectsAvailable'); 195} 196 197function registerMetadataObjectsAvailable(metadataOutput: camera.MetadataOutput): void { 198 metadataOutput.on('metadataObjectsAvailable', callback); 199} 200``` 201 202## off('metadataObjectsAvailable') 203 204off(type: 'metadataObjectsAvailable', callback?: AsyncCallback\<Array\<MetadataObject\>\>): void 205 206注销监听检测到的metadata对象。 207 208**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 209 210**系统能力:** SystemCapability.Multimedia.Camera.Core 211 212**参数:** 213 214| 参数名 | 类型 | 必填 | 说明 | 215| -------- | -------------- | ---- | ------------------------------------ | 216| type | string | 是 | 监听事件,固定为'metadataObjectsAvailable',metadataOutput创建成功后可监听。 | 217| callback | AsyncCallback\<Array\<[MetadataObject](arkts-apis-camera-i.md#metadataobject)\>\> | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 218 219**示例:** 220 221```ts 222function unregisterMetadataObjectsAvailable(metadataOutput: camera.MetadataOutput): void { 223 metadataOutput.off('metadataObjectsAvailable'); 224} 225``` 226 227## on('error') 228 229on(type: 'error', callback: ErrorCallback): void 230 231监听metadata流的错误,通过注册回调函数获取结果。使用callback异步回调。 232 233> **说明:** 234> 235> 当前注册监听接口,不支持在on监听的回调方法里,调用off注销回调。 236 237**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 238 239**系统能力:** SystemCapability.Multimedia.Camera.Core 240 241**参数:** 242 243| 参数名 | 类型 | 必填 | 说明 | 244| -------- | ------------- | ---- | --------------------------------------- | 245| type | string | 是 | 监听事件,固定为'error',metadataOutput创建成功后可监听。metadata接口使用错误时触发该事件并返回对应错误码,比如调用[start](#start-1),[CameraOutput.release](arkts-apis-camera-CameraOutput.md#release-1)接口时发生错误返回对应错误信息。 | 246| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 是 | 回调函数,用于获取错误信息。返回错误码,错误码类型[CameraErrorCode](arkts-apis-camera-e.md#cameraerrorcode)。 | 247 248**示例:** 249 250```ts 251import { BusinessError } from '@kit.BasicServicesKit'; 252 253function callback(metadataOutputError: BusinessError): void { 254 console.error(`Metadata output error code: ${metadataOutputError.code}`); 255} 256 257function registerMetadataOutputError(metadataOutput: camera.MetadataOutput): void { 258 metadataOutput.on('error', callback); 259} 260``` 261 262## off('error') 263 264off(type: 'error', callback?: ErrorCallback): void 265 266注销监听metadata流的错误。 267 268**原子化服务API:** 从API version 19开始,该接口支持在原子化服务中使用。 269 270**系统能力:** SystemCapability.Multimedia.Camera.Core 271 272**参数:** 273 274| 参数名 | 类型 | 必填 | 说明 | 275| -------- | ------------- | ---- | --------------------------------------- | 276| type | string | 是 | 监听事件,固定为'error',metadataOutput创建成功后可监听。 | 277| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | 否 | 回调函数,如果指定参数则取消对应callback(callback对象不可是匿名函数),否则取消所有callback。 | 278 279**示例:** 280 281```ts 282function unregisterMetadataOutputError(metadataOutput: camera.MetadataOutput): void { 283 metadataOutput.off('error'); 284} 285``` 286