public MediaFileDescriptor buildMediaDescriptor(File f) { MediaFileDescriptor id = new MediaFileDescriptor(); int[] data; String md5; try { id.setPath(f.getCanonicalPath()); id.setMtime(f.lastModified()); id.setSize(f.length()); // generate thumbnails only for images, not video if (Utils.isValideImageName(f.getName())) { MetaDataFinder mdf = new MetaDataFinder(f); double[] latLon = mdf.getLatLong(); if (latLon != null) { id.setLat(latLon[0]); id.setLon(latLon[1]); } // bufferize images in memory, read directly from file for others ByteArrayInputStream fbi = this.readFileToMemory(f); id.setHash(new ImageHash().generateSignature(fbi)); fbi.reset(); md5 = generateMD5(fbi); id.setMd5Digest(md5); } else { md5 = generateMD5(f); id.setMd5Digest(md5); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { System.err.println("Error processing file " + f.getName()); e.printStackTrace(); } return id; }