这可能是由于拷贝mp3文件时,它的ID3标签中包含了已有的并且与文件实际时长不匹配的信息。因此需要使用MediaMetadataRetriever类从文件中提取正确的时长信息,并更新到ID3标签中,或者在保存文件前将ID3标签删除。
以下是一个使用MediaMetadataRetriever类的示例代码:
MediaMetadataRetriever metadataRetriever = new MediaMetadataRetriever();
metadataRetriever.setDataSource(filePath);
String durationStr = metadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
int duration = Integer.parseInt(durationStr);
// 更新ID3标签信息
ID3v2 id3v2Tag = audioFile.getID3v2Tag();
if (id3v2Tag != null) {
id3v2Tag.setField(FieldKey.DURATION, String.valueOf(duration));
}
// 保存文件
audioFile.save();
注意,此代码片段中的audioFile变量需要使用jAudioTagger或类似库来获得,以便访问ID3标签。