私は同じ問題を抱えているし、ここに私の解決策は、(このアルバムのサムネイルとして使用することができます)、その中にアルバム名と最初の画像を取得する(ギャラリーのソースコードをトレースした後)である:
(注バケット反復はgroupby &オーダーテクニックによって削除されます)
// which image properties are we querying
String[] PROJECTION_BUCKET = {
ImageColumns.BUCKET_ID,
ImageColumns.BUCKET_DISPLAY_NAME,
ImageColumns.DATE_TAKEN,
ImageColumns.DATA};
// We want to order the albums by reverse chronological order. We abuse the
// "WHERE" parameter to insert a "GROUP BY" clause into the SQL statement.
// The template for "WHERE" parameter is like:
// SELECT ... FROM ... WHERE (%s)
// and we make it look like:
// SELECT ... FROM ... WHERE (1) GROUP BY 1,(2)
// The "(1)" means true. The "1,(2)" means the first two columns specified
// after SELECT. Note that because there is a ")" in the template, we use
// "(2" to match it.
String BUCKET_GROUP_BY =
"1) GROUP BY 1,(2";
String BUCKET_ORDER_BY = "MAX(datetaken) DESC";
// Get the base URI for the People table in the Contacts content provider.
Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Cursor cur = getContentResolver().query(
images, PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY);
Log.i("ListingImages"," query count=" + cur.getCount());
if (cur.moveToFirst()) {
String bucket;
String date;
String data;
int bucketColumn = cur.getColumnIndex(
MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
int dateColumn = cur.getColumnIndex(
MediaStore.Images.Media.DATE_TAKEN);
int dataColumn = cur.getColumnIndex(
MediaStore.Images.Media.DATA);
do {
// Get the field values
bucket = cur.getString(bucketColumn);
date = cur.getString(dateColumn);
data = cur.getString(dataColumn);
// Do something with the values.
Log.i("ListingImages", " bucket=" + bucket
+ " date_taken=" + date
+ " _data=" + data);
} while (cur.moveToNext());
}
いいえ、繰り返しバケット表示名のリストではなく、一意のバケット表示名を照会したいだけです。例えば。私はカメラとコンクールのアルバムのようなものを持っていたい。しかし、URのサンプルコードでは、カメラ、カメラ、カメラ、競技会、競技会などのようなものが表示されます。 – LittleFunny
はい! 私はキーとして各要素をHashMapに追加することでこれを解決しました。ちょっと迷惑ですが、うまくいきます。 –
それでも問題は正しく解決されません。表示名が同じで写真が異なる2つの一意のフォルダを持つことができます。 BUCKET_ITは、表示名ではなく、ハッシュのキーでなければならないものです。 –