【问题标题】:Get rating metadata form a list of song (MP3) in android using android.media.Rating使用 android.media.Rating 从 android 中的歌曲列表 (MP3) 中获取评分元数据
【发布时间】:2021-04-24 14:17:35
【问题描述】:

我需要从手机中所有歌曲的列表中检索评分。 目前我将它们放在文件列表中。一些元数据可以用MediaMetadataRetriever列出,但BlackPlayer EX保存在歌曲中的评分不能,所以我需要用另一种方法提取它们。 我找到了“android.media.Rating”,但没有运气。

到目前为止我的代码:

String musicPath = Environment.getExternalStorageDirectory().toString() + "/Music";
textView.setText(musicPath);
File directory = new File(musicPath);
textView.setText("On it");
MP3FileFilter fileFilter = new MP3FileFilter();
List songsFiles = listFiles(directory, fileFilter, true);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
for(int i = 0; i<songsFiles.size(); i++){
    String song = songsFiles.get(i).toString();
    mmr.setDataSource(song);
    ((Rating) songsFiles.get(i)).getStarRating();
}
textView.setText("Done");

错误显示非常明显,但我找不到解决方法:

java.io.File cannot be cast to android.media.Rating

提前致谢。

【问题讨论】:

    标签: android file metadata mp3 rating


    【解决方案1】:

    可以使用 JAudioTagger jar 和此代码:

    MP3File musicFile = (MP3File) AudioFileIO.read((File) songsFiles.get(i));
        if (musicFile != null && musicFile.hasID3v2Tag()) {
            ID3v23Frame frame = (ID3v23Frame) 
            musicFile.getID3v2Tag().getFrame(ID3v24Frames.FRAME_ID_POPULARIMETER);
            FrameBodyPOPM body = (FrameBodyPOPM) frame.getBody();
            Long irating = body.getRating();
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多