MediaMetadataRetriever是Android原生的一个类,用于获取音视频文件的原信息如音乐时长等等。

API:http://www.android-doc.com/reference/android/media/MediaMetadataRetriever.html

最初的实现是这样的:

MediaMetadataRetriever mmr = new MediaMetadataRetriever();try {    mmr.setDataSource(path);//文件路径} catch (Exception e) {    e.printStackTrace();}long time = Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));time = time / 1000;

在本地环境下OK,但是在测试那边很奇怪地获取不到。于是尝试使用jaudiotagger实现与之类似的功能。

API:http://www.jthink.net/jaudiotagger/javadoc/index.html

参考了博客:https://blog.csdn.net/yj_vs_gy/article/details/47950263

但仅限于获取MP3格式的音乐文件的音乐时长,之后进行改进,使用其父类AudioFile:

File file = new File(path);AudioFile audio = AudioFileIO.read(file);int time = audio.getAudioHeader().getTrackLength();//以下仅为MP3格式实现MP3File mp3 = (MP3File) AudioFileIO.read(file);MP3AudioHeader audioHeader = (MP3AudioHeader) mp3.getAudioHeader();int time = audioHeader.getTrackLength();

经过测试暂时不支持的音乐格式有:aac、ape、m4a等等。

jar包下载链接:http://repo1.maven.org/maven2/org/jaudiotagger/2.0.3/jaudiotagger-2.0.3.jar

更多相关文章

  1. 在Android中实现文件读写
  2. Android里解析AndroidManifest.xml的java文件
  3. android 文件系统结构及其引导
  4. Android中彩信文件的读取
  5. Android 上传图片到服务器(多文件上传)
  6. Android 系统文件简介
  7. android自动化测试工具
  8. Android yyyy-MM-dd'T'HH:mm:ss.SSS Z 格式转换 yyyy-MM-dd HH:m
  9. Android 保存数据到文件

随机推荐

  1. DiggBar如何基于不在其域上的内容动态调
  2. Smarty快速入门之一
  3. css字体大小在苹果邮件中比gmail (iphone
  4. IE-7 z-index问题-下拉区域在横幅下,它的
  5. HTML5+学习笔记2-------边看代码边研究貌
  6. c#生成html静态文件时出现空白行,怎么去掉
  7. HTML+DIV+CSS零基础快速入门到制作企业站
  8. HTML5常见的面试题,基础知识点
  9. HTML+CSS基础复习
  10. 用JavaScript实现两种功能:1、切换全选/全