22

我正在努力更改 ID3 标签,音频文件中的元数据,例如:

  • 艺术家
  • 标题
  • 专辑
  • 等等

而核心点,。编辑过的 ID3 标签应该只显示在我的应用程序中。

4

4 回答 4

28

我认为这就是您正在寻找的MyID3 库来设置和获取媒体文件的标签。

下载这个 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
            }

快乐编码:)

于 2012-03-19T12:59:37.873 回答
18

事实上,FasteKerinns 的代码是相当不错的。你应该改变

新的 MyID3().write(src, dst, src_set, meta);

新的 MyID3().update(src, src_set, meta);

这意味着您根本不需要 dst 变量。

另外,我有这段代码可以刷新在 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();
于 2012-06-14T14:53:03.283 回答
5

最重要的一点是,编辑后的 ​​ID3 标签只显示在我的应用程序中。

如果您编辑文件,那么任何人都会看到它。您可以创建自己的媒体文件数据库(如Android 的数据库)并将修改后的数据存储在那里。

于 2012-03-14T18:21:46.457 回答
1

我创建了一个示例应用程序,基于上述答案,您可以从这里下载示例实现https://github.com/mickyarun/AndroidSongMetaDataUpdate.git

于 2019-02-20T04:42:06.397 回答