在Android中,获取音频文件的信息可以通过 MediaMetadataRetriever 这个类来获取,比如获取文件的时长,通过如下方法来获取:
MediaMetadataRetriever mmr = new MediaMetadataRetriever();try { mmr.setDataSource(file.getFile().getAbsolutePath()); String strDuration = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); long duration = Long.valueOf(strDuration);}catch (Exception e){}
但是,通过这种方法获取的duration可能不准确,对于VBR格式的mp3,duration可能远远比真实的长度小。对于这个问题,可以用比特率和文件大小来计算:
long fileSize = file.getFile().length();long bitRate = Long.parseLong(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));long duration = (fileSize*8) /(bitRate);//单位,秒通过这种方式得到的duration值是比较准确的