回复
#2023盲盒+码# API10中壁纸管理服务的接口变化和使用方式 原创
westinyang
发布于 2023-9-17 21:40
浏览
0收藏
【本文正在参加 2023「盲盒」+码有奖征文活动】 https://ost.51cto.com/posts/25284
@toc
概述
在OpenHarmony4.0(API10)中,@ohos.wallpaper (壁纸) 模块增加了多个接口,我们可以通过 setCustomWallpaper、setVideo分别来设置系统的静态壁纸和动态壁纸,我们需要在应用中权限配置中加入 ohos.permission.SET_WALLPAPER 权限。
与API9的差异
- 设置壁纸从 setImage 变更为 setCustomWallpaper
- 设置动态壁纸为API10新增
- WallpaperResourceType 为新增枚举类型
- 监听壁纸变化从 wallpaper.on(‘colorChange’) 变更为 wallpaper.on(‘wallpaperChange’)
设置静态壁纸
- wallpaper.setCustomWallpaper
- 第一个参数填写沙箱路径,可以通过
hdc file send test.png /data/app/el2/100/base/你的应用包名/haps/entry/files/
发送文件到应用目录 - 第二个参数为壁纸类型,WALLPAPER_SYSTEM 为桌面壁纸,WALLPAPER_LOCKSCREEN 为锁屏壁纸
let wallpaperPath = "/data/storage/el2/base/haps/entry/files/test.png";
try {
wallpaper.setCustomWallpaper(wallpaperPath, wallpaper.WallpaperType.WALLPAPER_SYSTEM).then(() => {
console.log(`设置静态壁纸成功`);
}).catch((error) => {
console.error(`设置静态壁纸失败: ${JSON.stringify(error)}`);
});
} catch (error) {
console.error(`设置静态壁纸失败: ${JSON.stringify(error)}`);
}
设置动态壁纸
- wallpaper.setVideo
- 参数与上面的设置静态壁纸一样
let wallpaperPath = "/data/storage/el2/base/haps/entry/files/test.mp4";
try {
wallpaper.setVideo(wallpaperPath, wallpaper.WallpaperType.WALLPAPER_SYSTEM).then(() => {
console.log(`设置动态壁纸成功`);
}).catch((error) => {
console.error(`设置动态壁纸失败: ${JSON.stringify(error)}`);
});
} catch (error) {
console.error(`设置动态壁纸失败: ${JSON.stringify(error)}`);
}
监听壁纸变化
- 除了设置壁纸,也可以订阅壁纸变化通知事件,用于自定义的业务逻辑处理
- 在回调函数listener中,WallpaperType与上面静态壁纸设置中的参数二一样
- 而resourceType是壁纸资源的枚举类型,也是API10新增的类型,DEFAULT为默认图片资源,PICTURE为图片资源,VIDEO为视频资源,PACKAGE为包资源
try {
let listener = (wallpaperType, resourceType) => {
console.log(`壁纸变更...`);
};
wallpaper.on('wallpaperChange', listener);
} catch (error) {
console.error(`运行异常: ${JSON.stringify(error)}`);
}
总结
API9虽然出具完备的开发体系,但目前看来API并没有想象中的那么稳定,因为在API10中,除了壁纸管理服务,还有网络连接管理等很多模块的接口都有所调整,有稳定性提升,也有对原有API不足的补充和增强,所以还是要不断的跟进学习呀!
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
赞
收藏
回复
相关推荐