2012-03-14 51 views

回答

25

我認爲這是你正在尋找的MyID3 library設置和獲取媒體文件的標籤。

下載此jar文件MyID3_for_android並將其添加到項目的構建路徑。 這裏是示例代碼。這裏pathdata是音頻文件的文件路徑。

  File src = new File(pathdata); 
      MusicMetadataSet src_set = null; 
      try { 
       src_set = new MyID3().read(src); 
      } catch (IOException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } // read metadata 

      if (src_set == null) // perhaps no metadata 
      { 
       Log.i("NULL", "NULL"); 
      } 
      else 
      { 
       try{ 
        IMusicMetadata metadata = src_set.getSimplified(); 
        String artist = metadata.getArtist(); 
        String album = metadata.getAlbum(); 
        String song_title = metadata.getSongTitle(); 
        Number track_number = metadata.getTrackNumber(); 
        Log.i("artist", artist); 
        Log.i("album", album); 
       }catch (Exception e) { 
        e.printStackTrace(); 
       } 
       File dst = new File(pathdata); 
       MusicMetadata meta = new MusicMetadata("name"); 
       meta.setAlbum("Chirag"); 
       meta.setArtist("CS"); 
       try { 
        new MyID3().write(src, dst, src_set, meta); 
       } catch (UnsupportedEncodingException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (ID3WriteException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } // write updated metadata 
      } 

編碼快樂:)

+3

當我改變id3標籤,它會破壞mp3文件,並使其無法播放,如馬南所說。 – 2012-03-28 05:00:50

+0

@MKJParekh你的答案是幫助這麼多的程序員,我是他們中的一員但是我有不同的問題,可能你有答案。我想連接多個mp3文件。用MyID3可以實現嗎? 如果你有答案我可以發表一個問題。 Thanx爲你的所有幫助 – Harsh 2012-07-30 10:05:48

+0

坦率地說@哈爾斯,我沒有在那個ID3庫工作..只是用它來解決這個朋友的問題,但我建議你,你應該馬上開始一個問題在SO完整的細節你的問題,我相信你會從世界的任何角落得到你的答案。 – MKJParekh 2012-07-30 11:14:47

4

最重要的一點是編輯後的ID3標籤只顯示在我的應用程序中。

如果您編輯該文件,然後任何人都會看到。您可以創建自己的媒體文件數據庫(如Android's database),並將修改後的數據存儲在那裏。

+0

所以你說啥子,我不應該改變原有的數據,而不是將它們放置在sqlite的分貝,並顯示存儲的數據 – 2012-03-15 05:43:54

+0

如果您不希望任何其他應用程序可以看到您修改的ID3標籤,那麼您唯一可以做到的方式是通過本地存儲信息一個數據庫。如果修改文件,那麼每個應用程序都可以看到,因爲只有一個文件。您在媒體播放器中看到的ID3標籤不會立即發生變化,因爲其他應用程序或Android的mediascanner必須先重新掃描這些文件,但在某個時間點可能會這樣做 – zapl 2012-03-15 10:07:03

+0

@zapl是的,但是我在Soni的答案中找到了解決方案。 – 2012-03-19 13:03:16

14

事實上,FasteKerinns的代碼是相當不錯的。你應該改變

new MyID3()。write(src,dst,src_set,meta);

新MyID3()更新(SRC,src_set,間位)。

這意味着你根本不需要dst變量。

Additionaly,我有這樣的一段代碼,這刷新了在MediaStore修改歌曲:

scanner=new MediaScannerConnection(getApplicationContext(), 
      new MediaScannerConnectionClient() {  

     public void onScanCompleted(String path, Uri uri) { 
       scanner.disconnect(); 
     } 

     public void onMediaScannerConnected() { 
       scanner.scanFile(path, "audio/*");  
     } 
    }); 

    scanner.connect(); 
+0

+1將嘗試更新 – MKJParekh 2012-07-30 11:17:18

相關問題