OpenHarmony 分布式相册代码片段

分布式媒体库

在 API6+ 开始 OpenHarmony (后续称ohos) 拥有了新的系统能力 multimedialibrary (分布式媒体库)

分支 - 分布式相册

而在目前的相册应用中通过 HarmonyOS 的超级终端功能 我们可以访问第二台 HarmonyOS 设备上的相册 而下面将演示如何使应用快速使用分布式相册这个能力

媒体库访问鉴权

在 DevEco Studio 中打开应用目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
magoo@hyperv-ubuntu > ~/share/OpenHarmony/Lava/entry/src > tree
.
├─main
│ ├─config.json
│ ├─java
│ │ └─cn
│ │ └─magicst
│ │ └─lava
│ │ ├─MainAbility.java
│ │ ├─MyApplication.java
│ │ └─slice
│ │ └─MainAbilitySlice.java
│ └─resources
│ ├─icon.png
│ ├─base
│ │ ├─element
│ │ ├─color.json
│ │ ├─float.json
│ │ ├─string.json
│ │ ├─graphic
│ │ ├─background_ability_main.xml
│ │ ├─layout
│ │ ├─land_main.xml
│ │ ├─port_main.xml
│ │ ├─media
│ │ ├─icon.png
│ │ ├─pic1.png
│ │ └─profile
│ └─rawfile
├─ohosTest
└─test

main 目录中找到 config.json 申明权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"module":{
...
"reqPermissions":[
{
"name":"ohos.permission.MEDIA_LOCATION",
"reason":"request permission"
},
{
"name":"ohos.permission.READ_MEDIA",
"reason":"request permission"
},
{
"name":"ohos.permission.WRITE_MEDIA",
"reason":"request permission"
},
...
]
...
}

接入分布式媒体库

分支 - 接入分布式相册

现在开始就可以正式让应用使用ohos的分布式相册

引用媒体库接口

1
import MediaLib from '@ohos.multimedia.mediaLibrary';

获取媒体库实例

1
MediaLibraryAccess.media = MediaLib.getMediaLibrary(this.context);

获取周围设备(有效的)信息

1
let devices =await MediaLibraryAccess.media.getActivePeers();

获取文件列表

1
2
let fileResult = await MediaLibraryAccess.media.getFileAssets(AlbumDDefine.getFetchOpt(AlbumDefine.ALBUM_NAME_ALL, dev.networkId));
// dev 为 devices 的元素

这样就完成对 ohos 分布式媒体库的接入和访问

分布式媒体库的API获取

1
2
3
4
5
6
7
8
9
10
11
12
13
interface MediaLibrary{
...
// @systemapi
getActivePeers(): Promise<Array<Peerlnfo>>;
}

// @systemapi
interface Peerlnfo{
readonly deviceName: string;
readonly networkld: string;
readonly deviceType: DeviceType;
readonly isOnline: boolean;
}

以上就是 ohos 应用对分布式媒体库的分支 分布式相册能力的访问和读取了