Android Open Source - audioplayer Cover Album Editor From Project Back to project page audioplayer .
License The source code is released under:
GNU General Public License
If you think the Android project audioplayer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package fr.julien_dumortier.simplemusicplayer.coveralbumeditor;
/ * w w w . j a v a 2 s . c o m * /
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.id3.ID3v23Tag;
import fr.julien_dumortier.simplemusicplayer.item.Album;
import fr.julien_dumortier.simplemusicplayer.item.Item;
import fr.julien_dumortier.simplemusicplayer.item.Track;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
public class CoverAlbumEditor {
public interface IOnUpdateFinishListener {
public void onCoverUpdate(boolean success);
}
public static void startUpdateCoverAlbum(final Context context, final String pictureUrl, final Item item, final IOnUpdateFinishListener listener) {
new Thread("update cover thread" ) {
public void run() {
try {
listener.onCoverUpdate(updateCoverAlbum(context, pictureUrl, item));
} catch (Exception e) {
listener.onCoverUpdate(false);
}
}
}.start();
}
public static boolean updateCoverAlbum(Context context, Bitmap bmp, Item item) throws NumberFormatException, IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte [] byteArray = stream.toByteArray();
if (item instanceof Album && byteArray!=null)
return updateArtworkCoverAlbumInDb(context, byteArray, Long.parseLong(((Album)item).getId()));
else if (item instanceof Track && byteArray!=null) {
return setID3ArtworkCoverAlbum(byteArray, ((Track)item).getDataTrack()) &&
updateArtworkCoverAlbumInDb(context, byteArray, Long.parseLong(((Track)item).getAlbumId()));
}
return false;
}
public static boolean updateCoverAlbum(Context context, String pictureUrl, Item item) throws Exception {
byte [] byteArray = null;
if (item instanceof Album || item instanceof Track)
byteArray = downloadUrlToByteArray(pictureUrl);
if (item instanceof Album && byteArray!=null)
return updateArtworkCoverAlbumInDb(context, byteArray, Long.parseLong(((Album)item).getId()));
else if (item instanceof Track && byteArray!=null) {
return setID3ArtworkCoverAlbum(byteArray, ((Track)item).getDataTrack()) &&
updateArtworkCoverAlbumInDb(context, byteArray, Long.parseLong(((Track)item).getAlbumId()));
}
return false;
}
private static boolean setID3ArtworkCoverAlbum(byte [] picture, String filePath) {
try {
//set id3 tag
File file = new File (filePath);
MP3File f = (MP3File) AudioFileIO.read(file);
ID3v23Tag tag = new ID3v23Tag();
f.getTag().addField(tag.createArtworkField(picture, "image/png" ));
f.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
private static boolean updateArtworkCoverAlbumInDb(Context context, byte [] picture, long albumId) throws IOException {
//update media player db
Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart" );
Uri uri = ContentUris.withAppendedId(sArtworkUri, albumId);
ContentResolver res = context.getContentResolver();
OutputStream in = res.openOutputStream(uri);
in.write(picture);
in.close();
return true;
}
public static byte [] downloadUrlToByteArray(String url) throws Exception {
try {
URL toDownload = new URL(url);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte [] chunk = new byte [4096];
int bytesRead;
InputStream stream = toDownload.openStream();
while ((bytesRead = stream.read(chunk)) > 0) {
outputStream.write(chunk, 0, bytesRead);
}
byte [] data = outputStream.toByteArray();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
if (bitmap !=null) {
int h = bitmap.getHeight();
int w = bitmap.getWidth();
if (h>500||w>500) {
h = 500*h/w;
w = 500;
}
bitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
}
ByteArrayOutputStream streamOut = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, streamOut);
return streamOut.toByteArray();
} catch (OutOfMemoryError e) {
throw new Exception("out of memory" );
}
}
}
Java Source Code List fr.julien_dumortier.simplemusicplayer.DevInfo.java fr.julien_dumortier.simplemusicplayer.DrawerListAdapter.java fr.julien_dumortier.simplemusicplayer.IMusicMediaControllerGetter.java fr.julien_dumortier.simplemusicplayer.MainActivity.java fr.julien_dumortier.simplemusicplayer.browsemanager.BrowseCover.java fr.julien_dumortier.simplemusicplayer.browsemanager.BrowseManager.java fr.julien_dumortier.simplemusicplayer.coveralbumeditor.CoverAlbumEditor.java fr.julien_dumortier.simplemusicplayer.coveralbumeditor.CoverAlbumGetter.java fr.julien_dumortier.simplemusicplayer.coveralbumeditor.PromptCovers.java fr.julien_dumortier.simplemusicplayer.equalizer.EqualizerActivity.java fr.julien_dumortier.simplemusicplayer.equalizer.EqualizerConfigurationDataBase.java fr.julien_dumortier.simplemusicplayer.equalizer.VerticalSeekBar.java fr.julien_dumortier.simplemusicplayer.equalizer.preset.Preset.java fr.julien_dumortier.simplemusicplayer.item.Album.java fr.julien_dumortier.simplemusicplayer.item.Artist.java fr.julien_dumortier.simplemusicplayer.item.Genre.java fr.julien_dumortier.simplemusicplayer.item.Item.java fr.julien_dumortier.simplemusicplayer.item.Playlist.java fr.julien_dumortier.simplemusicplayer.item.Track.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.AlbumAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.ArtistAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.CurrentPlayAnimationManager.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.GenreAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.ItemAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.ItemClicManager.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.OrganisableTrackAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.PlayListAdapter.java fr.julien_dumortier.simplemusicplayer.item.itemadapter.TrackAdapter.java fr.julien_dumortier.simplemusicplayer.notifynews.NotifyNews.java fr.julien_dumortier.simplemusicplayer.playerview.FullScreenPlayerViewController.java fr.julien_dumortier.simplemusicplayer.playerview.IPlayerViewController.java fr.julien_dumortier.simplemusicplayer.playerview.MiniPlayerViewController.java fr.julien_dumortier.simplemusicplayer.playerview.TimeFormater.java fr.julien_dumortier.simplemusicplayer.playlistview.MultiSelectManager.java fr.julien_dumortier.simplemusicplayer.playlistview.PlayListManagerActivity.java fr.julien_dumortier.simplemusicplayer.playlistview.SaveManagerView.java fr.julien_dumortier.simplemusicplayer.playlistview.SavedPlaylistManager.java fr.julien_dumortier.simplemusicplayer.service.BackgroundBinder.java fr.julien_dumortier.simplemusicplayer.service.MusicPlayerService.java fr.julien_dumortier.simplemusicplayer.service.bluetoohactionmanager.BluetoothReceiver.java fr.julien_dumortier.simplemusicplayer.service.notificationplayer.NotificationManagerService.java fr.julien_dumortier.simplemusicplayer.service.notificationplayer.NotificationPlayer.java fr.julien_dumortier.simplemusicplayer.service.phonestatemanager.PhoneCallStateManager.java fr.julien_dumortier.simplemusicplayer.service.playlist.EndOfPlayListException.java fr.julien_dumortier.simplemusicplayer.service.playlist.IMediaPlayerController.java fr.julien_dumortier.simplemusicplayer.service.playlist.MusicMediaPlayer.java fr.julien_dumortier.simplemusicplayer.service.playlist.PlayListManager.java fr.julien_dumortier.simplemusicplayer.thememanager.ColorPreferences.java fr.julien_dumortier.simplemusicplayer.thememanager.DisplayManager2.java fr.julien_dumortier.simplemusicplayer.thememanager.ManageDisplayView.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptActionByType.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptActionPlaylist.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmAddInNew.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmDeletePlaylist.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmExit.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptConfirmReplacePlaylist.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptDefineCoverAlbum.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptGetTextName.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptMoveTrack.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptPlaylistName.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptShowText.java fr.julien_dumortier.simplemusicplayer.uiprompt.PromptSuppressConfirm.java fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerApplication.java fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerWidgetProvider.java fr.julien_dumortier.simplemusicplayer.widget.AudioPlayerWidgetViewController.java fr.julien_dumortier.simplemusicplayer.widget.WidgetView.java