Как получить и установить (изменить) тег ID3 (метаданные) аудиофайлов? - PullRequest
20 голосов
/ 14 марта 2012

Я работаю над изменением тегов ID3, метаданных в аудиофайлах, таких как:

  • Исполнитель
  • Заголовок
  • Альбом
  • и т.д.

И основная точка. отредактированные теги ID3 должны отображаться только в моем приложении.

Ответы [ 4 ]

25 голосов
/ 19 марта 2012

Я думаю, это то, что вы ищете Библиотека 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
            }

Happy Coding:)

16 голосов
/ 14 июня 2012

На самом деле код FasteKerinns довольно хорош. Вы должны просто изменить

новый MyID3 (). Write (src, dst, src_set, meta);

до

new 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();
4 голосов
/ 14 марта 2012

И самое важное, что отредактированные теги ID3 были показаны только в приложении my.

Если вы отредактируете файл, это увидит любой.Вы можете создать свою собственную базу данных медиафайлов (например, база данных Android ) и просто хранить измененные данные там.

0 голосов
/ 20 февраля 2019

Я создал пример приложения, основываясь на ответах выше, вы можете скачать пример реализации здесь https://github.com/mickyarun/AndroidSongMetaDataUpdate.git

...