package me.zhengken.zkmusicplayer.musicdata; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.media.MediaMetadataRetriever; import android.net.Uri; import android.support.annotation.NonNull; import java.io.File; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.text.DecimalFormat; import java.util.Calendar; import java.util.Date; import me.zhengken.zkmusicplayer.MyApplication; import me.zhengken.zkmusicplayer.R; import static com.google.common.base.Preconditions.checkNotNull; /** * Created by zhengken.me on 2016/11/27. * ClassName : Song * Description : */ public class Song { public Song(@NonNull Uri songUri) { checkNotNull(songUri); try { String songPath = URLDecoder.decode(songUri.getPath().toString(), "UTF8"); mSongPath = songPath; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } public Song(@NonNull String songPath) { mSongPath = checkNotNull(songPath); } private String mTitle; private String mArtist; private String mLrcPath; private String mSongPath; private int mDuration; private Bitmap mCover; private Bitmap mCoverMirror; private Bitmap mCoverGauss; public String getmSongPath() { return mSongPath; } private void setLrcPath() { checkNotNull(mSongPath); String lrcPath = mSongPath.substring(0, mSongPath.length() - 3) + "lrc"; mLrcPath = lrcPath; } public String getLrcPath() { if (mLrcPath == null) { setLrcPath(); } if (isLrcExist()) { return mLrcPath; } return null; } public boolean isLrcExist() { checkNotNull(mLrcPath); File lrcFile = new File(mLrcPath); if (lrcFile.exists()) { return true; } return false; } public void setmTitle() { MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(mSongPath); mTitle = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); } public String getmTitle() { if (mTitle == null) setmTitle(); return mTitle; } private void setArtist() { MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(mSongPath); mArtist = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); } public String getArtist() { if (mArtist == null) { setArtist(); } return mArtist; } public void setDuration() { MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(mSongPath); mDuration = Integer.valueOf(mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION)); } public int getDuration() { if (mDuration == 0) { setDuration(); } return mDuration; } public String getFormatDuration() { long time = getDuration(); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date(time)); double minute = calendar.get(Calendar.MINUTE); double second = calendar.get(Calendar.SECOND); DecimalFormat format = new DecimalFormat("00"); return format.format(minute) + ":" + format.format(second); } public void setCover() { MediaMetadataRetriever mmr = new MediaMetadataRetriever(); mmr.setDataSource(mSongPath); byte[] bitmap = mmr.getEmbeddedPicture(); if (bitmap != null) { mCover = BitmapFactory.decodeByteArray(bitmap, 0, bitmap.length); } else { mCover = BitmapFactory.decodeResource(MyApplication.getContext().getResources(), R.drawable.default_cover); } } public Bitmap getCover() { if (mCover == null) { setCover(); } return mCover; } public void setCoverMirror() { } public void setCoverGauss() { } }