Android: JAudioTagger не меняет теги
Поэтому я пытаюсь отредактировать теги музыкальных файлов в моем приложении. Это код
TagOptionSingleton.getInstance().setAndroid(true);
AudioFile f = AudioFileIO.read(sel);
Tag tag = f.getTag();
tag.setField(FieldKey.TITLE, "ABC");
f.commit();
я пытался AudioFileIO.write(f)
вместо f.commit()
но изменения, которые я делаю, не отражаются в файлах. У них все еще есть те же старые данные.
Я пробовал несколько версий JAudioTagger, но не повезло. Может кто-нибудь, пожалуйста, помогите мне. Заранее спасибо!!
1 ответ
Я знаю, что немного поздно, но у меня работает следующее (я использую ту же платформу для других тегов
public String getmp3TrackTitleTag(File SourceFile)
throws Exception {
String TrackTitle = null;
try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
ID3v24Tag id3v24 = (ID3v24Tag) musicFile.getID3v2TagAsv24();
TrackTitle = id3v24.getFirst(ID3v24Frames.FRAME_ID_TITLE);
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
return TrackTitle;
}
и установить заголовок
public String setmp3TrackTitleTag(File SourceFile, String strTrackTitle)
throws Exception {
String error = null;
AbstractID3v2Tag v2tag = null;
try {
MP3File musicFile = (MP3File) AudioFileIO.read(SourceFile);
if (musicFile != null && musicFile.hasID3v2Tag()) {
v2tag = musicFile.getID3v2Tag();
try {
v2tag.setField(FieldKey.TITLE, strTrackTitle);
musicFile.setTag(v2tag);
musicFile.commit();
} catch (KeyNotFoundException e) {
e.printStackTrace();
error = e.getMessage();
} catch (FieldDataInvalidException e) {
e.printStackTrace();
error = e.getMessage();
} catch (CannotWriteException e) {
e.printStackTrace();
error = e.getMessage();
}
}
} catch (CannotReadException | IOException | TagException
| ReadOnlyFileException | InvalidAudioFrameException e5) {
throw e5;
}
return error;
}