Добавление Cover Art в загруженный mp3 на Android
Как программно добавить обложку (обложку альбома) в загруженный файл mp3?
Я позволяю моему приложению загружать файл mp3 через DownloadManager из Android APIS, как показано ниже:
private void startDownload(){
Uri uri = Uri.parse(BASE_URL+DOWNLOAD+mp3+".mp3");
filename = title+".mp3";
Request request = new DownloadManager.Request(uri)
.setDestinationInExternalPublicDir(MUSIC_PATH, filename);
DOWNLOAD_MANAGER.enqueue(request);
}
Можно ли добавить coverart в загруженный mp3-файл, чтобы mp3-плеер на телефоне показывал изображение во время воспроизведения песни?
1 ответ
Решение
Загрузите этот jar-файл MyID3_for_android и добавьте его в путь сборки вашего проекта. Вот пример кода, как вы можете изменить обложку
File src = new File("filepath");
MusicMetadataSet src_set = new MyID3().read(src);
File img = (new File("imagePath"));
Vector<ImageData> fileList = new Vector<ImageData>();
ImageData data = new ImageData(readFile(img), "", "", 3);
fileList.add(data);
MusicMetadata metadata = (MusicMetadata) src_set.getSimplified();
metadata.setPictureList(fileList);
File dst = new File("destinationPath");
new MyID3().write(src, dst, src_set, metadata);
Вам понадобится также Jararta Regex jar
readFile - это только функция для получения байта [] из файла.
public static byte[] readFile (File file) throws IOException {
// Open file
RandomAccessFile f = new RandomAccessFile(file, "r");
try {
// Get and check length
long longlength = f.length();
int length = (int) longlength;
if (length != longlength) throw new IOException("File size >= 2 GB");
// Read file and return data
byte[] data = new byte[length];
f.readFully(data);
return data;
}
finally {
f.close();
}
}
Получил это от stackOverflow, не знаю от кого:)