HarmonyOS鸿蒙Next音频开发之音频信息获取 以获取艺术家为例
HarmonyOS鸿蒙Next音频开发之音频信息获取 以获取艺术家为例
HarmongOS音频开发之音频信息获取 以获取艺术家为例
2021/06/01号编辑
在昨天进行第一次文档编辑后,我认为其过程过于繁琐,觉得肯定有更简单的方法,我查阅了官方文档,以下是文档中关于字段的总结:
我总感觉还有其他字段,于是借助 `query()` 方法查询外部存储的Uri,获取到对应的 `resultSet` ,并打印其所有的ColumnName
1. 获取ResultSet
```java
DataAbilityHelper helper = DataAbilityHelper.creator(context);
resultSet = helper.query(AVStorage.Audio.Media.EXTERNAL_DATA_ABILITY_URI, null, null);
- 获取所有的ColumnName
HiLog.info(hiLogLabel,Arrays.toString(resultSet.getAllColumnNames()));
结果
[title_key, instance_id, duration, is_ringtone, album_artist, orientation, artist, height, is_drm, bucket_display_name, is_audiobook, owner_package_name, volume_name, title_resource_uri, date_modified, date_expires, composer, _display_name, datetaken, mime_type, is_notification, _id, year, _data, _hash, _size, album, is_alarm, title, track, width, is_music, album_key, is_trashed, group_id, document_id, artist_id, artist_key, is_pending, date_added, is_podcast, album_id, primary_directory, secondary_directory, original_document_id, bucket_id, bookmark, relative_path]
你可以看到artist字段,因而我们可以直接通过下面的语句获取艺术家
- 获取艺术家
resultSet.getString(resultSet.getColumnIndexForName("artist"));
2021/05/31号编辑
- 获取指示外部存储的Uri
AVStorage.Audio.Media.EXTERNAL_DATA_ABILITY_URI
- 借助fetchVolumeName()方法获取Uri对应的VolumeName
AVStorage.fetchVolumeName(AVStorage.Audio.Media.EXTERNAL_DATA_ABILITY_URI)
- 借助fetchResource()方法获取dataability://格式的URI,该URI用于处理音频艺术家信息。
相关文档 fetchResource(String volumeName)
AVStorage.Audio.Artists.fetchResource(AVStorage.fetchVolumeName(AVStorage.Audio.Media.EXTERNAL_DATA_ABILITY_URI))
- 使用query()方法查询Uri
DataAbilityHelper helper = DataAbilityHelper.creator(this);
ResultSet result = helper.query(AVStorage.Audio.Artists.fetchResource(AVStorage.fetchVolumeName(AVStorage.Audio.Media.EXTERNAL_DATA_ABILITY_URI)), null,null);
- 获取result所有的ColumnName
HiLog.info(hiLogLabel,Arrays.toString(result.getAllColumnNames()));
结果
[number_of_tracks, artist, _id, artist_key, number_of_albums]
- 获取艺术家
result.getString(result.getColumnIndexForName("artist"));
更多关于HarmonyOS鸿蒙Next音频开发之音频信息获取 以获取艺术家为例的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于HarmonyOS鸿蒙Next音频开发之音频信息获取 以获取艺术家为例的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中进行音频开发时,获取音频信息(如艺术家)可以通过AVMetadata
类实现。首先,使用AVPlayer
加载音频文件,然后通过getMetadata()
方法获取元数据对象。接着,调用getString(AVMetadataKey.ARTIST)
即可获取艺术家信息。示例代码如下:
AVPlayer player = new AVPlayer(context);
player.setSource(new AVFileDescriptorSource(fd));
AVMetadata metadata = player.getMetadata();
String artist = metadata.getString(AVMetadataKey.ARTIST);
确保在获取元数据前,音频文件已成功加载。