媒体元数据开发指导
场景介绍
媒体元数据主要用于媒体数据的存放和读取,包含诸如媒体资源的描述、创建日期、作者、封面图片等等。
接口说明
接口名 | 功能描述 |
---|---|
Builder() | 媒体元数据构造器的构造函数。 |
Builder(AVMetadata source) | 媒体元数据构造器的带参构造函数。 |
setText(String key, CharSequence value) | 用于存储媒体标题等信息。 |
setString(String key, String value) | 用于存储媒体作者、艺术家、描述等。 |
setLong(String key, long value) | 用于存储媒体ID、媒体时长等信息。 |
setPixelMap(String key, PixelMap value) | 用于存储媒体元数据相关的图片资源。 |
build() | 媒体元数据生成函数。 |
接口名 | 功能描述 |
---|---|
hasKey(String key) | 媒体元数据中是否包含某一个key的数据。 |
getText(String key) | 获取text类型的key的数据,比如获取媒体标题等信息。 |
getString(String key) | 获取String类型key的数据,比如获取媒体作者、艺术家、描述等。 |
getLong(String key) | 获取Long类型key数据,比如获取媒体ID、媒体时长等信息。 |
getKeysSet() | 获取媒体元数据的集合。 |
getPixelMap(String key) | 获取PixelMap类型key数据,获取媒体元数据相关的图片资源。 |
marshalling(Parcel in) | 将一个AVMetadata对象写入到Parcel对象。 |
getAVDescription() | 获取媒体的简要描述信息。 |
开发步骤
调用AVMetadata.Builder类的build方法创建AVMetadata实例。代码示例如下:
AVMetadata avMetadata = new AVMetadata.Builder().setString(AVMetadata.AVTextKey.META_ID, "illuminate.mp3") .setString(AVMetadata.AVTextKey.TITLE, "title") .setString(AVMetadata.AVTextKey.ARTIST, "artist") .setString(AVMetadata.AVTextKey.ALBUM, "album") .setString(AVMetadata.AVTextKey.TITLE, "display_subtitle") .setPixelMap(AVMetadata.AVPixelMapKey.ICON, pixelmap) .build();
(可选)根据已有的AVMetadata对象,可以获取媒体元数据信息,如获取媒体标题等,代码示例如下:
String title = avMetadata.getString(AVMetadata.AVTextKey.TITLE);
我们需要结合AVSession使用,将已有的媒体元数据AVMetadata对象下发给应用,具体参考AVSession使用,示例如下:
mediaSession.setAVMetadata(avMetadata);
应用获取媒体元数据一般结合AVControllerCallback相关类使用,通过onAVMetadataChanged回调获取媒体元数据。
Image musicCover;Text musicTitle;public class Callback extends AVControllerCallback { @Override public void onAVMetadataChanged(AVMetadata metadata) { // 歌曲信息回调 AVDescription description = metadata.getAVDescription(); // 获取标题 String title = description.getTitle().toString(); CharSequence sequence = metadata.getText(AVMetadata.AVTextKey.TITLE); if (sequence != null) { title = sequence.toString(); } // 设置媒体title musicTitle.setText(title); // 获取曲目专封面 PixelMap iconPixelMap = description.getIcon(); // 设置歌曲封面图 musicCover.setPixelMap(iconPixelMap); }}