1、版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。音乐播放元服务开发实践版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。为什么要开发元服务服务直达动态卡片、卡片动态卡片、卡片PushPush实时刷新实时刷新免安装秒开、万能卡片随处可及小艺
2、建议小艺建议负一屏负一屏全局搜索全局搜索多入口分发跨设备元服务分享元服务分享跨设备自由流转JD0802版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。51324元服务首次打开从67秒提升到23秒以内,减少用户等待,提升留存服务直达-免安装秒开,提升留存率首包共享HSP包系统自动触发预加载系统自动触发预加载用于首次启动分包预加载分包预加载点击(23S)点击(0.5S)点击(AppStorage.setOrCreate
3、(progress,updateTime*100/this.getDuration()Componentexport struct PlayerBottom StorageLink(progress)progress:number=0Progress(value:this.progress,total:100,type:ProgressType.Capsule).layoutWeight(60%).height(12vp)版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部
4、分 或 全 部,并 不 得 以 任 何 形 式 传 播。实现后台音乐播放1、接入长时任务2、接入AVSession备注:1、需要申请ohos.permission.KEEP_BACKGROUND_RUNNING权限2、在module.json5配置文件中为需要使用长时任务的UIAbility声明相应的长时任务类型backgroundModes:audioPlayback,dataTransfer,startBackgroundTask()let wantAgentInfo=/点击通知后,将要执行的动作列表wants:bundleName:com.example.musicplaydemo,ab
5、ilityName:com.example.musicplaydemo.EntryAbility,/点击通知后,动作类型operationType:wantAgent.OperationType.START_ABILITY,/使用者自定义的一个私有值requestCode:0,/点击通知后,动作执行属性wantAgentFlags:wantAgent.WantAgentFlags.UPDATE_PRESENT_FLAG;/通过wantAgent模块下getWantAgent方法获取WantAgent对象wantAgent.getWantAgent(wantAgentInfo).then(wan
6、tAgentObj)=try backgroundTaskManager.startBackgroundRunning(this.context,backgroundTaskManager.BackgroundMode.AUDIO_PLAYBACK,wantAgentObj).then()=console.info(Succeeded in operationing startBackgroundRunning.);).catch(err)=console.error(Failed to operation startBackgroundRunning.Code is$err.code,mes
7、sage is$err.message););catch(error)console.error(Failed to start background running.Code is$error.code message is$error.message););requestPermissions:name:ohos.permission.KEEP_BACKGROUND_RUNNING,async createSession()this.session=await AVSessionManager.createAVSession(globalThis.context,SESSION_NAME,
8、audio);this.session.activate();版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。实现卡片控制后台音乐播放FormExtensiononAddForm(want)卡片使用方添加卡片preferences持久化formIdUIAbility读取持久化存储的formIdsCard.etspostCardAction用户添加卡片点击播控按钮call通过call后台拉起UIAbilityupda
9、teForm更新所有 卡片数据更新所有卡片数据拉起UIAbility进程123456789版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。音乐元服务分享-实现接续播放元服务(接收端)onCreate/onNewWant元服务(发起端)onShare华为分享服务2、分享接受端恢复分享数据,实现接续播放if(launchParam.launchReason=AbilityConstant.LaunchReason.SH
10、ARE)let shareUrl:string=want.parameterswantConstant.Params.SHARE_URL_KEYlet sharedObj=JSON.parse(shareUrl)let albumIndex=sharedObj.albumIndexlet musicIndex=sharedObj.musicIndexlet seekMs=sharedObj.seekMs1、分享发起端设置分享数据onShare(wantParams)wantParamswantConstant.Params.SHARE_URL_KEY=JSON.stringify(albumI
11、ndex:AppStorage.get(albumIndex),musicIndex:AppStorage.get(musicIndex),seekMs:AppStorage.get(seekMs)设备A设备B华为分享服务版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。音乐元服务分享-页面适配多设备组件组件竖屏竖屏横屏横屏一多能力一多能力音乐、相册、视频和文档菜单在搜索框下面在搜索框右边1、媒体查询2、隐藏3、均分
12、能力4、拉伸能力专辑图片一行显示的个数3个6个1、栅格组件2、折行能力3、均分能力底部音乐播控组件不显示进度条显示进度条1、隐藏能力组件竖屏横屏一多能力版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。元服务页面预览效果展示版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。元服务分享demo效果展示版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。谢谢版权 所 有 华 为终端有限公司 20 23。保留 一切 权利。非经 华 为 终 端有限公司书面许 可,任何 单位和 个人 不得擅 自摘 抄、复制本 文 档 内 容 的 部 分 或 全 部,并 不 得 以 任 何 形 式 传 播。谢谢Jimmy华为终端BG开发者解决方案资深技术专家