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

时间:2013-11-19 07:38:36

标签: android android-camera

我的意图是不拍照然后将其保存到SD卡,获取链接等等。该图像已经在Android中使用原始相机应用程序。

所有我需要它如何获得关于SD卡的图像路径

模拟/ 0 / SD卡/ DCIM / 100ANDRO / image.jpg的

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

2 个答案:

答案 0 :(得分:3)

我已经完成了这样的事情:

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());

答案 1 :(得分:2)

使用此命令从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的类的实例。提供者对象从客户端接收数据请求,执行请求的操作,并返回结果。

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

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