目前本人用的版本为:5.0.3.806
module.json5中的申请长时任务已经可以不用设置,以及长时任务需要的@ohos.resourceschedule.backgroundTaskManager和@ohos.app.ability.wantAgent也不用了,
下面是点击按钮播放歌曲并且同步到播控中心的案例:
@Entry
@Component
struct Index {
song: songItemType = {
//网络图片,如果失效,请更换别的图片
img: 'https://imge.kugou.com/stdmusic/20240919/20240919103002858967.jpg',
name: '秋风吹起',
author: '清唯',
//网络音乐,如果失效,请更换别的音乐
url: 'https://webfs.kugou.com/202409222148/238099cd5031b52cad74b156b1918769/v3/0b3b79e5102779dabe498bd5429186c9/yp/p_0_960119/ap1014_us0_mii0w1iw8z2ai2iphcu80ooo2ki81120_pi406_mx671901531_s941127250.mp3',
id: '0007',
}
build() {
Column() {
Button("播放歌曲")
.onClick(() => {
AvPlayerManager.player!.url = this.song.url
AvSessionManager.setAvMetaData(this.song)
})
}
.height('100%')
.width('100%')
}
}
av播放器:
export class AvPlayerManager {
//音视频播放实例
static player: media.AVPlayer | null = null
//创建单例的音视频播放实例的方法(在Ability创建时初始化)
static async init() {
if (!AvPlayerManager.player) {
AvPlayerManager.player = await media.createAVPlayer()
}
//监听stage的属性变化
AvPlayerManager.player.on("stateChange", (stage) => {
switch (stage) {
case "initialized":
AvPlayerManager.player?.prepare()
console.log('MyLogger:initialized')
break;
case "prepared":
AvPlayerManager.player?.play()
console.log('MyLogger:prepared')
break;
}
})
}
}
会话管理:
注意:会话这里一定要满足两点,不然播控中心无法显示你播放的应用
1.一定要设置会话的数据
2.会话最少需要一个on在监控播控中心
export class AvSessionManager {
//会话
static session: avSession.AVSession
//初始化对象
static async init(context: Context) {
AvSessionManager.session = await avSession.createAVSession(context, 'bgPlay', "audio")
console.log("MyLogger:sessionId:" + AvSessionManager.session.sessionId)
AvSessionManager.registerEvent()
}
//监控播控中心
static registerEvent() {
AvSessionManager.session.on('play', () => {
console.log("MyLogger:play")
AvPlayerManager.player?.play()
})
}
//设置会话数据(播控中心的页面)
static async setAvMetaData(song: songItemType) {
await AvSessionManager.session.setAVMetadata({
assetId: song.id,
title: song.name,
artist: song.author,
mediaImage: song.img,
})
}
}
export interface songItemType {
img: string
name: string
author: string
url: string
id: string
}
Ability进行初始化