列出Android中的所有相机图像

如何获得Android设备的所有相机图像列表?

它是否通过MediaStore? 怎么样?

Gallery应用程序通过在Images.Media.EXTERNAL_CONTENT_URI上使用内容parsing器并通过Media.BUCKET_ID过滤结果来获取相机图像。 存储桶标识符由以下代码确定:

public static final String CAMERA_IMAGE_BUCKET_NAME = Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera"; public static final String CAMERA_IMAGE_BUCKET_ID = getBucketId(CAMERA_IMAGE_BUCKET_NAME); /** * Matches code in MediaProvider.computeBucketValues. Should be a common * function. */ public static String getBucketId(String path) { return String.valueOf(path.toLowerCase().hashCode()); } 

基于此,以下是获取所有相机图像的片段:

 public static List<String> getCameraImages(Context context) { final String[] projection = { MediaStore.Images.Media.DATA }; final String selection = MediaStore.Images.Media.BUCKET_ID + " = ?"; final String[] selectionArgs = { CAMERA_IMAGE_BUCKET_ID }; final Cursor cursor = context.getContentResolver().query(Images.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null); ArrayList<String> result = new ArrayList<String>(cursor.getCount()); if (cursor.moveToFirst()) { final int dataColumn = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); do { final String data = cursor.getString(dataColumn); result.add(data); } while (cursor.moveToNext()); } cursor.close(); return result; } 

有关更多信息,请查看Gallery应用程序源代码的ImageManager和ImageList类。