欢迎光临散文网 会员登陆 & 注册

开源鸿蒙分布式屏幕开发参考示例

2023-09-03 12:40 作者:AlgoIdeas  | 我要投稿

一、简介

分布式屏幕功能早在OpenHarmony-3.1-Release就已经发布,详情可参考[官方仓库的介绍](https://gitee.com/openharmony/distributedhardware_distributed_screen)。


本示例基于OpenHarmony自带的分布式屏幕相关API,并简单实现了屏幕镜像(或扩展)投屏相关应用功能。示例主要分为ArkTS版本和C++版本,ArkTS版本目前主要基于API9版本分布式屏幕功能的API进行开发,API详细说明可参考:[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)。开发者可自行基于API10开发,其中API10版本增加了停止屏幕镜像(或扩展)的API。


二、源码下载

源码详细说明及下载可参考

https://gitee.com/algoideas/DistributedScreen


三、效果预览

首页 
菜单
设备管理
虚拟屏幕

使用说明

应用界面中展示可以点击镜像投屏或扩展投屏,为了添加分布式设备,可以在菜单中进入设备管理页面进行添加。此外,开发者可创建虚拟屏幕,在本机预览投屏后的效果(开启虚拟屏幕会增加系统负荷)。


四、工程目录

```

entry/src/main/

|-- ets

|   |-- common

|   |   |-- Constant.ets

|   |   |-- Logger.ts             // 日志工具

|   |   |-- TitleBar.ets

|   |-- entryability

|   |   |-- EntryAbility.ets

|   |-- model

|   |   |-- RemoteDeviceModel.ets

|   |-- pages

|   |   |-- DeviceManager.ets

|   |   |-- FilterOption.ets

|   |   |-- Index.ets            // 首页

|   |   |-- ListDeviceView.ets

|   |-- utils

|       |-- Permission.ts

...

docs

|-- distributed_screen

|   |-- BUILD.gn

|   |-- include

|   |-- src

|       |-- dscreen_expand.cpp  // 扩展投屏C++实现

|       |-- dscreen_mirror.cpp  // 镜像投屏C++实现

```

五、具体实现

1. ArkTS实现

通过在IDE中创建工程,并调用[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)中相关API进行实现,具体可参考工程。

主要使用到[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)中的相关API如下:


| 方法名称                 | 描述                      |

| -------------------- | ----------------------- |

| screen.getAllScreens | 获取所有的屏幕,可以是本地屏幕和其他设备的屏幕 |

| screen.makeMirror    | 将屏幕设置为镜像模式              |

| screen.makeExpand    | 将屏幕设置为扩展模式              |


2. C/C++实现

基于分布式屏幕的C/C++相关API实现一个简单的程序,并增加BUILD.gn用于开发者自行编译验证参考。


> 说明:源码及BUILD.gn在OpenHarmony-3.2-Release版本有验证,OpenHarmony-4.x版本,需要修改BUILD.gn


六、相关权限

默认添加以下权限

| 权限名称                                 | 描述                         |

| ------------------------------------ | -------------------------- |

| ohos.permission.CAPTURE_SCREEN       | 允许应用截取屏幕图像                 |

| ohos.permission.DISTRIBUTED_DATASYNC | 允许不同设备间的数据交换               |

| ohos.permission.GET_BUNDLE_INFO      | 允许应用查询其他应用的信息。该权限仅适用于三方应用。 |

| ohos.permission.INTERNET             | 允许使用Internet网络             |


> 说明:应用需采用系统签名,部分权限可根据是否使用相关模块进行删除

开源鸿蒙分布式屏幕开发参考示例的评论 (共 条)

分享到微博请遵守国家法律