1# oh_window_pip.h 2 3## 概述 4 5定义画中画功能的相关接口,包含创建、删除画中画控制器,以及启动、停止画中画等。主要用于视频播放、直播、视频通话或视频会议场景下,以小窗(画中画)模式呈现内容。 6 7**引用文件:** <window_manager/oh_window_pip.h> 8 9**库:** libnative_window_manager.so 10 11**系统能力:** SystemCapability.Window.SessionManager 12 13**起始版本:** 20 14 15**相关模块:** [WindowManager](capi-windowmanager.md) 16 17## 汇总 18 19### 枚举 20 21| 名称 | typedef关键字 | 描述 | 22| -- | -- | -- | 23| [PictureInPicture_PipTemplateType](#pictureinpicture_piptemplatetype) | PictureInPicture_PipTemplateType | 画中画模板类型。 | 24| [PictureInPicture_PipControlGroup](#pictureinpicture_pipcontrolgroup) | PictureInPicture_PipControlGroup | 画中画控制面板的控件组类型。 | 25| [PictureInPicture_PipControlType](#pictureinpicture_pipcontroltype) | PictureInPicture_PipControlType | 控制面板控件类型枚举。 | 26| [PictureInPicture_PipControlStatus](#pictureinpicture_pipcontrolstatus) | PictureInPicture_PipControlStatus | 控制面板控件状态枚举。 | 27| [PictureInPicture_PipState](#pictureinpicture_pipstate) | PictureInPicture_PipState | 画中画生命周期状态枚举。 | 28 29### 函数 30 31| 名称 | typedef关键字 | 描述 | 32| -- | -- | -- | 33| [typedef void (\*WebPipStartPipCallback)(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId)](#webpipstartpipcallback) | WebPipStartPipCallback | 定义画中画窗口创建完成的回调函数。 | 34| [typedef void (\*WebPipLifecycleCallback)(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode)](#webpiplifecyclecallback) | WebPipLifecycleCallback | 定义画中画窗口的生命周期回调函数。 | 35| [typedef void (\*WebPipControlEventCallback)(uint32_t controllerId, PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)](#webpipcontroleventcallback) | WebPipControlEventCallback | 定义画中画窗口的控件点击事件回调函数。 | 36| [typedef void (\*WebPipResizeCallback)(uint32_t controllerId, uint32_t width, uint32_t height, double scale)](#webpipresizecallback) | WebPipResizeCallback | 定义画中画窗口的尺寸变化回调函数。 | 37| [int32_t OH_PictureInPicture_CreatePipConfig(PictureInPicture_PipConfig* pipConfig)](#oh_pictureinpicture_createpipconfig) | - | 创建画中画参数配置器。 | 38| [int32_t OH_PictureInPicture_DestroyPipConfig(PictureInPicture_PipConfig* pipConfig)](#oh_pictureinpicture_destroypipconfig) | - | 销毁画中画参数配置器。 | 39| [int32_t OH_PictureInPicture_SetPipMainWindowId(PictureInPicture_PipConfig pipConfig, uint32_t mainWindowId)](#oh_pictureinpicture_setpipmainwindowid) | - | 设置拉起画中画的主窗口Id。 | 40| [int32_t OH_PictureInPicture_SetPipTemplateType(PictureInPicture_PipConfig pipConfig,PictureInPicture_PipTemplateType pipTemplateType)](#oh_pictureinpicture_setpiptemplatetype) | - | 设置画中画模板类型,默认为视频播放。 | 41| [int32_t OH_PictureInPicture_SetPipRect(PictureInPicture_PipConfig pipConfig, uint32_t width, uint32_t height)](#oh_pictureinpicture_setpiprect) | - | 设置画中画窗口大小,用于计算尺寸比例。 | 42| [int32_t OH_PictureInPicture_SetPipControlGroup(PictureInPicture_PipConfig pipConfig,PictureInPicture_PipControlGroup* controlGroup, uint8_t controlGroupLength)](#oh_pictureinpicture_setpipcontrolgroup) | - | 设置画中画控件组,需保证控件组与模板类型匹配。 | 43| [int32_t OH_PictureInPicture_SetPipNapiEnv(PictureInPicture_PipConfig pipConfig, void* env)](#oh_pictureinpicture_setpipnapienv) | - | 设置拉起画中画的运行时环境。 | 44| [int32_t OH_PictureInPicture_CreatePip(PictureInPicture_PipConfig pipConfig, uint32_t* controllerId)](#oh_pictureinpicture_createpip) | - | 创建画中画控制器。 | 45| [int32_t OH_PictureInPicture_DeletePip(uint32_t controllerId)](#oh_pictureinpicture_deletepip) | - | 删除画中画控制器。 | 46| [int32_t OH_PictureInPicture_StartPip(uint32_t controllerId)](#oh_pictureinpicture_startpip) | - | 开启画中画。 | 47| [int32_t OH_PictureInPicture_StopPip(uint32_t controllerId)](#oh_pictureinpicture_stoppip) | - | 关闭画中画。 | 48| [int32_t OH_PictureInPicture_UpdatePipContentSize(uint32_t controllerId, uint32_t width, uint32_t height)](#oh_pictureinpicture_updatepipcontentsize) | - | 当媒体源切换时,向画中画控制器更新媒体源尺寸信息。 | 49| [int32_t OH_PictureInPicture_UpdatePipControlStatus(uint32_t controllerId, PictureInPicture_PipControlType controlType,PictureInPicture_PipControlStatus status)](#oh_pictureinpicture_updatepipcontrolstatus) | - | 更新画中画控制面板控件功能状态。 | 50| [int32_t OH_PictureInPicture_SetPipControlEnabled(uint32_t controllerId, PictureInPicture_PipControlType controlType,bool enabled)](#oh_pictureinpicture_setpipcontrolenabled) | - | 设置控制面板控件使能状态。 | 51| [int32_t OH_PictureInPicture_RegisterStartPipCallback(uint32_t controllerId, WebPipStartPipCallback callback)](#oh_pictureinpicture_registerstartpipcallback) | - | 开启画中画surface创建完成的监听。 | 52| [int32_t OH_PictureInPicture_UnregisterStartPipCallback(uint32_t controllerId, WebPipStartPipCallback callback)](#oh_pictureinpicture_unregisterstartpipcallback) | - | 关闭画中画surface创建完成的监听。 | 53| [int32_t OH_PictureInPicture_UnregisterAllStartPipCallbacks(uint32_t controllerId)](#oh_pictureinpicture_unregisterallstartpipcallbacks) | - | 关闭所有画中画surface创建完成的监听。 | 54| [int32_t OH_PictureInPicture_RegisterLifecycleListener(uint32_t controllerId, WebPipLifecycleCallback callback)](#oh_pictureinpicture_registerlifecyclelistener) | - | 开启画中画生命周期状态的监听。 | 55| [int32_t OH_PictureInPicture_UnregisterLifecycleListener(uint32_t controllerId, WebPipLifecycleCallback callback)](#oh_pictureinpicture_unregisterlifecyclelistener) | - | 关闭画中画生命周期状态的监听。 | 56| [int32_t OH_PictureInPicture_UnregisterAllLifecycleListeners(uint32_t controllerId)](#oh_pictureinpicture_unregisteralllifecyclelisteners) | - | 关闭所有画中画生命周期状态的监听。 | 57| [int32_t OH_PictureInPicture_RegisterControlEventListener(uint32_t controllerId, WebPipControlEventCallback callback)](#oh_pictureinpicture_registercontroleventlistener) | - | 开启画中画控制面板控件动作事件的监听。 | 58| [int32_t OH_PictureInPicture_UnregisterControlEventListener(uint32_t controllerId, WebPipControlEventCallback callback)](#oh_pictureinpicture_unregistercontroleventlistener) | - | 关闭画中画控制面板控件动作事件的监听。 | 59| [int32_t OH_PictureInPicture_UnregisterAllControlEventListeners(uint32_t controllerId)](#oh_pictureinpicture_unregisterallcontroleventlisteners) | - | 关闭所有画中画控制面板控件动作事件的监听。 | 60| [int32_t OH_PictureInPicture_RegisterResizeListener(uint32_t controllerId, WebPipResizeCallback callback)](#oh_pictureinpicture_registerresizelistener) | - | 开启画中画窗口尺寸变化事件的监听。 | 61| [int32_t OH_PictureInPicture_UnregisterResizeListener(uint32_t controllerId, WebPipResizeCallback callback)](#oh_pictureinpicture_unregisterresizelistener) | - | 关闭画中画窗口尺寸变化事件的监听。 | 62| [int32_t OH_PictureInPicture_UnregisterAllResizeListeners(uint32_t controllerId)](#oh_pictureinpicture_unregisterallresizelisteners) | - | 关闭所有画中画窗口尺寸变化事件的监听。 | 63| [int32_t OH_PictureInPicture_SetPipInitialSurfaceRect(uint32_t controllerId, int32_t positionX, int32_t positionY,uint32_t width, uint32_t height)](#oh_pictureinpicture_setpipinitialsurfacerect) | - | 设置画中画拉起动效开始时的位置和大小,可用于实现一镜到底效果。 | 64| [int32_t OH_PictureInPicture_UnsetPipInitialSurfaceRect(uint32_t controllerId)](#oh_pictureinpicture_unsetpipinitialsurfacerect) | - | 取消已设置的画中画拉起动效的起始位置和大小。 | 65 66## 枚举类型说明 67 68### PictureInPicture_PipTemplateType 69 70``` 71enum PictureInPicture_PipTemplateType 72``` 73 74**描述** 75 76画中画模板类型。 77 78**起始版本:** 20 79 80| 枚举项 | 描述 | 81| -- | -- | 82| VIDEO_PLAY = 0 | 表示将要切换为画中画播放的媒体类型是视频,系统依此加载视频播放模板。 | 83| VIDEO_CALL = 1 | 表示将要切换为画中画播放的媒体类型是视频通话,系统依此加载视频通话模板。 | 84| VIDEO_MEETING = 2 | 表示将要切换为画中画播放的媒体类型是视频会议,系统依此加载视频会议模板。 | 85| VIDEO_LIVE = 3 | 表示将要切换为画中画播放的媒体类型是直播,系统依此加载直播模板。 | 86 87### PictureInPicture_PipControlGroup 88 89``` 90enum PictureInPicture_PipControlGroup 91``` 92 93**描述** 94 95画中画控制面板的控件组类型。 96 97**起始版本:** 20 98 99| 枚举项 | 描述 | 100| -- | -- | 101| VIDEO_PLAY_VIDEO_PREVIOUS_NEXT = 101 | 视频播放模板的视频上一个/下一个控件组。与视频快进/后退控件组为互斥控件组。如添加视频快进/后退控件组,则不可添加该控件组。 | 102| VIDEO_PLAY_FAST_FORWARD_BACKWARD = 102 | 视频播放模板的视频快进/后退控件组。与视频上一个/下一个控件组为互斥控件组。如添加视频上一个/下一个控件组,则不可添加该控件组。 | 103| VIDEO_CALL_MICROPHONE_SWITCH = 201 | 视频通话模板的打开/关闭麦克风控件组。 | 104| VIDEO_CALL_HANG_UP_BUTTON = 202 | 视频通话模板的挂断控件组。 | 105| VIDEO_CALL_CAMERA_SWITCH = 203 | 视频通话模板的打开/关闭摄像头控件组。 | 106| VIDEO_CALL_MUTE_SWITCH = 204 | 视频通话模板的静音控件组。 | 107| VIDEO_MEETING_HANG_UP_BUTTON = 301 | 视频会议模板的挂断控件组。 | 108| VIDEO_MEETING_CAMERA_SWITCH = 302 | 视频会议模板的打开/关闭摄像头控件组。 | 109| VIDEO_MEETING_MUTE_SWITCH = 303 | 视频会议模板的静音控件组。 | 110| VIDEO_MEETING_MICROPHONE_SWITCH = 304 | 视频会议模板的打开/关闭麦克风控件组。 | 111| VIDEO_LIVE_VIDEO_PLAY_PAUSE = 401 | 直播模板的播放/暂停直播控件组。 | 112| VIDEO_LIVE_MUTE_SWITCH = 402 | 直播模板的静音控件组。 | 113 114### PictureInPicture_PipControlType 115 116``` 117enum PictureInPicture_PipControlType 118``` 119 120**描述** 121 122控制面板控件类型枚举。 123 124**起始版本:** 20 125 126| 枚举项 | 描述 | 127| -- | -- | 128| VIDEO_PLAY_PAUSE = 0 | 播放/暂停控件。 | 129| VIDEO_PREVIOUS = 1 | 视频上一个控件。 | 130| VIDEO_NEXT = 2 | 视频下一个控件。 | 131| FAST_FORWARD = 3 | 视频快进控件。 | 132| FAST_BACKWARD = 4 | 视频快退控件。 | 133| HANG_UP_BUTTON = 5 | 挂断控件。 | 134| MICROPHONE_SWITCH = 6 | 打开/关闭麦克风控件。 | 135| CAMERA_SWITCH = 7 | 打开/关闭摄像头控件。 | 136| MUTE_SWITCH = 8 | 打开/关闭静音控件。 | 137 138### PictureInPicture_PipControlStatus 139 140``` 141enum PictureInPicture_PipControlStatus 142``` 143 144**描述** 145 146控制面板控件状态枚举。 147 148**起始版本:** 20 149 150| 枚举项 | 描述 | 151| -- | -- | 152| PLAY = 1 | 视频播放状态。 | 153| PAUSE = 0 | 视频暂停状态。 | 154| OPEN = 1 | 摄像头/麦克风/静音控件的打开状态。 | 155| CLOSE = 0 | 摄像头/麦克风/静音控件的关闭状态。 | 156 157### PictureInPicture_PipState 158 159``` 160enum PictureInPicture_PipState 161``` 162 163**描述** 164 165画中画生命周期状态枚举。 166 167**起始版本:** 20 168 169| 枚举项 | 描述 | 170| -- | -- | 171| ABOUT_TO_START = 1 | 表示画中画将要启动。 | 172| STARTED = 2 | 表示画中画已经启动。 | 173| ABOUT_TO_STOP = 3 | 表示画中画将要停止。 | 174| STOPPED = 4 | 表示画中画已经停止。 | 175| ABOUT_TO_RESTORE = 5 | 表示画中画将从小窗播放恢复到原始播放界面。 | 176| ERROR = 6 | 表示画中画生命周期执行过程出现了异常。 | 177 178 179## 函数说明 180 181### WebPipStartPipCallback() 182 183``` 184typedef void (*WebPipStartPipCallback)(uint32_t controllerId, uint8_t requestId, uint64_t surfaceId) 185``` 186 187**描述** 188 189定义画中画窗口创建完成的回调函数。 190 191**起始版本:** 20 192 193 194**参数:** 195 196| 参数项 | 描述 | 197| -- | -- | 198| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 199| uint8_t requestId | 请求Id,表示当前请求拉起画中画窗口的次数。 | 200| uint64_t surfaceId | 画中画内部Xcomponent组件的surfaceId,用于应用自行渲染。 | 201 202### WebPipLifecycleCallback() 203 204``` 205typedef void (*WebPipLifecycleCallback)(uint32_t controllerId, PictureInPicture_PipState state, int32_t errcode) 206``` 207 208**描述** 209 210定义画中画窗口的生命周期回调函数。 211 212**起始版本:** 20 213 214 215**参数:** 216 217| 参数项 | 描述 | 218| -- | -- | 219| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 220| PictureInPicture_PipState state | 当前画中画生命周期状态。 | 221| int32_t errcode | 画中画接口的通用状态码。具体可见[WindowManager_ErrorCode](capi-oh-window-comm-h.md#windowmanager_errorcode)。 | 222 223### WebPipControlEventCallback() 224 225``` 226typedef void (*WebPipControlEventCallback)(uint32_t controllerId, PictureInPicture_PipControlType controlType, PictureInPicture_PipControlStatus status) 227``` 228 229**描述** 230 231定义画中画窗口的控件点击事件回调函数。 232 233**起始版本:** 20 234 235 236**参数:** 237 238| 参数项 | 描述 | 239| -- | -- | 240| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 241| PictureInPicture_PipControlType controlType | 画中画控制面板的控件类型。 | 242| [PictureInPicture_PipControlStatus](#pictureinpicture_pipcontrolstatus) status | 画中画控制面板的控件状态。 | 243 244### WebPipResizeCallback() 245 246``` 247typedef void (*WebPipResizeCallback)(uint32_t controllerId, uint32_t width, uint32_t height, double scale) 248``` 249 250**描述** 251 252定义画中画窗口的尺寸变化回调函数。 253 254**起始版本:** 20 255 256 257**参数:** 258 259| 参数项 | 描述 | 260| -- | -- | 261| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 262| uint32_t width | 画中画窗口宽度,单位为px,该参数为正整数,不大于屏幕宽。 | 263| uint32_t height | 画中画窗口高度,单位为px,该参数为正整数,不大于屏幕高。 | 264| double scale | 画中画窗口缩放比,显示大小相对于width和height的缩放比,该参数为浮点数,取值范围大于0.0,小于等于1.0。等于1表示画中画窗口的实际显示宽高值与width和height一样大。 | 265 266### OH_PictureInPicture_CreatePipConfig() 267 268``` 269int32_t OH_PictureInPicture_CreatePipConfig(PictureInPicture_PipConfig* pipConfig) 270``` 271 272**描述** 273 274创建画中画参数配置器。 275 276**起始版本:** 20 277 278 279**参数:** 280 281| 参数项 | 描述 | 282| -- | -- | 283| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md)* pipConfig | 用于接受创建的画中画参数配置器。 | 284 285**返回:** 286 287| 类型 | 说明 | 288| -- | -- | 289| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。 | 290 291### OH_PictureInPicture_DestroyPipConfig() 292 293``` 294int32_t OH_PictureInPicture_DestroyPipConfig(PictureInPicture_PipConfig* pipConfig) 295``` 296 297**描述** 298 299销毁画中画参数配置器。 300 301**起始版本:** 20 302 303 304**参数:** 305 306| 参数项 | 描述 | 307| -- | -- | 308| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md)* pipConfig | 画中画参数配置器。 | 309 310**返回:** 311 312| 类型 | 说明 | 313| -- | -- | 314| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。 | 315 316### OH_PictureInPicture_SetPipMainWindowId() 317 318``` 319int32_t OH_PictureInPicture_SetPipMainWindowId(PictureInPicture_PipConfig pipConfig, uint32_t mainWindowId) 320``` 321 322**描述** 323 324设置拉起画中画的主窗口Id。 325 326**起始版本:** 20 327 328 329**参数:** 330 331| 参数项 | 描述 | 332| -- | -- | 333| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 334| uint32_t mainWindowId | 拉起画中画的主窗口Id。 | 335 336**返回:** 337 338| 类型 | 说明 | 339| -- | -- | 340| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。 | 341 342### OH_PictureInPicture_SetPipTemplateType() 343 344``` 345int32_t OH_PictureInPicture_SetPipTemplateType(PictureInPicture_PipConfig pipConfig, PictureInPicture_PipTemplateType pipTemplateType) 346``` 347 348**描述** 349 350设置画中画模板类型,默认为视频播放。 351 352**起始版本:** 20 353 354 355**参数:** 356 357| 参数项 | 描述 | 358| -- | -- | 359| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 360| [PictureInPicture_PipTemplateType](#pictureinpicture_piptemplatetype) pipTemplateType | 画中画模板类型。 | 361 362**返回:** 363 364| 类型 | 说明 | 365| -- | -- | 366| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。 | 367 368### OH_PictureInPicture_SetPipRect() 369 370``` 371int32_t OH_PictureInPicture_SetPipRect(PictureInPicture_PipConfig pipConfig, uint32_t width, uint32_t height) 372``` 373 374**描述** 375 376设置画中画窗口大小,用于计算尺寸比例。 377 378**起始版本:** 20 379 380 381**参数:** 382 383| 参数项 | 描述 | 384| -- | -- | 385| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 386| uint32_t width | 原始内容宽度,单位为px,该参数应为正整数。用于确定画中画窗口比例。 | 387| uint32_t height | 原始内容高度,单位为px,该参数应为正整数。用于确定画中画窗口比例。 | 388 389**返回:** 390 391| 类型 | 说明 | 392| -- | -- | 393| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。 | 394 395### OH_PictureInPicture_SetPipControlGroup() 396 397``` 398int32_t OH_PictureInPicture_SetPipControlGroup(PictureInPicture_PipConfig pipConfig, PictureInPicture_PipControlGroup* controlGroup, uint8_t controlGroupLength) 399``` 400 401**描述** 402 403设置画中画控件组,需保证控件组与模板类型匹配。 404 405**起始版本:** 20 406 407 408**参数:** 409 410| 参数项 | 描述 | 411| -- | -- | 412| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 413| [PictureInPicture_PipControlGroup](#pictureinpicture_pipcontrolgroup)* controlGroup | 画中画控制面板的可选控件组列表,应用可以对此进行配置以决定是否显示。应用未配置时,面板显示基础控件(如视频播放控件组的播放/暂停控件);应用选择配置时,则最多可以选择三个控件。 | 414| uint8_t controlGroupLength | 画中画控件组数量,取值范围为0 ~ 3。 | 415 416**返回:** 417 418| 类型 | 说明 | 419| -- | -- | 420| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。 | 421 422### OH_PictureInPicture_SetPipNapiEnv() 423 424``` 425int32_t OH_PictureInPicture_SetPipNapiEnv(PictureInPicture_PipConfig pipConfig, void* env) 426``` 427 428**描述** 429 430设置拉起画中画的运行时环境。 431 432**起始版本:** 20 433 434 435**参数:** 436 437| 参数项 | 描述 | 438| -- | -- | 439| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 440| void* env | napi的环境指针。 | 441 442**返回:** 443 444| 类型 | 说明 | 445| -- | -- | 446| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。 | 447 448### OH_PictureInPicture_CreatePip() 449 450``` 451int32_t OH_PictureInPicture_CreatePip(PictureInPicture_PipConfig pipConfig, uint32_t* controllerId) 452``` 453 454**描述** 455 456创建画中画控制器。 457 458**起始版本:** 20 459 460 461**参数:** 462 463| 参数项 | 描述 | 464| -- | -- | 465| [PictureInPicture_PipConfig](capi-pictureinpicture-pipconfig.md) pipConfig | 画中画参数配置器。 | 466| uint32_t* controllerId | 用于接收创建画中画控制器的id。 | 467 468**返回:** 469 470| 类型 | 说明 | 471| -- | -- | 472| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 473 474### OH_PictureInPicture_DeletePip() 475 476``` 477int32_t OH_PictureInPicture_DeletePip(uint32_t controllerId) 478``` 479 480**描述** 481 482删除画中画控制器。 483 484**起始版本:** 20 485 486 487**参数:** 488 489| 参数项 | 描述 | 490| -- | -- | 491| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 492 493**返回:** 494 495| 类型 | 说明 | 496| -- | -- | 497| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。 | 498 499### OH_PictureInPicture_StartPip() 500 501``` 502int32_t OH_PictureInPicture_StartPip(uint32_t controllerId) 503``` 504 505**描述** 506 507开启画中画。 508 509**起始版本:** 20 510 511 512**参数:** 513 514| 参数项 | 描述 | 515| -- | -- | 516| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 517 518**返回:** 519 520| 类型 | 说明 | 521| -- | -- | 522| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_STATE_ABNORMAL,表示画中画窗口状态异常。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_CREATE_FAILED,表示画中画窗口创建失败。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_REPEATED_OPERATION,表示画中画窗口重复操作。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。 | 523 524### OH_PictureInPicture_StopPip() 525 526``` 527int32_t OH_PictureInPicture_StopPip(uint32_t controllerId) 528``` 529 530**描述** 531 532关闭画中画。 533 534**起始版本:** 20 535 536 537**参数:** 538 539| 参数项 | 描述 | 540| -- | -- | 541| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 542 543**返回:** 544 545| 类型 | 说明 | 546| -- | -- | 547| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_DESTROY_FAILED,表示画中画窗口销毁失败。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_STATE_ABNORMAL,表示画中画窗口状态异常。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_REPEATED_OPERATION,表示画中画窗口重复操作。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。 | 548 549### OH_PictureInPicture_UpdatePipContentSize() 550 551``` 552int32_t OH_PictureInPicture_UpdatePipContentSize(uint32_t controllerId, uint32_t width, uint32_t height) 553``` 554 555**描述** 556 557当媒体源切换时,向画中画控制器更新媒体源尺寸信息。 558 559**起始版本:** 20 560 561 562**参数:** 563 564| 参数项 | 描述 | 565| -- | -- | 566| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 567| uint32_t width | 表示媒体内容宽度,单位为px,该参数应为正整数。用于更新画中画窗口比例。 | 568| uint32_t height | 表示媒体内容高度,单位为px,该参数应为正整数。用于更新画中画窗口比例。 | 569 570**返回:** 571 572| 类型 | 说明 | 573| -- | -- | 574| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 575 576### OH_PictureInPicture_UpdatePipControlStatus() 577 578``` 579int32_t OH_PictureInPicture_UpdatePipControlStatus(uint32_t controllerId, PictureInPicture_PipControlType controlType, PictureInPicture_PipControlStatus status) 580``` 581 582**描述** 583 584更新画中画控制面板控件功能状态。 585 586**起始版本:** 20 587 588 589**参数:** 590 591| 参数项 | 描述 | 592| -- | -- | 593| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 594| [PictureInPicture_PipControlType](#pictureinpicture_pipcontroltype) controlType | 表示画中画控制面板控件类型。目前仅支持VIDEO_PLAY_PAUSE、MICROPHONE_SWITCH、CAMERA_SWITCH和MUTE_SWITCH这几种控件类型,传入其他控件类型无效。 | 595| [PictureInPicture_PipControlStatus](#pictureinpicture_pipcontrolstatus) status | 表示画中画控制面板控件状态。 | 596 597**返回:** 598 599| 类型 | 说明 | 600| -- | -- | 601| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 602 603### OH_PictureInPicture_SetPipControlEnabled() 604 605``` 606int32_t OH_PictureInPicture_SetPipControlEnabled(uint32_t controllerId, PictureInPicture_PipControlType controlType, bool enabled) 607``` 608 609**描述** 610 611设置控制面板控件使能状态。 612 613**起始版本:** 20 614 615 616**参数:** 617 618| 参数项 | 描述 | 619| -- | -- | 620| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 621| [PictureInPicture_PipControlType](#pictureinpicture_pipcontroltype) controlType | 表示画中画控制面板控件类型。 | 622| bool enabled | 表示画中画控制面板控件使能状态。true表示控件为可使用状态,false则为禁用状态。 | 623 624**返回:** 625 626| 类型 | 说明 | 627| -- | -- | 628| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 629 630### OH_PictureInPicture_RegisterStartPipCallback() 631 632``` 633int32_t OH_PictureInPicture_RegisterStartPipCallback(uint32_t controllerId, WebPipStartPipCallback callback) 634``` 635 636**描述** 637 638开启画中画surface创建完成的监听。 639 640**起始版本:** 20 641 642 643**参数:** 644 645| 参数项 | 描述 | 646| -- | -- | 647| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 648| [WebPipStartPipCallback](#webpipstartpipcallback) callback | 画中画窗口创建完成的回调函数。 | 649 650**返回:** 651 652| 类型 | 说明 | 653| -- | -- | 654| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 655 656### OH_PictureInPicture_UnregisterStartPipCallback() 657 658``` 659int32_t OH_PictureInPicture_UnregisterStartPipCallback(uint32_t controllerId, WebPipStartPipCallback callback) 660``` 661 662**描述** 663 664关闭画中画surface创建完成的监听。 665 666**起始版本:** 20 667 668 669**参数:** 670 671| 参数项 | 描述 | 672| -- | -- | 673| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 674| [WebPipStartPipCallback](#webpipstartpipcallback) callback | 画中画窗口创建完成的回调函数。 | 675 676**返回:** 677 678| 类型 | 说明 | 679| -- | -- | 680| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 681 682### OH_PictureInPicture_UnregisterAllStartPipCallbacks() 683 684``` 685int32_t OH_PictureInPicture_UnregisterAllStartPipCallbacks(uint32_t controllerId) 686``` 687 688**描述** 689 690关闭所有画中画surface创建完成的监听。 691 692**起始版本:** 20 693 694 695**参数:** 696 697| 参数项 | 描述 | 698| -- | -- | 699| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 700 701**返回:** 702 703| 类型 | 说明 | 704| -- | -- | 705| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 706 707### OH_PictureInPicture_RegisterLifecycleListener() 708 709``` 710int32_t OH_PictureInPicture_RegisterLifecycleListener(uint32_t controllerId, WebPipLifecycleCallback callback) 711``` 712 713**描述** 714 715开启画中画生命周期状态的监听。 716 717**起始版本:** 20 718 719 720**参数:** 721 722| 参数项 | 描述 | 723| -- | -- | 724| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 725| [WebPipLifecycleCallback](#webpiplifecyclecallback) callback | 画中画窗口的生命周期回调函数。 | 726 727**返回:** 728 729| 类型 | 说明 | 730| -- | -- | 731| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 732 733### OH_PictureInPicture_UnregisterLifecycleListener() 734 735``` 736int32_t OH_PictureInPicture_UnregisterLifecycleListener(uint32_t controllerId, WebPipLifecycleCallback callback) 737``` 738 739**描述** 740 741关闭画中画生命周期状态的监听。 742 743**起始版本:** 20 744 745 746**参数:** 747 748| 参数项 | 描述 | 749| -- | -- | 750| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 751| [WebPipLifecycleCallback](#webpiplifecyclecallback) callback | 画中画窗口的生命周期回调函数。 | 752 753**返回:** 754 755| 类型 | 说明 | 756| -- | -- | 757| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 758 759### OH_PictureInPicture_UnregisterAllLifecycleListeners() 760 761``` 762int32_t OH_PictureInPicture_UnregisterAllLifecycleListeners(uint32_t controllerId) 763``` 764 765**描述** 766 767关闭所有画中画生命周期状态的监听。 768 769**起始版本:** 20 770 771 772**参数:** 773 774| 参数项 | 描述 | 775| -- | -- | 776| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 777 778**返回:** 779 780| 类型 | 说明 | 781| -- | -- | 782| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 783 784### OH_PictureInPicture_RegisterControlEventListener() 785 786``` 787int32_t OH_PictureInPicture_RegisterControlEventListener(uint32_t controllerId, WebPipControlEventCallback callback) 788``` 789 790**描述** 791 792开启画中画控制面板控件动作事件的监听。 793 794**起始版本:** 20 795 796 797**参数:** 798 799| 参数项 | 描述 | 800| -- | -- | 801| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 802| [WebPipControlEventCallback](#webpipcontroleventcallback) callback | 画中画窗口的控件点击事件回调函数。 | 803 804**返回:** 805 806| 类型 | 说明 | 807| -- | -- | 808| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 809 810### OH_PictureInPicture_UnregisterControlEventListener() 811 812``` 813int32_t OH_PictureInPicture_UnregisterControlEventListener(uint32_t controllerId, WebPipControlEventCallback callback) 814``` 815 816**描述** 817 818关闭画中画控制面板控件动作事件的监听。 819 820**起始版本:** 20 821 822 823**参数:** 824 825| 参数项 | 描述 | 826| -- | -- | 827| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 828| [WebPipControlEventCallback](#webpipcontroleventcallback) callback | 画中画窗口的控件点击事件回调函数。 | 829 830**返回:** 831 832| 类型 | 说明 | 833| -- | -- | 834| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 835 836### OH_PictureInPicture_UnregisterAllControlEventListeners() 837 838``` 839int32_t OH_PictureInPicture_UnregisterAllControlEventListeners(uint32_t controllerId) 840``` 841 842**描述** 843 844关闭所有画中画控制面板控件动作事件的监听。 845 846**起始版本:** 20 847 848 849**参数:** 850 851| 参数项 | 描述 | 852| -- | -- | 853| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 854 855**返回:** 856 857| 类型 | 说明 | 858| -- | -- | 859| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 860 861### OH_PictureInPicture_RegisterResizeListener() 862 863``` 864int32_t OH_PictureInPicture_RegisterResizeListener(uint32_t controllerId, WebPipResizeCallback callback) 865``` 866 867**描述** 868 869开启画中画窗口尺寸变化事件的监听。 870 871**起始版本:** 20 872 873 874**参数:** 875 876| 参数项 | 描述 | 877| -- | -- | 878| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 879| [WebPipResizeCallback](#webpipresizecallback) callback | 画中画窗口尺寸变化的回调函数。 | 880 881**返回:** 882 883| 类型 | 说明 | 884| -- | -- | 885| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 886 887### OH_PictureInPicture_UnregisterResizeListener() 888 889``` 890int32_t OH_PictureInPicture_UnregisterResizeListener(uint32_t controllerId, WebPipResizeCallback callback) 891``` 892 893**描述** 894 895关闭画中画窗口尺寸变化事件的监听。 896 897**起始版本:** 20 898 899 900**参数:** 901 902| 参数项 | 描述 | 903| -- | -- | 904| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 905| [WebPipResizeCallback](#webpipresizecallback) callback | 画中画窗口尺寸变化的回调函数。 | 906 907**返回:** 908 909| 类型 | 说明 | 910| -- | -- | 911| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 912 913### OH_PictureInPicture_UnregisterAllResizeListeners() 914 915``` 916int32_t OH_PictureInPicture_UnregisterAllResizeListeners(uint32_t controllerId) 917``` 918 919**描述** 920 921关闭所有画中画窗口尺寸变化事件的监听。 922 923**起始版本:** 20 924 925**参数:** 926 927| 参数项 | 描述 | 928| -- | -- | 929| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 930 931**返回:** 932 933| 类型 | 说明 | 934| -- | -- | 935| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_DEVICE_NOT_SUPPORTED,表示设备不支持画中画。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 936 937### OH_PictureInPicture_SetPipInitialSurfaceRect() 938 939``` 940int32_t OH_PictureInPicture_SetPipInitialSurfaceRect(uint32_t controllerId, int32_t positionX, int32_t positionY,uint32_t width, uint32_t height) 941``` 942 943**描述** 944 945设置画中画拉起动效开始时的位置和大小,可用于实现一镜到底效果。 946 947**起始版本:** 20 948 949**参数:** 950 951| 参数项 | 描述 | 952| -- | -- | 953| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 954| int32_t positionX | 拉起时画中画窗口相对页面左上角的X坐标,单位为px。 | 955| int32_t positionY | 拉起时画中画窗口相对页面左上角的Y坐标,单位为px。 | 956| uint32_t width | 拉起时画中画窗口的宽度,该参数值大于0,单位为px。 | 957| uint32_t height | 拉起时画中画窗口的高度,该参数值大于0,单位为px。 | 958 959**返回:** 960 961| 类型 | 说明 | 962| -- | -- | 963| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 | 964 965### OH_PictureInPicture_UnsetPipInitialSurfaceRect() 966 967``` 968int32_t OH_PictureInPicture_UnsetPipInitialSurfaceRect(uint32_t controllerId) 969``` 970 971**描述** 972 973取消已设置的画中画拉起动效的起始位置和大小。 974 975**起始版本:** 20 976 977**参数:** 978 979| 参数项 | 描述 | 980| -- | -- | 981| uint32_t controllerId | 画中画控制器Id,为非负整数。 | 982 983**返回:** 984 985| 类型 | 说明 | 986| -- | -- | 987| int32_t | 返回结果代码。<br>返回OK,表示函数调用成功。<br>返回WINDOW_MANAGER_ERRORCODE_INCORRECT_PARAM,表示参数错误。<br>返回WINDOW_MANAGER_ERRORCODE_PIP_INTERNAL_ERROR,表示画中画内部错误。 |