Редактирование MP3-тэгов - PullRequest
0 голосов
/ 30 июня 2018

Кто-нибудь из вас знает способ редактирования тегов mp3-файла?
Я попробовал Mp3agic, но он вылетает, когда я пытаюсь объявить объект MP3File , и я также попробовал библиотеку jaudiotagger, но она также вылетает.

Мне нужна помощь, пожалуйста.

UPDATE:

Это фрагмент кода, в котором происходит сбой приложения:

     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);

без исключения.

Выполнив все шаги отладки из вышеупомянутой строки, приложение аварийно завершает работу в строке 246 класса MP3File JAudioTagger. Это строки:

..
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();

он выдает исключение NullPointerException в строке 232 класса MP3File (строка пытается найти заголовок файла):

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);

UPDATE:

Я также пытался изменить строку:

Tag newTag = audioFile.getTag();

Кому:

Tag newTag = audioFile.getTagOrCreateAndSetDefault();

Но это исключение:

java.lang.RuntimeException: Unable to create default tag for this file format
...