package lzf.video.edit.task; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; import java.io.File; import java.io.FileFilter; import java.util.ArrayList; import java.util.List; import lzf.video.edit.entry.VideoEntry; import lzf.video.edit.inter.OnScanLocalVideoListener; /** * Created by Administrator on 2017/3/23 0023. */ public class ScanLocalVideoAsyncTask extends AsyncTask<Void, Integer, List<VideoEntry>> { private List<VideoEntry> videoInfo = new ArrayList<>(); private OnScanLocalVideoListener onScanLocalVideoListener; public void setOnScanLocalVideoListener(OnScanLocalVideoListener onScanLocalVideoListener) { this.onScanLocalVideoListener = onScanLocalVideoListener; } @Override protected List<VideoEntry> doInBackground(Void... params) { if (onScanLocalVideoListener!=null) { onScanLocalVideoListener.onStarted(); } videoInfo = getVideoFile(videoInfo, Environment.getExternalStorageDirectory()); // videoInfos=filterVideo(videoInfos);//过滤小文件 Log.i("tga", "最后的大小" + videoInfo.size()); return videoInfo; } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); } @Override protected void onPostExecute(List<VideoEntry> videoInfo) { super.onPostExecute(videoInfo); if (onScanLocalVideoListener!=null) { onScanLocalVideoListener.onFinish(videoInfo); } // list_video.addAll(videoInfo); // adapter.notifyDataSetChanged(); } /** * 获取视频文件 * * @param list * @param file * @return */ private List<VideoEntry> getVideoFile(final List<VideoEntry> list, File file) { file.listFiles(new FileFilter() { @Override public boolean accept(File file) { String name = file.getName(); int i = name.indexOf('.'); if (i != -1) { name = name.substring(i); if (name.equalsIgnoreCase(".mp4")) { VideoEntry video = new VideoEntry(); file.getUsableSpace(); video.setDisplayName(file.getName()); video.setPath(file.getAbsolutePath()); Log.i("local_map4", "name" + video.getPath()); list.add(video); return true; } //判断是不是目录 } else if (file.isDirectory()) { getVideoFile(list, file); } return false; } }); return list; } }