• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 相册资源使用指导
2
3mediaLibrary提供相册相关的接口,供开发者创建、删除相册,获取相册中的图片资源等。
4
5> **说明:**
6>
7> 在进行功能开发前,请开发者查阅[媒体库开发概述](medialibrary-overview.md),了解如何获取媒体库实例和如何申请媒体库功能开发相关权限。
8
9为了保证应用的运行效率,大部分MediaLibrary调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用Promise函数,更多方式可以查阅[API参考](../reference/apis/js-apis-medialibrary.md)。
10
11## 获取相册中的图片/视频
12
13获取相册中的图片、视频有两种方式:
14
15一是通过[MediaLibrary.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-1)指定相册以获取媒体资源,参考[获取指定相册的媒体资源](medialibrary-resource-guidelines.md#指定相册);
16
17二是通过[Album.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-3)使用相册Album实例获取媒体资源,参考[获取相册中的图片或视频](medialibrary-resource-guidelines.md#获取相册中的图片或视频)。
18
19## 创建相册
20
21通过[MediaLibrary.createAsset](../reference/apis/js-apis-medialibrary.md#createasset8-1)可以创建媒体资源,可以通过创建图片或视频文件时设置的相对路径,创建出相册。相对路径的命名即为相册名称。
22
23**前提条件**
24
25- 获取媒体库mediaLibrary实例。
26- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。
27
28下面以创建相册myAlbum为例。
29
30**开发步骤**
31
321. 调用getPublicDirectory获取文件公共路径。
33
34   获取文件公共路径的更多指导可参考[获取文件保存的公共目录](medialibrary-filepath-guidelines.md#获取文件保存的公共目录)。
35
362. 调用createAsset新建图片,并设置相对路径为path+'myAlbum/'。
37
38   即在创建相册的同时,往里面放了一张图片。
39
40```ts
41async function example() {
42  let mediaType = mediaLibrary.MediaType.IMAGE;
43  let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
44  const context = getContext(this);
45  let media = mediaLibrary.getMediaLibrary(context);
46  const path = await media.getPublicDirectory(DIR_IMAGE);
47  //myAlbum为新建文件保存路径,也是新建相册的名称
48  media.createAsset(mediaType, 'test.jpg', path + 'myAlbum/', (err, fileAsset) => {
49    if (fileAsset === undefined) {
50      console.error('createAlbum failed, message = ' + err);
51    } else {
52      console.info('createAlbum successfully, message = ' + JSON.stringify(fileAsset));
53    }
54  });
55}
56```
57
58## 重命名相册
59
60重命名修改的是相册的FileAsset.albumName属性,即相册名称。修改后再通过[Album.commitModify](../reference/apis/js-apis-medialibrary.md#commitmodify8-3)更新到数据库中。
61
62**前提条件**
63
64- 获取媒体库mediaLibrary实例。
65- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。
66
67下面以重命名相册为“newAlbum“为例。
68
69**开发步骤**
70
711. 建立检索条件,用于获取目标相册。
722. 调用getAlbums获取相册列表。
733. 将相册重命名为“newAlbum“。
744. 调用Album.commitModify将更新的相册属性修改到数据库中。
75
76```ts
77async function example() {
78  let AlbumNoArgsfetchOp = {
79    selections: '',
80    selectionArgs: [],
81  };
82  const context = getContext(this);
83  let media = mediaLibrary.getMediaLibrary(context);
84  let albumList = await media.getAlbums(AlbumNoArgsfetchOp);
85  let album = albumList[0];
86  album.albumName = 'newAlbum';
87  //回调返回空
88  album.commitModify().then(() => {
89    console.info("albumRename successfully");
90  }).catch((err) => {
91    console.error("albumRename failed with error: " + err);
92  });
93}
94```
95