你们中有人知道编辑 mp3 文件标签的方法吗?
我尝试了 Mp3agic,但是当我尝试声明MP3File对象时它崩溃了,我还尝试了 tha jaudiotagger 库,但它也崩溃了。
我需要帮助。
更新:
这是应用程序崩溃的代码片段:
File testFile = new File(Environment.getExternalStorageDirectory(),"/Music/test.mp3");
TagOptionSingleton.getInstance().setAndroid(true);
AudioFile audioFile = AudioFileIO.read(testFile);
Tag newTag = audioFile.getTag();
newTag.setField(FieldKey.ALBUM, this.album);
newTag.setField(FieldKey.ARTIST,this.artist);
audioFile.commit();
应用程序崩溃在行
AudioFile audioFile = AudioFileIO.read(testFile);
毫无例外。
按照上述行中的所有调试步骤,应用程序在 JAudioTagger 的 MP3File 类的第 246 行崩溃。这是行:
..
finally {
if(newFile != null) {
newFile.close();
}
..
所以我尝试在这里更改我的代码(我更改了 AudioFile 声明):
File testFile = new File(Environment.getExternalStorageDirectory(),"/Music/test.mp3");
TagOptionSingleton.getInstance().setAndroid(true);
AudioFile audioFile = new AudioFile();
audioFile.setFile(testFile);
Tag newTag = audioFile.getTag();
newTag.setField(FieldKey.ALBUM, this.album);
newTag.setField(FieldKey.ARTIST,this.artist);
audioFile.commit();
并在线
AudioFile audioFile = new AudioFile();
它在 MP3File 类的第 232 行抛出 NullPointerException (该行试图找到文件的标题):
audioFile: Method threw 'java.lang.NullPointerException' exception. Cannot evaluate org.jaudiotagger.audio.AudioFile.toString()
此异常在下一行中导致此异常:
java.lang.NullPointerException: Attempt to invoke interface method 'void org.jaudiotagger.tag.Tag.setField(org.jaudiotagger.tag.FieldKey, java.lang.String)' on a null object reference
在线:
newTag.setField(FieldKey.ALBUM, this.album);
更新:
我也尝试更改线路:
Tag newTag = audioFile.getTag();
至:
Tag newTag = audioFile.getTagOrCreateAndSetDefault();
但它抛出了这个异常:
java.lang.RuntimeException: Unable to create default tag for this file format