package com.softwinner.TvdFileManager; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import com.softwinner.ISOMountManager; import com.softwinner.ISOMountManager.MountInfo; import android.content.Context; import android.util.Log; public class ISOManager{ private Context mContext; private static File cdromRoot = null; private static final String TAG = ISOManager.class.getSimpleName(); private ArrayList<MountInfo> cdromList = null; public ISOManager(Context context){ mContext = context; cdromRoot = mContext.getDir("CDROM", 0); cdromList = new ArrayList<MountInfo>(); } public String getVirtualCDRomPath(String isoFile){ String cdromPath; for(MountInfo info:cdromList){ if(info.mISOPath.equals(isoFile)){ return info.mMountPath; } } cdromPath = createVirtualCDRomPathIfNeed(isoFile); int ret; //ж�ظù��ص�,Ϊ��ȷ���ܳɹ����� ret = ISOMountManager.umount(cdromPath); //���ظù��ص� ret = ISOMountManager.mount(cdromPath, isoFile); //���ݹ��ط���ֵ,��Ϊnullʱ�����iso�ļ������������ӳ���ϵ switch(ret){ case 0: MountInfo isoInfo = new MountInfo(cdromPath, isoFile); cdromList.add(isoInfo); return cdromPath; default: return null; } } private String createVirtualCDRomPathIfNeed(String isoFile){ File file = new File(isoFile); String name = file.getName(); File f = new File(cdromRoot, name); Log.d(TAG,"createVirtualCDRomPathIfNeed() cdromPath is " + f.getAbsolutePath()); if(!f.exists()){ try{ f.mkdir(); }catch(Exception e){ Log.e(TAG,"createVirtualCDRomPathIfNeed() create path fail!"); return null; } } return f.getAbsolutePath(); } public boolean isVirtualCDRom(String filePath){ for(MountInfo info:cdromList){ if(info.mMountPath.equals(filePath)) return true; } return false; } public void clear(){ for(MountInfo info:cdromList){ ISOMountManager.umount(info.mMountPath); } cdromList.clear(); } public String getIsoFile(String cdromFile){ for(MountInfo info:cdromList){ if(info.mMountPath.equals(cdromFile)) return info.mISOPath; } return null; } private class IsoMountInfo{ public String isoFilePath; public String mountPointPath; } }