Android Open Source - unmp M P3 Handler






From Project

Back to project page unmp.

License

The source code is released under:

MIT License

If you think the Android project unmp 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 com.parnswir.unmp.media;
/*from  w w  w . j a  va  2  s .c  o  m*/
import java.io.File;
import java.io.IOException;

import org.jaudiotagger.audio.AudioFileIO;
import org.jaudiotagger.audio.exceptions.CannotReadException;
import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException;
import org.jaudiotagger.audio.exceptions.ReadOnlyFileException;
import org.jaudiotagger.audio.mp3.MP3File;
import org.jaudiotagger.tag.TagException;

import android.content.ContentValues;

import com.parnswir.unmp.core.C;
import com.parnswir.unmp.core.DatabaseUtils;

public class MP3Handler extends FileHandler {
  
  private long titleID;
  private long[] tableIDs = new long[C.TABLENAMES.length];
  
  @Override
  public void saveToDatabase(File file) {
    MP3File f = readAudioFile(file);
    MediaInformation info = new MediaInformation(f);
    insertTitle(info);
    upsertAttributes(info);
    insertRelations(info);
    insertAlbumArt(info);
  }
  
  @Override
  public void updateDatabaseEntryFor(File file) {

  }

  @Override
  public void deleteFromDatabase(File file) {

  }

  private void insertTitle(MediaInformation info) {
    ContentValues cv = info.toContentValuesForTable(C.TAB_TITLES);
    cv.put(C.COL_LAST_PLAYED, "0");
    cv.put(C.COL_PLAY_COUNT, "0");
    titleID = getDb().insert(C.TAB_TITLES, null, cv);    
  }
  
  private void upsertAttributes(MediaInformation info) {
    for (int i = 0; i < C.TABLENAMES.length; i++) {
      String tableName = C.TABLENAMES[i];
      ContentValues cv = info.toContentValuesForTable(tableName);
      if (DatabaseUtils.tupleAlreadyInTable(tableName, cv, getDb())) {
        getDb().update(tableName, cv, C.COL_ID + " = ?", new String[] {DatabaseUtils.getIDForTuple(tableName, cv, getDb())});
        tableIDs[i] = Integer.valueOf(DatabaseUtils.getIDForTuple(tableName, cv, getDb()));
      } else {
        tableIDs[i] = getDb().insert(tableName, null, cv);
      }
    }
  }
  
  private void insertRelations(MediaInformation info) {
    for (int i = 0; i < C.TABLENAMES.length; i++) {
      String tableName = C.TABLENAMES[i];
      String relationName = C.getRelationNameFor(tableName);
      ContentValues relationCV = generateRelationTuple(i);
      getDb().insert(relationName, null, relationCV);
    }    
  }

  private ContentValues generateRelationTuple(int table) {
    ContentValues relationCV = new ContentValues();
    relationCV.put(C.idNameFrom(C.TABLENAMES[table]) + C.COL__ID, tableIDs[table]);
    relationCV.put(C.COL_TITLE_ID, titleID);
    return relationCV;
  }
  
  private void insertAlbumArt(MediaInformation info) {
    ContentValues titleCV = info.toContentValuesForTable(C.TAB_TITLES);
    String titleID = DatabaseUtils.getIDForTuple(C.TAB_TITLES, titleCV, getDb());
    
    ContentValues cv = info.toContentValuesForTable(C.TAB_IMAGES);
    if (cv.get(C.COL_IMAGE_TYPE) == C.ALBUM_ART_BLOB) {
      cv = info.toContentValuesForTable(C.TAB_IMAGE_DATA);
      cv.remove("image_blob");
      if (! DatabaseUtils.tupleAlreadyInTable(C.TAB_IMAGE_DATA, cv, getDb())) {
        cv = info.toContentValuesForTable(C.TAB_IMAGE_DATA);
        DatabaseUtils.insertWithNewID(C.TAB_IMAGE_DATA, cv, getDb());
      }
    }
    
    cv = info.toContentValuesForTable(C.TAB_IMAGES);
    cv.put(C.COL_TITLE_ID, titleID);
    DatabaseUtils.insertWithNewID(C.TAB_IMAGES, cv, getDb());
  }

  private MP3File readAudioFile(File file) {
    MP3File f = null;
    try {
      f = (MP3File)AudioFileIO.read(file);
    } catch (CannotReadException e) {
      
    } catch (IOException e) {
      
    } catch (TagException e) {
      
    } catch (ReadOnlyFileException e) {
      
    } catch (InvalidAudioFrameException e) {
      
    }
    return f;
  }

}




Java Source Code List

com.parnswir.unmp.AbstractFragment.java
com.parnswir.unmp.DirectoryChooserDialog.java
com.parnswir.unmp.DrawerActivity.java
com.parnswir.unmp.DrawerState.java
com.parnswir.unmp.LibraryFragment.java
com.parnswir.unmp.ListFragment.java
com.parnswir.unmp.MainActivity.java
com.parnswir.unmp.PlayerFragment.java
com.parnswir.unmp.PlayerService.java
com.parnswir.unmp.PlaylistsFragment.java
com.parnswir.unmp.SplashActivity.java
com.parnswir.unmp.core.AlbumCoverRetriever.java
com.parnswir.unmp.core.C.java
com.parnswir.unmp.core.CoverList.java
com.parnswir.unmp.core.DatabaseUtils.java
com.parnswir.unmp.core.IceCreamSandwichNotificationBuilder.java
com.parnswir.unmp.core.IconicAdapter.java
com.parnswir.unmp.core.ImageLoader.java
com.parnswir.unmp.core.ImageRetriever.java
com.parnswir.unmp.core.JellybeanNotificationBuilder.java
com.parnswir.unmp.core.MemoryCache.java
com.parnswir.unmp.core.MusicDatabaseHelper.java
com.parnswir.unmp.core.NotificationBuilder.java
com.parnswir.unmp.core.ProgressObservable.java
com.parnswir.unmp.core.ProjectResources.java
com.parnswir.unmp.core.Utils.java
com.parnswir.unmp.media.DefaultFileHandler.java
com.parnswir.unmp.media.FileAdditionThread.java
com.parnswir.unmp.media.FileCrawlerThread.java
com.parnswir.unmp.media.FileHandler.java
com.parnswir.unmp.media.FileRemovalThread.java
com.parnswir.unmp.media.MP3Handler.java
com.parnswir.unmp.media.MediaInformation.java
com.parnswir.unmp.media.MediaPlayerStatus.java
com.parnswir.unmp.media.PlaylistHandler.java
com.parnswir.unmp.playlist.MediaFile.java
com.parnswir.unmp.playlist.PlaylistElement.java
com.parnswir.unmp.playlist.Playlist.java
com.parnswir.unmp.playlist.parser.PlaylistParser.java
com.parnswir.unmp.playlist.parser.WPLParser.java