2025年3月27日 星期四 甲辰(龙)年 月廿六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

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

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

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

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

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