android - 在android中获取mp3持续时间

标签 android android-mediaplayer java

如何在不创建 MediaPlayer 实例的情况下获取 mp3 轨道持续时间?我只需要在 mp3 文件列表中显示 mp3 歌曲长度,所以我认为我不应该为列表中的每个轨道创建 MediaPlayer 对象

还有一个:

有时 MediaPlayer 会返回错误的歌曲持续时间(我认为这是因为这些文件的比特率是动态的)。如何获得歌曲的正确时长?

最佳答案

       // load data file
       MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
       metaRetriever.setDataSource(filePath);

String out = "";
       // get mp3 info

      // convert duration to minute:seconds
String duration =  
     metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
    Log.v("time", duration);
    long dur = Long.parseLong(duration);
    String seconds = String.valueOf((dur % 60000) / 1000);

    Log.v("seconds", seconds);
    String minutes = String.valueOf(dur / 60000);
    out = minutes + ":" + seconds;
    if (seconds.length() == 1) {
        txtTime.setText("0" + minutes + ":0" + seconds);
    }else {
        txtTime.setText("0" + minutes + ":" + seconds);
    }
    Log.v("minutes", minutes);
      // close object
       metaRetriever.release();

关于android - 在android中获取mp3持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042259/

相关文章:

android - 解码器初始化失败 : OMX. qcom.video.decoder.avc,

android - RecyclerView + MediaPlayer + 切换按钮 + 字符串 Uri

java - JGit - 通过 Java 创建合并请求

c# - 如何在 Xamarin/Monogame 中使用 Google Play 排行榜

java - 通过 setOnItemClickListener 获取与该列表项关联的数据

java - 如何显示此自定义 View ?

android - layout-land xml 文件不适用于 onConfigurationChanged 回调

Android 如何给 Media Player 添加字幕

java - 在 mongo 文档中创建自动增量字段

java - 尝试计算两个日期之间的天数差异时的“no suitable method found for between(Date, Date)"