開源鴻蒙分布式屏幕開發(fā)參考示例
一、簡介
分布式屏幕功能早在OpenHarmony-3.1-Release就已經(jīng)發(fā)布,詳情可參考[官方倉庫的介紹](https://gitee.com/openharmony/distributedhardware_distributed_screen)。
本示例基于OpenHarmony自帶的分布式屏幕相關(guān)API,并簡單實現(xiàn)了屏幕鏡像(或擴展)投屏相關(guān)應(yīng)用功能。示例主要分為ArkTS版本和C++版本,ArkTS版本目前主要基于API9版本分布式屏幕功能的API進行開發(fā),API詳細(xì)說明可參考:[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)。開發(fā)者可自行基于API10開發(fā),其中API10版本增加了停止屏幕鏡像(或擴展)的API。
二、源碼下載
源碼詳細(xì)說明及下載可參考
https://gitee.com/algoideas/DistributedScreen
三、效果預(yù)覽




使用說明
應(yīng)用界面中展示可以點擊鏡像投屏或擴展投屏,為了添加分布式設(shè)備,可以在菜單中進入設(shè)備管理頁面進行添加。此外,開發(fā)者可創(chuàng)建虛擬屏幕,在本機預(yù)覽投屏后的效果(開啟虛擬屏幕會增加系統(tǒng)負(fù)荷)。
四、工程目錄
```
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++實現(xiàn)
|? ? ? ?|-- dscreen_mirror.cpp? // 鏡像投屏C++實現(xiàn)
```
五、具體實現(xiàn)
1. ArkTS實現(xiàn)
通過在IDE中創(chuàng)建工程,并調(diào)用[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)中相關(guān)API進行實現(xiàn),具體可參考工程。
主要使用到[@ohos.screen](https://docs.openharmony.cn/pages/v3.2/zh-cn/application-dev/reference/apis/js-apis-screen.md)中的相關(guān)API如下:
| 方法名稱? ? ? ? ? ? ? ? ?| 描述? ? ? ? ? ? ? ? ? ? ? |
| -------------------- | ----------------------- |
| screen.getAllScreens | 獲取所有的屏幕,可以是本地屏幕和其他設(shè)備的屏幕 |
| screen.makeMirror? ? | 將屏幕設(shè)置為鏡像模式? ? ? ? ? ? ? |
| screen.makeExpand? ? | 將屏幕設(shè)置為擴展模式? ? ? ? ? ? ? |
2. C/C++實現(xiàn)
基于分布式屏幕的C/C++相關(guān)API實現(xiàn)一個簡單的程序,并增加BUILD.gn用于開發(fā)者自行編譯驗證參考。
> 說明:源碼及BUILD.gn在OpenHarmony-3.2-Release版本有驗證,OpenHarmony-4.x版本,需要修改BUILD.gn
六、相關(guān)權(quán)限
默認(rèn)添加以下權(quán)限
| 權(quán)限名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?| 描述? ? ? ? ? ? ? ? ? ? ? ? ?|
| ------------------------------------ | -------------------------- |
| ohos.permission.CAPTURE_SCREEN? ? ? ?| 允許應(yīng)用截取屏幕圖像? ? ? ? ? ? ? ? ?|
| ohos.permission.DISTRIBUTED_DATASYNC | 允許不同設(shè)備間的數(shù)據(jù)交換? ? ? ? ? ? ? ?|
| ohos.permission.GET_BUNDLE_INFO? ? ? | 允許應(yīng)用查詢其他應(yīng)用的信息。該權(quán)限僅適用于三方應(yīng)用。 |
| ohos.permission.INTERNET? ? ? ? ? ? ?| 允許使用Internet網(wǎng)絡(luò)? ? ? ? ? ? ?|
> 說明:應(yīng)用需采用系統(tǒng)簽名,部分權(quán)限可根據(jù)是否使用相關(guān)模塊進行刪除