我有一个包含多个音频文件的ListView。对于每一个我必须得到持续时间,以便在列表中显示它。
这是我尝试过的:
MediaPlayer getDuration()
- > 13件物品大约需要1秒钟
MediaStore
和Cursor
- > 13件物品大约需要2秒
这对于展示ListView.
来说太过分了
所以我想到了这个:
在录制音频文件时创建具有文件名和持续时间的数据库
- >这会导致数据不一致,因为文件可能已被删除
有没有其他方法来实现这一目标?
提前致谢
我使用MediaMetaDataRetriever
来收集音频或视频文件的元数据,包括视频预览帧,查看https://developer.android.com/reference/android/media/MediaMetadataRetriever以查看可以从媒体文件中检索哪种类型的元数据。你应该可以使用
extractMetaData(MediaMetadataRetriever.METADATA_KEY_DURATION)
获取音频/视频文件的持续时间。
MediaMetadataRetriever
可用于获取与媒体文件相关的元数据
MediaMetadataRetriever mediaMetadataRetriever= new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(filePath);
String duration = mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
extractMetadata(int)方法可以在Android API级别10之上使用。
持续时间以毫秒为单位。