Esempio n. 1
0
  /** 得到图片集 */
  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");
  }