中国总决赛
全球总决赛
学习进度
待补充
省赛
能力分类
统一互联
能力模型
OpenHarmony标准设备文件、图片和视频的分享能力

图库源码开发说明


1. 简介

图库是系统内置的可视资源访问应用,提供图片和视频的管理、浏览、显示、编辑操作、分享等功能,并支持默认相册和用户相册管理。 图库项目采用 TS 语言开发。
notion image
图库整体以 OpenHarmony 既有的 MVVM 的 App 架构设计为基础,向下扩展出一套 MVP(View, Presenter, Model)分层架构(既有的 MVVM 框架整体理解为新扩展的 MVP 框架的 View 层),用于处理图库的业务逻辑与数据管理
各层的作用分别如下:
  • 视图层(View):负责更新 UI 显示以及触摸与点击事件的监听。
  • 展现层(Presenter):负责处理视图层(View)发送的业务逻辑处理请求,并连通 Model 层获取数据。
  • 模型层(Model):负责处理展现层(Presenter) 中关于数据处理的请求以及返回数据请求结果。
应用各层中重要类及其功能如下表所示
模块
层级
类名
作用
photos
视图层
phone.view.Index
phone图库入口画面的视图层逻辑控制类
photos
视图层
pad.view.Index
pad图库入口画面的视图层逻辑控制类
photos
视图层
TimelinePage
图库图片视图层逻辑控制类
photos
视图层
AlbumSetPage
图库相册视图层逻辑控制类
photos
视图层
PhotoBrowser
图库大图浏览视图层逻辑控制类
photos
视图层
PhotoGridPage
图库宫格视图层逻辑控制类
photos
视图层
ThirdSelectAlbumSetPage
图库三方选择相册视图层逻辑控制类
photos
视图层
ThirdSelectPhotoGridPage
图库三方选择宫格视图层逻辑控制类
photos
视图层
ThirdSelectPhotoBrowser
图库三方选择大图浏览视图层逻辑控制类
photos
展现层
GroupItemDataSource
图库列大图浏览展现层数据逻辑类
photos
展现层
TimelineItemDataSource
图库日试图展现层数据逻辑类
photos
展现层
AlbumsDataSource
图库相册展现层数据逻辑类
photos
展现层
GroupItemDataSource
图库宫格展现层数据逻辑类
photos
展现层
SelectManager
图库展现层选择逻辑类
photos
展现层
BroadCast
图库展现层消息分发类
photos
模型层
AlbumDataItem
图库模型层相册信息类
photos
模型层
MediaDataItem
图库模型层媒体信息类
photos
模型层
TimelineDataItem
图库模型层日试图信息类

3. 图库分享功能

3.1 背景

行业设备存在互联互通诉求:1.OpenHarmony 富富设备之间主要是文件传输、图片 / 视频传输。
图库分享功能为OHOS和HOS富对富设备之间进行图片和文件共享,通过WiFi P2P进行设备发现和文件传输。
增强图库文件互联互通能力,解决以下问题:
◦ 支持 HOS(源)->OHOS(目标)设备图片 / 视频分享
◦ 支持 OHOS 和 OHOS 设备之间图片 / 视频分享

3.2 图库流程设计

图库分享流程设计如下,展示图库分享的整体交互流程。
notion image

3.3 图库分享交互流程

WiFi P2P 服务会话创建流程如下 :
  1. WiFi P2P 发现
  1. WiFi P2P 连接
  1. TCP Socket 建立会话
WiFi P2P 文件发送服务 :
  1. P2P连接后,WiFi P2P GO 设备当做 TCP 服务端, 主动监听 9000 端口, GC 需主动连接 GO 建立双向通讯
  1. TCP连接建立成功后,GC端解析分享的文件,向GO端发起文件分享,发送文件数据流, GO端接收数据流,保存并写入到文件中
  1. 文件接收结束后,GO端发送消息,通知GC端,断开TCP连接

3.4 图库分享使用说明

操作步骤:
1.首先进入图库应用, 长按选择一张图片,点击分享按钮
notion image
2.拉起分享弹窗,获取设备列表,选择设备分享图片/视频
notion image
3.接收端收到发送的图片,拉起接收弹窗,展示接收进度
notion image
4.发送/接收完成, 接收端接收弹窗收起,展示接收的视频/图片,发送端弹窗收起
注意事项:
  1. 传输图片/视频大小限制100M
Loading...
Koreyoshi
Koreyoshi
一个无可救药的乐观主义者
Latest posts
软件测试:集成测试
2025-3-25
软件测试:控制流测试
2025-3-25
软件测试:系统测试
2025-3-25
软件测试:数据流测试
2025-3-25
软件测试:测试驱动开发
2025-3-25
软件工程:面向对象的概念和记号
2025-3-24
Announcement
🎉写给自己的2025心愿🎉
保研
国奖
完善博客
学一门乐器
发表一篇论文
拍摄人生照片
去3个城市旅游
专业课知识视频
拍摄毕业季视频
----- 2025 ------
👏希望我们一起变好👏