2015-03-13 64 views

回答

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" 
+0

其實這不起作用。而且,也許我錯了,但這僅適用於1首歌曲,並非原始文件夾中的所有文件。 Ps。抱歉,遲到的迴應,我以爲我已經回覆了你的帖子。 – 2015-03-18 13:07:57

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 ; 
     } 
+0

它確實給了我一個主意,但它沒有奏效。你寫的代碼有一些我不知道如何解決的錯誤。 – 2015-03-18 13:11:10

相關問題