Back to project page AudioBook.
The source code is released under:
Creative Commons Legal Code Attribution-NonCommercial 3.0 Unported CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT C...
If you think the Android project AudioBook listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/** * This work is licensed under the Creative Commons Attribution-NonCommercial- * NoDerivs 3.0 Unported License. To view a copy of this license, visit * http://creativecommons.org/licenses/by-nc-nd/3.0/ or send a letter to * Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, * 94041, USA.// w w w.ja v a2s .c o m * * Use of this work is permitted only in accordance with license rights granted. * Materials provided "AS IS"; no representations or warranties provided. * * Copyright ? 2012 Marcus Parkkinen, Aki K?kel?, Fredrik ?hs. **/ package edu.chalmers.dat255.audiobookplayer.util; import java.util.LinkedList; import java.util.List; import android.media.MediaMetadataRetriever; import android.util.Log; import edu.chalmers.dat255.audiobookplayer.model.Book; import edu.chalmers.dat255.audiobookplayer.model.Bookshelf; import edu.chalmers.dat255.audiobookplayer.model.Track; /** * Creates Book instances (filling them with metadata). * * @author Aki K?kel?, Fredrik ?hs * @version 0.6 * */ public final class BookCreator { private static final String TAG = "BookCreator.class"; private static BookCreator instance = null; private Bookshelf bsh; private BookCreator() { } // To disable outside instantiation /** * @return The instance of this object. */ public static BookCreator getInstance() { if (instance == null) { instance = new BookCreator(); } return instance; } /** * @param bsh */ public void setBookshelf(Bookshelf bsh) { this.bsh = bsh; } /** * Creates a book with given parameters. * * @param paths * A list paths to all the tracks that will be added. * @param title * The title of the book. * @param author * The author of the book. */ public boolean createBookToBookshelf(List<String> paths, String title, String author) { Book b = createBook(paths, title, author); if (b != null) { bsh.addBook(b); return true; } return false; } /** * Helper class. * * In future versions, this should be used instead of adding directly to the * bookshelf (see Issue #1 on the issue tracker). * * @param paths * A list paths to all the tracks that will be added. * @param title * The title of the book. * @param author * The author of the book. * @return A book created with given data. */ private Book createBook(List<String> paths, String title, String author) { String tmpTitle = title; String tmpAuthor = author; // if no tracks, do not create book if (paths.size() == 0) { return null; } MediaMetadataRetriever mmr = new MediaMetadataRetriever(); // assumes try { mmr.setDataSource(paths.get(0)); } catch (IllegalArgumentException e) { Log.d(TAG, " invalid path to book provided. Skipping operation."); return null; } // try to retrieve metadata ALBUM which is where the title of the book // should typically be stored tmpTitle = mmr .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); if (tmpTitle == null || tmpTitle.length() == 0) { tmpTitle = title; } // try to retrieve metadata ARTIST which is where the author of the book // should typically be stored tmpAuthor = mmr .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); if (tmpAuthor == null || tmpAuthor.length() == 0) { tmpAuthor = author; } List<Track> trackList = new LinkedList<Track>(); for (String path : paths) { try { trackList.add(TrackCreator.createTrack(path)); } catch (Exception e) { // If a track contains malformed data, do not add it to the book continue; } } return new Book(trackList, tmpTitle, tmpAuthor); } }