您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

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

时间:04-02来源:作者:点击数:

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

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

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门