
项目名称双镜记忆相机手机里最容易变多的东西往往不是文件而是照片。一次旅行、一次见面、一次偶然路过的街口最后都会变成相册里几十张相似的缩略图。时间久了照片还在但“为什么拍、和谁拍、在哪里拍”会先一步变模糊。双镜记忆相机的出发点不是替代系统相册而是做一个更垂直的记忆入口以地图为底座用前后双拍记录人和景用智能体唤起附近地点用端云同步承接换机和多设备用隐私防窥守住不想被旁人看见的画面。它更像一本会定位、会提醒、会整理、会流转的个人记忆册。我在实现时没有把 HarmonyOS 6.1 能力当成“功能清单”堆进去而是先从官方新能力页里挑出与记忆相机真正相关的能力再把它们压进一个完整闭环拍摄定位整理生成分享同步保护。01 先把新能力放进作品逻辑HarmonyOS 6.1 的特性很多双镜记忆相机重点选择了与照片记忆强相关的能力并把它们分成“已落地能力”和“可延展能力”两层。官方特性页能力在双镜记忆相机中的落点当前处理方式沉浸光感组件首页地图、底部导航、相机页、照片详情页的光感式空间层级已作为视觉和布局语言落地适配深浅色、沉浸式安全区和大屏布局智能体首页附近景点智能体支持根据当前位置推荐周边内容已接入 InsightIntent 与位置服务智感握姿左手、右手、双手握持时调整交互重心已接入 MultimodalAwarenessKit并保留设备不支持时的降级碰一碰公开照片或短片的近场分享入口已接入 ShareKit knockShare 能力AI 隔空传送隔空手势触发附近分享已接入 gesturesShare 注册与回调华为分享照片、短片对外流转已使用系统分享与 ShareKit 承接跨设备互通手机拍摄平板或电脑继续查看、整理已从布局和账号同步两侧做适配应用接续从一台设备继续浏览同一组记忆作为下一阶段能力当前先完成同账号数据恢复实况窗短片生成、故地重游提醒、同步进度当前完成通知和点击回流可继续升级为实况窗隐私防窥查看照片、保险箱时识别窥屏状态并遮挡已接入 DeviceSecurityKit 防窥能力预加载与端云能力登录后同步照片索引、缩略资产和短片记录已用 Cloud Foundation Kit 完成数据快照同步3D ToF更高可信的人像与距离感知保护作为后续增强点不在当前版本里硬写成已完成02 地图是底座不和系统相册抢入口照片多的时候传统相册的时间轴会越来越长。双镜记忆相机换了一个视角每张照片先落到地图上成为一个可以被重访的坐标。用户不是在几千张图里翻找“那天的照片”而是在地图上回到“那条路、那家店、那座桥”。这部分用 LocationKit 获取当前位置用地图能力承载记忆点再根据日期、地点和距离把照片归成组。首页不做大而全的相册入口而是围绕“附近”和“记忆点”展开。用户打开应用时看到的是地图、当前位置、附近景点、曾经拍过的照片而不是一整面测试缩略图。沉浸光感组件给了这个界面很好的方向。地图不应该被厚重面板压住底部导航也不应该挡住地图缩放和标记。我把首页设计成更轻的光感层地图在底记忆卡片悬浮导航贴合安全区深色模式下用柔和高光暗示边界浅色模式下用低饱和玻璃感减少遮挡。这样既能保留空间感也能让用户的注意力停在照片和地点上。开发上需要特别注意三个点// 位置获取失败时不直接抛给用户专业错误而是给出可行动提示constrequest:geoLocationManager.SingleLocationRequest{locatingTimeoutMs:10000,locatingPriority:geoLocationManager.LocatingPriority.PRIORITY_ACCURACY};constcurrentLocationawaitgeoLocationManager.getCurrentLocation(request);第一定位服务关闭、权限未授权、当前位置不新鲜提示文案要像面向用户的产品文案而不是像日志。第二地图控件要让出底部导航高度尤其是真机上还有手势条和不同屏幕比例。第三平板和电脑上不能简单放大手机界面而是要把地图、列表、详情拆成左右结构让大屏真的可用。03 双镜记录“人、景、物”很多照片只留下景过了很久却想不起当时是谁站在镜头后面。双镜记忆相机把后摄画面作为主照片把前摄画面作为小窗叠在左下角让“我在这里”的证据也进入画面。它不是自拍贴纸而是记忆关系的一部分。这里对应的是 CameraKit 的拍摄能力和图像合成服务。实现时我把双拍拆成两个阶段先完成主摄拍摄再由用户明确触发第二次拍摄避免自动抢拍造成误操作。第二次拍摄完成后DualPhotoComposerService会把前摄照片裁成圆形小窗按主图尺寸计算边距、描边和阴影再输出一张完整照片。这类功能在真机上最怕“看起来能跑操作起来很卡”。所以我把合成尺寸做了上限前摄小窗按比例计算避免超大图直接拖慢第二次拍照后的等待时间。用户感知上按钮状态也要清楚正在连接相机、等待第二拍、正在合成、保存完成最好都能在界面上说人话。04 智能体让“附近”和“故地重游”变成入口双镜记忆相机的首页里有一个附近景点智能体。它不是聊天框而是一个很轻的入口用户点一下智能体拿到当前位置再把周边适合拍照、适合重游、适合生成记忆故事的地点推荐出来。另一条线是“故地重游”当用户回到曾经拍照的地方系统可以提醒他打开当时的照片重新看见那天的人和景。端侧调用的关键是 InsightIntent 与位置服务的配合。当前工程中智能体入口通过NearbyAgentLocationIntent调用AgentLocationService位置服务会优先使用新鲜的最近位置不够新再请求当前定位并把坐标转换成适合地图插件使用的格式。constlocationResultawaitAgentLocationService.getCurrentLocation();return{code:0,result:{success:locationResult.success,amapLocation:locationResult.amapLocation,accuracyMeters:locationResult.accuracyMeters,resultDesc:locationResult.resultDesc}};这里我有一个很深的体会智能体能力不能只演示“能调起来”。真正有价值的是让它成为应用里的一个自然动作。用户在地图上找附近景点智能体提供附近推荐用户在相册里选了多张照片智能描述补齐文字用户准备分享一键成片把照片变成短片。AI 不应该抢主流程而应该把原来麻烦的步骤压短。05 从照片到短片一键把回忆讲出来照片整理完之后下一步往往是分享。用户不一定想手动剪辑但很愿意得到一条有节奏的回忆短片。双镜记忆相机在相册里提供两条路径普通成片和智能生成短片。普通成片走本地图片解码、帧序列和配乐合成适合快速生成智能生成短片可以结合照片内容、地点、时间和文字描述生成更有故事感的成片。为了避免用户误解界面里不展示“CloudFoundation”“模型任务”等专业词而是显示“登录后同步”“同步完成”“生成中”“导出到相册”这些用户能理解的状态。这部分也适合和实况窗做进一步结合。比如短片生成时间较长时可以把生成进度放进实况窗故地重游推送触发后也可以从实况窗一键回到对应记忆点。当前版本先完成了通知、点击回流和视频记录管理后续可以继续接入更完整的系统级展示。06 碰一碰、隔空传送和华为分享让记忆自然流转照片应用不能只停在“本机能看”。尤其是双镜记忆相机这种偏记忆整理的工具很容易出现三个场景手机拍完平板整理手机生成短片电脑演示换机之后希望登录账号还能找回照片索引和私密记录。分享层面工程里同时保留了系统分享和 ShareKit 能力。普通按钮走系统分享近场互动可以走碰一碰和隔空手势。harmonyShare.on(knockShare,this.nearbyShareCallback);harmonyShare.on(gesturesShare,registry,this.nearbyShareCallback);这样做的好处是入口不会变复杂。用户仍然看到“分享”这个动作但在合适设备、合适场景下可以自然升级成碰一碰或隔空传送。对开发者来说也要处理好无内容、文件未生成、分享中、设备不支持这些状态否则新能力反而会显得不稳定。同步层面双镜记忆相机接入 Cloud Foundation Kit把照片记录、短片记录和压缩后的云端资产组织成同账号快照。用户登录华为账号后应用先显示账号名称再同步同步完成后只提示“同步完成”。如果登录失败也不把 SDK 错误直接扔出来而是提示用户重新登录或稍后再试。跨设备互通不只是一句口号。手机、平板、电脑的页面密度和操作方式完全不同手机需要底部导航和单列流程平板适合左右分栏电脑或 2in1 更适合侧边导航、地图大画布和详情面板。数据同步解决“能不能继续”响应式布局解决“继续之后好不好用”。07 智感握姿让界面理解手相机和地图都是强手持场景。左手拿、右手拿、双手拿适合点击的位置并不一样。HarmonyOS 6.1 的智感握姿能力给了一个很有意思的切入点界面可以感知用户当前握持方式然后调整主要按钮和推荐卡片的重心。工程里通过 MultimodalAwarenessKit 监听holdingHandChanged根据左手、右手、双手状态更新 UI 偏移。比如用户右手握持时核心按钮更靠近右下双手握持时底部操作更居中如果设备不支持或权限未开启就退回默认布局。motion.on(holdingHandChanged,this.holdingHandChangedCallback);这个能力不适合做得很夸张。真正好的交互应该是用户不一定注意到它但会感觉按钮更顺手。双镜记忆相机里我把它放在地图推荐、相机按钮和底部导航这些高频位置上不把它做成一个单独的炫技页面。08 隐私防窥和保险箱守住不想被旁人看见的照片照片是非常私密的数据。双镜记忆相机里有两层保护第一层是保险箱用户需要本地认证后才能查看、恢复或导出私密照片第二层是隐私防窥进入相册、详情或保险箱时如果系统识别到旁人窥屏就给照片区域加遮罩。constenabledawaitdlpAntiPeep.isDlpAntiPeepSwitchOn();dlpAntiPeep.on(dlpAntiPeep,this.galleryAntiPeepCallback);awaitdlpAntiPeep.setAntiPeepMaskLayer(windowId);这类安全能力有两个细节很重要。第一权限和设备能力要说清楚缺少防窥权限、设备不支持、系统开关未开启是三种完全不同的情况。第二文案要面向用户而不是面向评审或开发者。用户不需要知道“DLP Anti Peep”只需要知道“防窥保护已开启”“系统防窥未开启”“设备暂不支持防窥”。保险箱的数据也必须跟账号同步闭环打通。否则用户换机后普通相册恢复了私密照片却丢了这会直接破坏信任。当前工程把保险箱记录纳入同一套同步状态里登录后再同步未登录时提醒用户先登录账号。09 不是堆特性而是让记忆闭环更完整回头看这个项目HarmonyOS 6.1 新能力真正帮到我的地方是把“拍一张照片”扩成了一个更完整的系统体验拍摄时CameraKit 和双镜合成让人、景、物同时被记录。整理时MapKit、LocationKit 和智能体把照片落到地图和附近地点上。生成时智能描述和一键成片把静态照片变成可分享的故事。流转时碰一碰、隔空传送、华为分享和端云同步让记忆跨设备移动。保护时隐私防窥、保险箱和本地认证让照片只在合适的人面前出现。设计时沉浸光感、深浅色模式、平板和电脑适配让同一套代码在不同设备上保持秩序感。对我来说双镜记忆相机最想表达的不是“我用了多少个新能力”而是“这些能力能不能真的让一个场景变好”。照片值得被记住不只是因为它清晰而是因为它能把当时的人、地点、时间和心情重新带回来。HarmonyOS 6.1 提供的系统能力让这种记忆不再只停在一张图里而是可以被唤起、被整理、被分享也被安静地保护起来。