HarmonyOS 应用开发《掌上英语》第35篇:媒体资源变更通知相关指导
媒体资源变更通知相关指导photoAccessHelper提供监听指定媒体资源变更的接口。说明在进行功能开发前请查阅开发准备了解如何获取相册管理模块实例和如何申请相册管理模块功能开发相关权限。文档中使用到photoAccessHelper的地方默认为使用开发准备中获取的对象如未添加此段代码报photoAccessHelper未定义的错误请自行添加。媒体资源变更通知相关接口的异步调用仅支持使用callback方式。以下只列出部分接口使用方式其他使用方式可以查阅模块描述。如无特别说明文档中涉及的待获取资源均视为已预置且数据库中存在相应数据。若按示例代码执行后资源为空请确认文件是否已预置以及数据库中是否存在该文件的数据。监听指定URI通过调用registerChange接口监听指定uri。当被监听对象发生变更时返回监听器回调函数的值。对指定PhotoAsset注册监听对指定PhotoAsset注册监听当监听的PhotoAsset发生变更时返回回调。前提条件获取相册管理模块photoAccessHelper实例。申请相册管理模块功能相关权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。以对一张图片注册监听为例通过删除图片触发回调。开发步骤获取指定媒体资源。对指定PhotoAsset注册监听。将指定媒体资源删除。import { dataSharePredicates } from kit.ArkData; import { photoAccessHelper } from kit.MediaLibraryKit; // ... async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { let predicates: dataSharePredicates.DataSharePredicates new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.DISPLAY_NAME, test.jpg); let fetchOptions: photoAccessHelper.FetchOptions { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResultphotoAccessHelper.PhotoAsset await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset await fetchResult.getFirstObject(); console.info(getAssets photoAsset.uri : photoAsset.uri); let onCallback (changeData: photoAccessHelper.ChangeData) { console.info(onCallback successfully, changeData: JSON.stringify(changeData)); } phAccessHelper.registerChange(photoAsset.uri, false, onCallback); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); fetchResult.close(); // ... } catch (err) { console.error(onCallback failed with err: err); // ... } }对指定Album注册监听对指定Album注册监听当Album发生变更时触发监听回调。前提条件获取相册管理模块photoAccessHelper实例。申请相册管理模块功能相关权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。以对一个用户相册注册监听为例通过重命名相册触发回调。开发步骤获取用户相册。对指定Album注册监听。将指定用户相册重命名。import { dataSharePredicates } from kit.ArkData; import { photoAccessHelper } from kit.MediaLibraryKit; // ... async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper) { let predicates: dataSharePredicates.DataSharePredicates new dataSharePredicates.DataSharePredicates(); let albumName: photoAccessHelper.AlbumKeys photoAccessHelper.AlbumKeys.ALBUM_NAME; predicates.equalTo(albumName, test); let fetchOptions: photoAccessHelper.FetchOptions { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResultphotoAccessHelper.Album await phAccessHelper.getAlbums( photoAccessHelper.AlbumType.USER, photoAccessHelper.AlbumSubtype.USER_GENERIC, fetchOptions); let album: photoAccessHelper.Album await fetchResult.getFirstObject(); console.info(getAlbums successfully, albumUri: album.albumUri); let onCallback (changeData: photoAccessHelper.ChangeData) { console.info(onCallback successfully, changeData: JSON.stringify(changeData)); } phAccessHelper.registerChange(album.albumUri, false, onCallback); album.albumName newAlbumName Date.now(); await album.commitModify(); fetchResult.close(); // ... } catch (err) { console.error(onCallback failed with err: err); // ... } }模糊监听通过设置forChildUris值为true来注册模糊监听uri为相册uri时forChildUris为true能监听到相册中文件的变化如果是false只能监听相册本身变化。uri为photoAsset时forChildUris为true、false没有区别。uri为DefaultChangeUri时forChildUris必须为true如果为false将找不到该uri收不到任何消息。对所有PhotoAsset注册监听对所有PhotoAsset注册监听当被监听的PhotoAsset发生变更时返回监听回调。前提条件获取相册管理模块photoAccessHelper实例。申请相册管理模块功能相关权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。下面以对所有PhotoAsset注册监听通过将被监听的PhotoAsset删除触发监听回调为例。开发步骤对所有PhotoAsset注册监听。获取指定媒体资源。将指定媒体资源删除。import { dataSharePredicates } from kit.ArkData; import { photoAccessHelper } from kit.MediaLibraryKit; // ... async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { let onCallback (changeData: photoAccessHelper.ChangeData) { console.info(onCallback successfully, changeData: JSON.stringify(changeData)); } phAccessHelper.registerChange(photoAccessHelper.DefaultChangeUri.DEFAULT_PHOTO_URI, true, onCallback); let predicates: dataSharePredicates.DataSharePredicates new dataSharePredicates.DataSharePredicates(); let fetchOptions: photoAccessHelper.FetchOptions { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResultphotoAccessHelper.PhotoAsset await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset await fetchResult.getFirstObject(); console.info(getAssets photoAsset.uri : photoAsset.uri); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); fetchResult.close(); // ... } catch (err) { console.error(onCallback failed with err: err); // ... } }取消对指定URI的监听取消对指定uri的监听通过调用unRegisterChange接口取消对指定uri的监听。一个uri可以注册多个监听存在多个callback监听时可以取消指定注册的callback的监听不指定callback时取消该uri的所有监听。前提条件获取相册管理模块photoAccessHelper实例。申请相册管理模块功能相关权限’ohos.permission.READ_IMAGEVIDEO’和’ohos.permission.WRITE_IMAGEVIDEO’。下面以取消对图片指定的监听为例取消监听后删除图片不再触发对应的监听回调。开发步骤获取指定媒体资源。取消对指定媒体资源uri的监听。将指定媒体资源删除。import { dataSharePredicates } from kit.ArkData; import { photoAccessHelper } from kit.MediaLibraryKit; // ... async function example(phAccessHelper: photoAccessHelper.PhotoAccessHelper, context: Context) { let predicates: dataSharePredicates.DataSharePredicates new dataSharePredicates.DataSharePredicates(); predicates.equalTo(photoAccessHelper.PhotoKeys.DISPLAY_NAME, test.jpg); let fetchOptions: photoAccessHelper.FetchOptions { fetchColumns: [], predicates: predicates }; try { let fetchResult: photoAccessHelper.FetchResultphotoAccessHelper.PhotoAsset await phAccessHelper.getAssets(fetchOptions); let photoAsset: photoAccessHelper.PhotoAsset await fetchResult.getFirstObject(); console.info(getAssets photoAsset.uri : photoAsset.uri); let onCallback1 (changeData: photoAccessHelper.ChangeData) { console.info(onCallback1, changeData: JSON.stringify(changeData)); } let onCallback2 (changeData: photoAccessHelper.ChangeData) { console.info(onCallback2, changeData: JSON.stringify(changeData)); } phAccessHelper.registerChange(photoAsset.uri, false, onCallback1); phAccessHelper.registerChange(photoAsset.uri, false, onCallback2); phAccessHelper.unRegisterChange(photoAsset.uri, onCallback1); await photoAccessHelper.MediaAssetChangeRequest.deleteAssets(context, [photoAsset]); fetchResult.close(); // ... } catch (err) { console.error(onCallback failed with err: err); // ... } }

相关新闻

提升LLM吞吐量的秘密武器:KVzap-linear-Llama-3.1-8B-Instruct实战案例分享

提升LLM吞吐量的秘密武器:KVzap-linear-Llama-3.1-8B-Instruct实战案例分享

提升LLM吞吐量的秘密武器:KVzap-linear-Llama-3.1-8B-Instruct实战案例分享 【免费下载链接】KVzap-linear-Llama-3.1-8B-Instruct 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/KVzap-linear-Llama-3.1-8B-Instruct KVzap-linear-Llama-3.1-8B-Ins…

2026/11/2 14:19:41 阅读更多 →
掌握STLab Serial Queue:如何用串行队列解决并发编程中的资源竞争问题

掌握STLab Serial Queue:如何用串行队列解决并发编程中的资源竞争问题

掌握STLab Serial Queue:如何用串行队列解决并发编程中的资源竞争问题 【免费下载链接】stlab ASL libraries will be migrated here in the stlab namespace, new libraries will be created here. 项目地址: https://gitcode.com/gh_mirrors/lib/stlab 在并…

2026/11/2 14:19:23 阅读更多 →
解决UE5内网开发中的NuGet包还原问题

解决UE5内网开发中的NuGet包还原问题

1. 问题背景与现象描述最近在Windows内网环境下使用Unreal Engine 5.3进行项目开发时,遇到了一个令人头疼的问题:在Visual Studio中编译项目时,出现了大量NuGet包还原失败的情况。错误提示通常表现为"Unable to find version x.x.x of p…

2026/11/1 20:31:17 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/2 0:25:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/2 10:46:11 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/2 10:47:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/2 1:16:51 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/2 10:46:31 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/2 10:46:26 阅读更多 →

日新闻

周新闻

月新闻