1# @ohos.distributedHardware.mechanicManager (机械体控制模块) 2<!--Kit: Mechanic Kit--> 3<!--Subsystem: Mechanic--> 4<!--Owner: @hobbycao--> 5<!--Designer: @saga2025--> 6<!--Tester: @zhaodengqi--> 7<!--Adviser: @foryourself--> 8 9本模块提供与机械设备交互的能力,包括设备连接状态监听、跟踪控制和跟踪状态监听功能。 10 11> **说明:** 12> 13> 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15## 导入模块 16 17```js 18import { mechanicManager } from '@kit.MechanicKit'; 19``` 20 21## mechanicManager.on('attachStateChange') 22 23on(type: 'attachStateChange', callback: Callback\<AttachStateChangeInfo>): void 24 25注册连接状态变化事件的回调监听,等待连接状态变化。使用callback异步回调。 26 27**系统能力**:SystemCapability.Mechanic.Core 28 29**参数:** 30 31| 参数名 | 类型 | 必填 | 说明 | 32| ---------- | ------------- | ---- | ------- | 33| type | 'attachStateChange' | 是 | 注册监听事件的类型。取值为:'attachStateChange'。 | 34| callback | Callback\<[AttachStateChangeInfo](#attachstatechangeinfo)> | 是 | 回调函数,返回机械体设备连接变化信息。 | 35 36**错误码:** 37 38以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 39 40| 错误码ID | 错误信息 | 41| -------- | ----------------- | 42| 33300001 | Service exception. | 43 44**示例:** 45 46```ts 47let callback = (result: mechanicManager.AttachStateChangeInfo) => { 48 console.info(`'callback result:' ${result}`); 49}; 50 51console.info('Register'); 52mechanicManager.on("attachStateChange", callback); 53console.info('Register: success'); 54``` 55 56## mechanicManager.off('attachStateChange') 57 58off(type: 'attachStateChange', callback?: Callback\<AttachStateChangeInfo>): void 59 60取消注册连接状态变化事件的回调监听。使用callback异步回调。 61 62**系统能力**:SystemCapability.Mechanic.Core 63 64**参数:** 65 66| 参数名 | 类型 | 必填 | 说明 | 67| ---------- | ------------- | ---- | ----- | 68| type | 'attachStateChange' | 是 | 取消注册监听事件的类型。取值为:'attachStateChange'。| 69| callback | Callback\<[AttachStateChangeInfo](#attachstatechangeinfo)> | 否 | mechanicManager.off('attachStateChange')注册的回调函数。不填时默认取消所有注册的回调函数。 | 70 71**错误码:** 72 73以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 74 75| 错误码ID | 错误信息 | 76| -------- | ----------------- | 77| 33300001 | Service exception. | 78 79**示例:** 80 81```ts 82let callback = (result: mechanicManager.AttachStateChangeInfo) => { 83 console.info(`'callback result:' ${result}`); 84}; 85 86console.info('Unregister'); 87mechanicManager.off("attachStateChange", callback); 88console.info('Unregister: success'); 89``` 90 91## mechanicManager.getAttachedMechDevices 92 93getAttachedMechDevices(): MechInfo[] 94 95获取已连接的机械体设备列表。 96 97**系统能力**:SystemCapability.Mechanic.Core 98 99**返回值:** 100 101| 类型 | 说明 | 102| ------------------------------------------- | --------- | 103| [MechInfo](#mechinfo)[] | 已连接机械体设备的列表。 | 104 105**错误码:** 106 107以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 108 109| 错误码ID | 错误信息 | 110| -------- | ----------------- | 111| 33300001 | Service exception. | 112 113**示例:** 114 115```ts 116console.info('Query device list'); 117let mechanicInfos = mechanicManager.getAttachedMechDevices(); 118console.info(`'device list:' ${mechanicInfos}`); 119``` 120 121## mechanicManager.setCameraTrackingEnabled 122 123setCameraTrackingEnabled(isEnabled: boolean): void 124 125启用或禁用当前机械体设备摄像头跟踪。 126 127**系统能力**:SystemCapability.Mechanic.Core 128 129**参数:** 130 131| 参数名 | 类型 | 必填 | 说明 | 132| --------- | ------- | ---- | ------------- | 133| isEnabled | boolean | 是 | 是否启用摄像头跟踪, true表示启用摄像头跟踪,false表示禁用摄像头跟踪。| 134 135**错误码:** 136 137以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 138 139| 错误码ID | 错误信息 | 140| -------- | ------- | 141| 33300001 | Service exception. | 142| 33300002 | Device not connected. | 143| 33300003 | Feature not supported. | 144 145**示例:** 146 147```ts 148console.info('Enable tracing'); 149mechanicManager.setCameraTrackingEnabled(true); 150console.info('Enable Tracking Success'); 151``` 152 153## mechanicManager.getCameraTrackingEnabled 154 155getCameraTrackingEnabled(): boolean 156 157检查当前机械体设备是否启用了摄像头跟踪。 158 159**系统能力**:SystemCapability.Mechanic.Core 160 161**返回值:** 162 163| 类型 | 说明 | 164| ------- | --------- | 165| boolean | 摄像头跟踪启用状态,true表示已启用,false表示已禁用。| 166 167**错误码:** 168 169以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 170 171| 错误码ID | 错误信息 | 172| -------- | ----------------- | 173| 33300001 | Service exception. | 174| 33300002 | Device not connected. | 175 176**示例:** 177 178```ts 179console.info('Get tracking status'); 180let enabled = mechanicManager.getCameraTrackingEnabled(); 181console.info(`'current tracking status:' ${enabled}`); 182``` 183 184## mechanicManager.on('trackingStateChange') 185 186on(type: 'trackingStateChange', callback: Callback\<TrackingEventInfo>): void 187 188注册跟踪状态变化事件的回调监听。使用callback异步回调。 189 190**系统能力**:SystemCapability.Mechanic.Core 191 192**参数:** 193 194| 参数名 | 类型 | 必填 | 说明 | 195| ---------- | ---------------------- | ---- | ----- | 196| type | 'trackingStateChange' | 是 | 注册监听事件的类型。取值为:'trackingStateChange'。 | 197| callback | Callback\<[TrackingEventInfo](#trackingeventinfo)> | 是 | 回调函数,返回跟踪事件信息。 | 198 199**错误码:** 200 201以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 202 203| 错误码ID | 错误信息 | 204| -------- | --------------------------------------------------------------- | 205| 33300001 | Service exception. | 206 207**示例:** 208 209```ts 210let callback = (result: mechanicManager.TrackingEventInfo) => { 211 console.info(`'callback result:' ${result}`); 212}; 213 214console.info('Register'); 215mechanicManager.on("trackingStateChange", callback); 216console.info('Register: success'); 217``` 218 219## mechanicManager.off('trackingStateChange') 220 221off(type: 'trackingStateChange', callback?: Callback\<TrackingEventInfo>): void 222 223取消注册跟踪状态变化事件的回调监听。使用callback异步回调。 224 225**系统能力**:SystemCapability.Mechanic.Core 226 227**参数:** 228 229| 参数名 | 类型 | 必填 | 说明 | 230| ---------- | ---------------------- | ---- | ----- | 231| type | 'trackingStateChange' | 是 | 取消注册注册监听事件的类型。取值为:'trackingStateChange'。 | 232| callback | Callback\<[TrackingEventInfo](#trackingeventinfo)> | 否 | mechanicManager.off('trackingStateChange')注册的回调函数。不填时默认取消所有注册的回调函数。 | 233 234**错误码:** 235 236以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 237 238| 错误码ID | 错误信息 | 239| -------- | --------------------------------------------------------------- | 240| 33300001 | Service exception. | 241 242**示例:** 243 244```ts 245let callback = (result: mechanicManager.TrackingEventInfo) => { 246 console.info(`'callback result:' ${result}`); 247}; 248 249console.info('Unregister'); 250mechanicManager.off("trackingStateChange", callback); 251console.info('Unregister: success'); 252``` 253 254## mechanicManager.getCameraTrackingLayout 255 256getCameraTrackingLayout(): CameraTrackingLayout 257 258获取当前机械设备摄像头跟踪布局。 259 260**系统能力**:SystemCapability.Mechanic.Core 261 262**返回值:** 263 264| 类型 | 说明 | 265| ------------------------------------------- | --------- | 266| [CameraTrackingLayout](#cameratrackinglayout) | 获取到的当前机械体设备摄像头跟踪布局。 | 267 268**错误码:** 269 270以下的错误码的详细介绍请参见[机械体控制模块错误码](errorcode-mechanic.md)。 271 272| 错误码ID | 错误信息 | 273| -------- | ----------------- | 274| 33300001 | Service exception. | 275| 33300002 | Device not connected. | 276 277**示例:** 278 279```ts 280console.info('Query layout'); 281let layout = mechanicManager.getCameraTrackingLayout(); 282console.info(`'Query layout successful, current layout:' ${layout}`); 283``` 284 285## MechInfo 286 287机械体设备信息。 288 289**系统能力**:SystemCapability.Mechanic.Core 290 291| 名称 | 类型 | 只读 | 可选 | 说明| 292| ----- | ---- | ---- | --- | --- | 293| mechId | number | 否 | 否 | 机械体设备ID。 | 294| mechDeviceType | [MechDeviceType](#mechdevicetype) | 否 | 否 | 机械设备的类型。 | 295| mechName | string | 否 | 否 | 机械体设备名称。 | 296 297## TrackingEventInfo 298 299跟踪事件信息。 300 301**系统能力**:SystemCapability.Mechanic.Core 302 303| 名称 | 类型 | 只读 | 可选 | 说明| 304| ----- | ---- | ---- | --- | --- | 305| event | [TrackingEvent](#trackingevent) | 否 | 否 | 跟踪事件。 | 306 307## AttachStateChangeInfo 308 309设备连接状态变化的信息。 310 311**系统能力**:SystemCapability.Mechanic.Core 312 313| 名称 | 类型 | 只读 | 可选 | 说明| 314| ----- | ---- | ---- | --- | --- | 315| state | [AttachState](#attachstate) | 否 | 否 | 设备连接状态。 | 316| mechInfo | [MechInfo](#mechinfo) | 否 | 否 | 机械体设备信息。 | 317 318## TrackingEvent 319 320跟踪事件的枚举。 321 322**系统能力**:SystemCapability.Mechanic.Core 323 324| 名称 | 值 | 说明 | 325| ----------- | ---- | --------------- | 326| CAMERA_TRACKING_USER_ENABLED | 0 | 用户启用了摄像头跟踪。 | 327| CAMERA_TRACKING_USER_DISABLED | 1 | 用户禁用了摄像头跟踪。 | 328| CAMERA_TRACKING_LAYOUT_CHANGED | 2 | 摄像头跟踪构图变更。 | 329 330## MechDeviceType 331 332机械体设备类型的枚举。 333 334**系统能力**:SystemCapability.Mechanic.Core 335 336| 名称 | 值 | 说明 | 337| ----------- | ---- | --------------- | 338| GIMBAL_DEVICE | 0 | 便携式云台设备。 | 339 340## AttachState 341 342设备连接状态的枚举。 343 344**系统能力**:SystemCapability.Mechanic.Core 345 346| 名称 | 值 | 说明 | 347| ----------- | ---- | --------------- | 348| ATTACHED | 0 | 设备已连接。 | 349| DETACHED | 1 | 设备已断开。 | 350 351## CameraTrackingLayout 352 353摄像头跟踪布局的枚举。 354 355**系统能力**:SystemCapability.Mechanic.Core 356 357| 名称 | 值 | 说明 | 358| ----------- | ---- | --------------- | 359| DEFAULT | 0 | 系统默认跟踪布局。 | 360| LEFT | 1 | 靠左布局。 | 361| MIDDLE | 2 | 居中布局。 | 362| RIGHT | 3 | 靠右布局。 | 363