是否有可能獲得原始文件夾中的聲音持續時間,並將其轉換爲字符串數組? 事情是這樣的:獲取原始文件夾中歌曲的歌曲持續時間並將其轉換爲字符串數組?
Sound1例子時間:00:10秒
SOUND2持續時間:02:31sec
..
sound1235持續時間:00:31sec
,並轉換到這
String[] soundDuration = { "00:10","02:31"...."00:31"};
是否有可能獲得原始文件夾中的聲音持續時間,並將其轉換爲字符串數組? 事情是這樣的:獲取原始文件夾中歌曲的歌曲持續時間並將其轉換爲字符串數組?
Sound1例子時間:00:10秒
SOUND2持續時間:02:31sec
..
sound1235持續時間:00:31sec
,並轉換到這
String[] soundDuration = { "00:10","02:31"...."00:31"};
我相信這是
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首歌曲,並非原始文件夾中的所有文件。 Ps。抱歉,遲到的迴應,我以爲我已經回覆了你的帖子。 – 2015-03-18 13:07:57
我還沒有測試此代碼...希望這會給你的想法
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 ;
}
它確實給了我一個主意,但它沒有奏效。你寫的代碼有一些我不知道如何解決的錯誤。 – 2015-03-18 13:11:10
是的,這是可能的。 – Henry 2015-03-13 17:26:48