package com.youplayer.player.local;
import java.lang.ref.SoftReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.youplayer.util.LOG;
import android.content.Context;
import android.graphics.Bitmap;
public abstract class YouPlayerInterfaceFile {
protected String parent = "";
protected String name = "";
protected String path = "";
protected long modified = 0;
protected Bitmap drawable;
protected String iconPath;
protected long size;
public int fileNum = 0;
protected int sourceType;
public static final int SOURCE_TYPE_LOACAL = 0;
public static final int SOURCE_TYPE_SERVER = 1;
public static final int SOURCE_TYPE_ONLINE = 2;
public static final int SOURCE_TYPE_DOWNLOAD = 3;
protected int list_Type = 0;
public static final int LIST_LOCAL = 0;
public static final int LIST_FAVORITES = 1;
public static final int LIST_PLAYED = 2;
/** media类型 */
public int mediaType;
public static final int MEDIA_TYPE_VIDEO = 0;
public static final int MEDIA_TYPE_AUDIO = 1;
public static final int MEDIA_TYPE_RADIO = 2;
public static final int MEDIA_TYPE_FOLDER = 3;
public static final int MEDIA_TYPE_MYAUDIO = 4;//用户自拍视频
protected int width;
protected int height;
/**
* 文件夹下的文件集合
*/
public List<YouPlayerInterfaceFile> mediaList = new ArrayList<YouPlayerInterfaceFile>();
public static HashMap<String, SoftReference<Bitmap>> imageCache = new HashMap<String, SoftReference<Bitmap>>();
public void resolveMedia(Context context, MediaInfoCallBack callBack) {
// ThreadPoolManager.getInstance().addExecuteTask(new ResolveMediaInfo(context, InterfaceFile.this, callBack));
}
public Bitmap getFileIcon(Context context) {
Bitmap temp = null;
if ((null!= imageCache) && imageCache.containsKey(path)) {
LOG.v("getFileIcon", "getFileIcon", "get imagecache");
SoftReference<Bitmap> softReference = imageCache.get(path);
temp = softReference.get();
LOG.v("getFileIcon", "getFileIcon", "temp : "+ temp);
}
if(temp == null) {
temp = getDefaultIcon(context);
}
return temp;
}
public abstract Bitmap getDefaultIcon(Context context);
public static void destoryThreadPoll() {
// executor = null;
// queue = null;
}
protected boolean isHD;
public void addMediaFile(YouPlayerInterfaceFile mediaFile) {
mediaList.add(mediaFile);
}
public List<YouPlayerInterfaceFile> getMediaList() {
return mediaList;
}
public void setMediaList(ArrayList<YouPlayerInterfaceFile> mediaList) {
this.mediaList = mediaList;
}
public int getMediaType() {
return mediaType;
}
public void setMediaType(int mediaType) {
this.mediaType = mediaType;
}
public void setListType(int list_Type) {
this.list_Type = list_Type;
}
public int getListType() {
return list_Type;
}
public abstract boolean isDirectory();
public String getParent() {
return parent;
}
public void setParent(String parent) {
this.parent = parent;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public long getMediaFileSize() {
return size;
}
public void setMediaFileSize(long size) {
this.size += size;
}
public void setMediaFileSizeToZero() {
this.size = 0;
}
public static Bitmap getDrawable(String path){
Bitmap temp = null;
if ((null!= imageCache) && imageCache.containsKey(path)) {
SoftReference<Bitmap> softReference = imageCache.get(path);
temp = softReference.get();
}
return temp;
}
public int getSourceType() {
return sourceType;
}
public void setSourceType(int sourceType) {
this.sourceType = sourceType;
}
public static void setDrawable(String path, Bitmap drawable){
if(null == imageCache){
imageCache = new HashMap<String, SoftReference<Bitmap>>();
}
imageCache.put(path, new SoftReference<Bitmap>(drawable));
drawable = null;
}
public long getModified() {
return modified;
}
public void setModified(long date) {
this.modified = date;
}
public String getIconPath() {
return iconPath;
}
public void setIconPath(String iconPath) {
this.iconPath = iconPath;
}
public boolean isHD() {
return isHD;
}
public void setHD(boolean isHD) {
this.isHD = isHD;
}
public int getFileNum() {
return fileNum;
}
public void setFileNum(int fileNum) {
this.fileNum = fileNum;
}
public void addFileNum() {
this.fileNum++;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
protected UpdateBitmapListener listener;
public interface UpdateBitmapListener {
public void updateVideoDrawable(String path, Bitmap drawable, boolean isHD, String durtion);
public void updateAudioDrawable(String path, Bitmap drawable, String singger, String durtion);
public void updateMediaDrawable(String path, Bitmap drawable, boolean isHD);
}
public abstract void createFileIcon(Context context, MediaInfoCallBack callback);
public static boolean isLoadIcon;
public static void releaseRes() {
if(imageCache != null) {
imageCache.clear();
}
}
public static interface MediaInfoCallBack {
//msg0 时间 msg1歌手
public void callback(String path, Bitmap bitmap, boolean isHD, String msg0, String msg1,long playedTime);
//文件夹adapter 数据显示回调
public void callBack(int position, Bitmap bitmap);
}
}