是否可以在原始文件夹中获取声音的持续时间,并将其转换为字符串数组? 像这样:
sound1持续时间:00:10秒
sound2持续时间:02:31sec
...
sound1235持续时间:00:31秒
并将其转换为
String[] soundDuration = { "00:10","02:31"...."00:31"};
答案 0 :(得分:2)
我相信这是你正在寻找的:
Uri mediaPath = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.your_song);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(this, mediaPath);
然后,使用
访问/保存信息 String song_duration =mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
请注意,但是这会以毫秒为单位返回持续时间,因此我相信您可以执行以下操作:
Integer.parseInt(song_duration);
song_duration = song_duration / 1000;
String song_dur_str = "song_duration/60" +":" +"song_duration%60" + "sec"
答案 1 :(得分:0)
我还没有测试过这段代码......希望这会给你一些想法
private String[][] getAllRawResources() {
String[][] ids = null ;
R.raw r = new R.raw() ;
Field fields[] = R.raw.class.getDeclaredFields() ;
ids = new String[fields.length][3] ;
try {
for( int i=0; i<fields.length; i++ ) {
Field f = fields[i] ;
ids[i][0] = f.getInt(r) ;
ids[i][1] = f.getName();
Log.i(TAG, "R.raw."+f.getName()+" = 0x"+Integer.toHexString(ids[i])) ;
Uri mediaPath = Uri.parse(f.getPath());
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(this, mediaPath);
String song_duration =mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
Integer.parseInt(song_duration);
song_duration = song_duration / 1000;
String song_dur_str = "song_duration/60" +":" +"song_duration%60"
id[i][2] = song_duration;
}
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return ids ;
}