#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不足的补充和增强,所以还是要不断的跟进学习呀!

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐