Android 如何在安卓系统中使用相机拍摄最后一张图像?

Android 如何在安卓系统中使用相机拍摄最后一张图像?,android,android-camera,Android,Android Camera,我的目的不是拍一张照片,然后把它保存到sd卡上,获取链接和所有信息。这张照片已经在安卓系统的原始摄像头应用程序中拍摄 我所需要的是,我怎样才能得到像sd卡那样的图像路径 仿真/0/sdcard/DCIM/100ANDRO/image.jpg 如何获得最近拍摄的图像的格式。我是这样完成的: final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; final String

我的目的不是拍一张照片,然后把它保存到sd卡上,获取链接和所有信息。这张照片已经在安卓系统的原始摄像头应用程序中拍摄

我所需要的是,我怎样才能得到像sd卡那样的图像路径

仿真/0/sdcard/DCIM/100ANDRO/image.jpg


如何获得最近拍摄的图像的格式。

我是这样完成的:

final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID + " DESC";
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
imageCursor.moveToFirst();
do {
    String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
    if (fullPath.contains("DCIM")) {
        //--last image from camera --
        return;
    }
}
while (imageCursor.moveToNext());

使用此选项可从URI获取文件路径:

Uri selectedImageUri = data.getData();
selectedImagePath = getRealPathFromURI(selectedImageUri);

    public String getRealPathFromURI(Context context, Uri contentUri) {
  Cursor cursor = null;
  try { 
    String[] proj = { MediaStore.Images.Media.DATA };
    cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);
  } finally {
    if (cursor != null) {
      cursor.close();
    }
  }
}
Cursor
提供对数据库查询返回的结果集的随机读写访问

getContentResolver()
返回应用程序包的
ContentResolver
实例

当您希望访问内容提供程序中的数据时,可以在应用程序的上下文中使用ContentResolver对象作为客户端与提供程序通信。ContentResolver对象与提供者对象通信,提供者对象是实现ContentProvider的类的实例。提供者对象从客户端接收数据请求,执行请求的操作,并返回结果

内容解析器包括与内容提供者类中的抽象方法(插入、删除、查询、更新)相对应的CRUD(创建、读取、更新、删除)方法。内容解析器不知道与之交互的内容提供商的实现(也不需要知道);每个方法都传递一个URI,该URI指定要与之交互的内容提供者


MediaStore:媒体提供程序包含内部和外部存储设备上所有可用媒体的元数据
MediaStore.images
包含所有可用图像的元数据。

您可以获取文件捕获时的日期和时间,并与所有文件的日期和时间进行比较,只需替换为更长的时间即可。您可以查询MediaStore中的最新条目,见@GalBen Haim在发布这个问题之前,我已经看到了这个答案,但我对答案感到困惑。你能链接一些关于这个我认为sqllite android教程的教程吗?非常感谢你的回复,你的代码很有意义,我很乐意尝试一下,让你知道结果。相机不会被迫将图像保存在“DCIM”文件夹中。这不应该被认为是一个普遍的解决方案。它可以在一些带有摄像头应用程序的设备上工作,但在其他设备上则会失败。