Как получить и установить (изменить) тег ID3 (метаданные) аудиофайлов?
Я работаю над изменением тегов ID3, метаданных в аудиофайлах, таких как:
- художник
- заголовок
- альбом
- etc.
и основной момент. отредактированные теги ID3 должны отображаться только в моем приложении.
3 ответов
Я думаю, что это то, что вы ищете библиотека MyID3 для установки и получения тегов для медиафайла.
загрузите этот файл jar MyID3_for_android и добавить его в путь сборки проекта. вот пример кода. вот!--1--> - путь к файлу звукового файла.
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 довольно хорош. Вы должны просто изменить
новый MyID3 ().write (src, dst, src_set, meta);
to
новый 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();
и самое главное, что отредактированные теги ID3 были показаны только в моем приложении.
Если вы отредактируете файл, то кто-нибудь это увидит. Вы можете создать свою собственную базу медиаданных (например,база данных Android) и просто хранить измененные данные там.