/** 得到图片集 */ void buildImagesBucketList() { long startTime = System.currentTimeMillis(); // 构造缩略图索引 getThumbnail(); // 构造相册索引 String columns[] = new String[] { BaseColumns._ID, ImageColumns.BUCKET_ID, ImageColumns.PICASA_ID, MediaColumns.DATA, MediaColumns.DISPLAY_NAME, MediaColumns.TITLE, MediaColumns.SIZE, ImageColumns.BUCKET_DISPLAY_NAME }; // 得到一个游标 Cursor cur = cr.query(Media.EXTERNAL_CONTENT_URI, columns, null, null, null); if (cur.moveToFirst()) { // 获取指定列的索引 int photoIDIndex = cur.getColumnIndexOrThrow(BaseColumns._ID); int photoPathIndex = cur.getColumnIndexOrThrow(MediaColumns.DATA); int photoNameIndex = cur.getColumnIndexOrThrow(MediaColumns.DISPLAY_NAME); int photoTitleIndex = cur.getColumnIndexOrThrow(MediaColumns.TITLE); int photoSizeIndex = cur.getColumnIndexOrThrow(MediaColumns.SIZE); int bucketDisplayNameIndex = cur.getColumnIndexOrThrow(ImageColumns.BUCKET_DISPLAY_NAME); int bucketIdIndex = cur.getColumnIndexOrThrow(ImageColumns.BUCKET_ID); int picasaIdIndex = cur.getColumnIndexOrThrow(ImageColumns.PICASA_ID); // 获取图片总数 int totalNum = cur.getCount(); do { String _id = cur.getString(photoIDIndex); String name = cur.getString(photoNameIndex); String path = cur.getString(photoPathIndex); String title = cur.getString(photoTitleIndex); String size = cur.getString(photoSizeIndex); String bucketName = cur.getString(bucketDisplayNameIndex); String bucketId = cur.getString(bucketIdIndex); String picasaId = cur.getString(picasaIdIndex); Log.i( TAG, _id + ", bucketId: " + bucketId + ", picasaId: " + picasaId + " name:" + name + " path:" + path + " title: " + title + " size: " + size + " bucket: " + bucketName + "---"); ImageBucket bucket = bucketList.get(bucketId); if (bucket == null) { bucket = new ImageBucket(); bucketList.put(bucketId, bucket); bucket.imageList = new ArrayList<ImageItem>(); bucket.bucketName = bucketName; } bucket.count++; ImageItem imageItem = new ImageItem(); imageItem.imageId = _id; imageItem.imagePath = path; imageItem.thumbnailPath = thumbnailList.get(_id); bucket.imageList.add(imageItem); } while (cur.moveToNext()); } Iterator<Entry<String, ImageBucket>> itr = bucketList.entrySet().iterator(); while (itr.hasNext()) { Map.Entry<String, ImageBucket> entry = itr.next(); ImageBucket bucket = entry.getValue(); Log.d(TAG, entry.getKey() + ", " + bucket.bucketName + ", " + bucket.count + " ---------- "); for (int i = 0; i < bucket.imageList.size(); ++i) { ImageItem image = bucket.imageList.get(i); Log.d(TAG, "----- " + image.imageId + ", " + image.imagePath + ", " + image.thumbnailPath); } } hasBuildImagesBucketList = true; long endTime = System.currentTimeMillis(); Log.d(TAG, "use time: " + (endTime - startTime) + " ms"); }