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(安卓)自定义View,进度条,第三方框架
  2. Android(安卓)2.2新增的DeviceAdminInfo类
  3. 在Android中实现文件读写
  4. 通过 http post 方式上传多张图片
  5. Android(安卓)gallery实现图片的左右循环旋转源码分享
  6. Android(安卓)利用getIdentifier()方法获取资源ID
  7. PendingIntent
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. python list.sort()根据多个关键字排序的方法实现

随机推荐

  1. Android(安卓)​自定义RadioButton或Chec
  2. Android(安卓)GestureDetector方法详解
  3. 一张图看明白 Android(安卓)Handler 消息
  4. android 面向对象数据库 db40使用demo
  5. android实现页面下方的Tab效果 .
  6. Android(安卓)判断Intent是否存在
  7. 使用android中的handler延迟执行方法
  8. Android学习网站(1)
  9. Android使用科大讯飞实现语音播报、语音
  10. 理解onMeasure