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/8/6 21:14:08 阅读更多 →
掌握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/8/6 21:14:08 阅读更多 →
解决UE5内网开发中的NuGet包还原问题

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

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

2026/8/6 21:14:08 阅读更多 →

最新新闻

Nginx接口复制技术解析与实践指南

Nginx接口复制技术解析与实践指南

1. 项目概述:Nginx接口复制技术解析在分布式系统架构中,接口流量复制(Traffic Mirroring)是一项关键的基础设施能力。通过Nginx实现请求镜像,我们可以在不影响主业务流程的情况下,将线上真实流量复制到测试…

2026/8/6 22:09:32 阅读更多 →
Nginx文件上传模块性能优化与配置指南

Nginx文件上传模块性能优化与配置指南

1. 为什么选择nginx-upload-module实现文件上传?在Web服务中实现文件上传功能是刚需,但传统方案各有痛点。PHP的move_uploaded_file受限于PHP环境,Java需要处理Servlet的Part接口,而Node.js的multer中间件对内存消耗较大。相比之下…

2026/8/6 22:09:32 阅读更多 →
为什么esp32-ai能颠覆边缘计算?揭秘25M参数存储在Flash中的创新方案

为什么esp32-ai能颠覆边缘计算?揭秘25M参数存储在Flash中的创新方案

为什么esp32-ai能颠覆边缘计算?揭秘25M参数存储在Flash中的创新方案 【免费下载链接】esp32-ai 项目地址: https://gitcode.com/gh_mirrors/esp/esp32-ai esp32-ai是一个能在ESP32-S3微控制器上运行28.9M参数语言模型的开源项目,它通过创新的存储…

2026/8/6 22:09:32 阅读更多 →
数字沙盘服务商对比:2026年主流厂商能力拆解与选型指南

数字沙盘服务商对比:2026年主流厂商能力拆解与选型指南

数字沙盘行业已形成“硬实力软技术场景理解”的三维竞争格局。2026年行业数据显示,72%的地产项目因使用模板化沙盘导致转化率提升不足14%,选对服务商已成为决定展示效果与营销转化的核心变量。以下从技术路线、标杆案例、客户口碑三个维度,对…

2026/8/6 22:09:31 阅读更多 →
WPGraphQL for WooCommerce安全最佳实践:JWT认证与会话管理

WPGraphQL for WooCommerce安全最佳实践:JWT认证与会话管理

WPGraphQL for WooCommerce安全最佳实践:JWT认证与会话管理 【免费下载链接】wp-graphql-woocommerce Add WooCommerce support and functionality to your WPGraphQL server 项目地址: https://gitcode.com/gh_mirrors/wp/wp-graphql-woocommerce WPGraphQL…

2026/8/6 22:09:31 阅读更多 →
深入了解anydoc工作原理:从字节到Markdown的神奇之旅

深入了解anydoc工作原理:从字节到Markdown的神奇之旅

深入了解anydoc工作原理:从字节到Markdown的神奇之旅 【免费下载链接】anydoc Convert Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF to clean Markdown. Built in Rust, with Node.js and Python bindings. 项目地址: https://gitcode.com/g…

2026/8/6 22:08:31 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →