Android开发拍照后相册不显示的问题

android开发 专栏收录该内容
12 篇文章 0 订阅

    用CSDC好长时间了,自己也积累了一些经验,以后有时间就分享给大家,现在先说一下最近遇到的一个问题,android手机拍照后,相册不显示,展示到listView时不按时间降序排列的问题。某些手机会出现调用系统相机拍照后会出现旋转90的情况,例如三星的某些手机,

picturePath为图片保存路径,在拍照返回的onActivityResult中调用如下方法即可。

    int degree = getPicRotate(picturePath);

if (degree != 0) {
        Matrix m = new Matrix();
        m.setRotate(degree); // 旋转angle        int width = bitmap.getWidth();
        int height = bitmap.getHeight();
        bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
        m, true);// 重新生成图片
        water_img = wCamera.createBitmap(bitmap);
        }

public int getPicRotate(String path) {
        int degree = 0;
        try {
        ExifInterface exifInterface = new ExifInterface(path);
        int orientation = exifInterface.getAttributeInt(
        ExifInterface.TAG_ORIENTATION,
        ExifInterface.ORIENTATION_NORMAL);
        switch (orientation) {
        case ExifInterface.ORIENTATION_ROTATE_90:
        degree = 90;
        break;
        case ExifInterface.ORIENTATION_ROTATE_180:
        degree = 180;
        break;
        case ExifInterface.ORIENTATION_ROTATE_270:
        degree = 270;
        break;
        }
        } catch (IOException e) {
        e.printStackTrace();
        }
        return degree;
        }


下面来说一下拍照后插数据库的问题

    ContentValues values = new ContentValues();
    ContentResolver resolver = this.getContentResolver();
values.put(MediaStore.Images.ImageColumns.DATA, picturePath);
        values.put(MediaStore.Images.ImageColumns.TITLE,
        picturePath.substring(picturePath.lastIndexOf("/") + 1));
        values.put(MediaStore.Images.ImageColumns.DATE_TAKEN,
        System.currentTimeMillis());
        values.put(MediaStore.Images.ImageColumns.MIME_TYPE,
        "image/jpeg");
        resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
        values);

这样相册中就可以查看到了

  • 1
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值