如何获取和设置(更改)音频文件的ID3标签(元数据)?

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

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

而核心点,。 已编辑的ID3标签应仅显示在我的应用中。

Solutions Collecting From Web of "如何获取和设置(更改)音频文件的ID3标签(元数据)?"

我认为这就是你在寻找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 } 

快乐编码:)

实际上,FasteKerinns的代码非常好。 你应该改变

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

new MyID3()。update(src,src_set,meta);

这意味着你根本不需要dstvariables。

另外,我有这段代码刷新在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(); 

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

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