package com.youplayer.player.local;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.youplayer.player.R;
import com.youplayer.util.LOG;
public class YouPlayerMediaFile extends YouPlayerInterfaceFile implements Externalizable {
private static final long serialVersionUID = 1L;
private static final String TAG = "MediaFile";
private String ID = "";
private boolean isFrag = false;
private int[] fragtimeArray;
private int duration;
private String[] fragPathArray;
private int currFrag;
private int playedTime;
private String songName;
private String albumName;
private String singerName;
private String KBPSName;
private String HzName;
private String picPath;
private String WeiboURL;
private String parentPath;
private int position; // 文件夹所在list 位置
public int getPosition() {
return position;
}
public void setPosition(int position) {
this.position = position;
}
public YouPlayerMediaFile() {
}
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
@Override
public boolean isDirectory() {
return false;
}
public boolean getIsFrag() {
return isFrag;
}
private void setIsFrag(boolean isFrag) {
this.isFrag = isFrag;
}
public int getTotalDuration() {
return duration;
}
public void setTotalDuration(int length) {
this.duration = length;
}
public void setFrag(int[] frag) {
if(frag != null && frag.length > 0) {
setIsFrag(true);
for (int i = 0; i < frag.length; i++) {
duration += frag[i];
}
this.fragtimeArray = frag;
}
}
public void setFragPath(String[] fragPath) {
this.fragPathArray = fragPath;
}
public String getPlayPath() {
String path = null;
switch (sourceType) {
case SOURCE_TYPE_LOACAL:
path = getPath();
break;
case SOURCE_TYPE_DOWNLOAD:
case SOURCE_TYPE_SERVER:
if(null != fragPathArray){
path = fragPathArray[currFrag];
} else path = "";
LOG.v(TAG, "getPlayPath currFrag", currFrag);
LOG.v(TAG, "getPlayPath path", path);
break;
case SOURCE_TYPE_ONLINE:
path = getPath();
break;
default:
break;
}
if(path != null)
{
path = path.replaceAll("&", "&");
}
LOG.v(TAG, "getPlayPath path", path);
return path;
}
public int getPlayedFragsDuration() {
int time = 0;
for (int i = 0; i < currFrag; i++) {
time += fragtimeArray[i];
}
return time;
}
public void setPlayedTotalDuration(int playedTime) {
this.playedTime = playedTime;
}
public int getPlayedTotalDuration() {
return playedTime;
}
public int getFragOffsetFromBeg(int time) {
LOG.v(TAG, "getFragOffsetFromBeg time", time);
if(fragtimeArray.length > 1) {
int num = 0;
while ((time -= fragtimeArray[num]) > 0) {
num++;
}
if (currFrag != num) {
currFrag = num;
LOG.v(TAG, "getFragOffsetFromBeg currFrag", currFrag);
return time += fragtimeArray[num];
}
}
LOG.v(TAG, "getFragOffsetFromBeg currFrag", currFrag);
return -1;
}
public void setSongName(String songName) {
this.songName = songName;
}
public String getPlayingAudioSongName()
{
return songName;
}
public void setAlbumName(String albumName) {
this.albumName = albumName;
}
public String getPlayingAudioAlbumName()
{
return albumName;
}
public void setSingerName(String singerName) {
this.singerName = singerName;
}
public String getPlayingAudioSingerName()
{
return singerName;
}
public void setKBPSName(String KBPSName) {
this.KBPSName = KBPSName;
}
public String getPlayingAudioKBPSName()
{
return KBPSName;
}
public void setHzName(String HzName) {
this.HzName = HzName;
}
public String getPlayingRadioHzName()
{
return HzName;
}
public Bitmap getPlayingRadioPicture()
{
return null;
}
public Bitmap getPlayingSingerPicture()
{
return null;
}
public String getPicPath() {
return picPath;
}
public void setPicPath(String picPath) {
this.picPath = picPath;
}
public String getWeiboURL() {
return WeiboURL;
}
public void setWeiboURL(String weiboURL) {
WeiboURL = weiboURL;
}
public String getTimeString() {
return null;//MediaResolver.getTimeString(mediaType,duration);
}
public String getSizeString() {
return null;//MediaResolver.getSizeString(size, 2);
}
public String getParentPath() {
return parentPath;
}
public void setParentPath(String parentPath) {
this.parentPath = parentPath;
}
@Override
public void readExternal(ObjectInput input) throws IOException,
ClassNotFoundException {
path = (String) input.readObject();
name = (String) input.readObject();
modified = input.readLong();
mediaType = input.readInt();
size = input.readLong();
parent = (String)input.readObject();
}
@Override
public void writeExternal(ObjectOutput output) throws IOException {
output.writeObject(path);
output.writeObject(name);
output.writeLong(modified);
output.writeInt(mediaType);
output.writeLong(size);
output.writeObject(parent);
}
@Override
public Bitmap getDefaultIcon(Context context) {
Bitmap temp = null;
try {
switch (mediaType) {
case MEDIA_TYPE_VIDEO:
temp = BitmapFactory.decodeResource(context.getResources(), R.drawable.youplayer_local_file_default);
break;
case MEDIA_TYPE_MYAUDIO:
temp = BitmapFactory.decodeResource(context.getResources(), R.drawable.youplayer_local_file_default);
break;
case MEDIA_TYPE_AUDIO:
case MEDIA_TYPE_RADIO:
temp = BitmapFactory.decodeResource(context.getResources(), R.drawable.youplayer_local_folder_music);
break;
default:
temp = BitmapFactory.decodeResource(context.getResources(), R.drawable.youplayer_local_file_default);
break;
}
} catch (Throwable e) {
e.printStackTrace();
}
return temp;
}
public static void v(String type, String msg) {
LOG.v(TAG, type, msg);
}
public static void err(String type, String msg) {
LOG.e(TAG, type, msg);
}
@Override
public void createFileIcon(Context context, MediaInfoCallBack callback) {
// TODO Auto-generated method stub
}
}