medialibrary-album-guidelines.md 3.7 KB
Newer Older
Z
zengyawen 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# 相册资源使用指导

mediaLibrary提供相册相关的接口,供开发者创建、删除相册,获取相册中的图片资源等。

> **说明:**
>
> 在进行功能开发前,请开发者查阅[媒体库开发概述](medialibrary-overview.md),了解如何获取媒体库实例和如何申请媒体库功能开发相关权限。

为了保证应用的运行效率,大部分MediaLibrary调用都是异步的,对于异步调用的API均提供了callback和Promise两种方式,以下示例均采用Promise函数,更多方式可以查阅[API参考](../reference/apis/js-apis-medialibrary.md)

## 获取相册中的图片/视频

获取相册中的图片、视频有两种方式:

15
一是通过[MediaLibrary.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-1)指定相册以获取媒体资源,参考[获取指定相册的媒体资源](medialibrary-resource-guidelines.md#指定相册)
Z
zengyawen 已提交
16

17
二是通过[Album.getFileAssets](../reference/apis/js-apis-medialibrary.md#getfileassets7-3)使用相册Album实例获取媒体资源,参考[获取相册中的图片或视频](medialibrary-resource-guidelines.md#获取相册中的图片或视频)
Z
zengyawen 已提交
18 19 20

## 创建相册

Z
zengyawen 已提交
21
通过[MediaLibrary.createAsset](../reference/apis/js-apis-medialibrary.md#createasset8-1)可以创建媒体资源,可以通过创建图片或视频文件时设置的相对路径,创建出相册。相对路径的命名即为相册名称。
Z
zengyawen 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

**前提条件** 

- 获取媒体库mediaLibrary实例。
- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。

下面以创建相册myAlbum为例。

**开发步骤**

1. 调用getPublicDirectory获取文件公共路径。

   获取文件公共路径的更多指导可参考[获取文件保存的公共目录](medialibrary-filepath-guidelines.md#获取文件保存的公共目录)

2. 调用createAsset新建图片,并设置相对路径为path+'myAlbum/'。

   即在创建相册的同时,往里面放了一张图片。

```ts
async function example() {
H
huweiqi 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54
  let mediaType = mediaLibrary.MediaType.IMAGE;
  let DIR_IMAGE = mediaLibrary.DirectoryType.DIR_IMAGE;
  const context = getContext(this);
  let media = mediaLibrary.getMediaLibrary(context);
  const path = await media.getPublicDirectory(DIR_IMAGE);
  //myAlbum为新建文件保存路径,也是新建相册的名称
  media.createAsset(mediaType, 'test.jpg', path + 'myAlbum/', (err, fileAsset) => {
    if (fileAsset === undefined) {
      console.error('createAlbum failed, message = ' + err);
    } else {
      console.info('createAlbum successfully, message = ' + JSON.stringify(fileAsset));
    }
  });
Z
zengyawen 已提交
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
}
```

## 重命名相册

重命名修改的是相册的FileAsset.albumName属性,即相册名称。修改后再通过[Album.commitModify](../reference/apis/js-apis-medialibrary.md#commitmodify8-3)更新到数据库中。

**前提条件** 

- 获取媒体库mediaLibrary实例。
- 申请媒体库读写权限“ohos.permission.WRITE_MEDIA”。

下面以重命名相册为“newAlbum“为例。

**开发步骤**

1. 建立检索条件,用于获取目标相册。
2. 调用getAlbums获取相册列表。
3. 将相册重命名为“newAlbum“。
4. 调用Album.commitModify将更新的相册属性修改到数据库中。

```ts
async function example() {
H
huweiqi 已提交
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
  let AlbumNoArgsfetchOp = {
    selections: '',
    selectionArgs: [],
  };
  const context = getContext(this);
  let media = mediaLibrary.getMediaLibrary(context);
  let albumList = await media.getAlbums(AlbumNoArgsfetchOp);
  let album = albumList[0];
  album.albumName = 'newAlbum';
  //回调返回空
  album.commitModify().then(() => {
    console.info("albumRename successfully");
  }).catch((err) => {
    console.error("albumRename failed with error: " + err);
  });
Z
zengyawen 已提交
93 94
}
```