Android开发实现保存图片到手机相册功能

  

本文实例讲述了Android开发实现保存图片到手机相册功能。分享给大家供大家参考,具体如下:

  

有一种很常见的需求,当保存图片的时候,客户需要在相册里面看到那张图片。有时候确实是保存成功了(通过IO流将图片写入了SDCard),但打开相册却看不到那张图片,需要在文件管理软件上才能找到那张图片,在网上找了许多文章,貌似都保存不到相册那里,这应该就是手机品牌的原因,有的品牌的手机能显示在相册里,有的品牌的手机却不能。解决这种问题,最简单粗暴的方法是,用那台手机拍一张照片,然后找到它,查看它的路径详情,直接根据路径用IO流写入,Android SDK的构建。品牌变量为当前手机的品牌,根据不同的品牌来做兼容处理,如果有读者用了这篇文章的代码还是不能在相册显示,可以对着这个思路来做兼容。另外值得一提的是,图片格式需要为JPEG格式才能显示在相册中,我们拍的照片也是JPEG格式的。下面用代码来实现上述的想法。

  

鉴于目前手机的版本普遍为Android 6.0以上,读写外部存储文件都需要动态申请权限。这部分代码可以在当前需要读写外部存储文件的活动中写。

     ={String[]权限   “android.permission.READ_EXTERNAL_STORAGE”,   “android.permission。WRITE_EXTERNAL_STORAGE "};//检测是否有写的权限=ContextCompat.checkSelfPermission (int许可,   “android.permission.WRITE_EXTERNAL_STORAGE”);   如果(许可!=PackageManager.PERMISSION_GRANTED) {//没有写的权限,去申请写的权限,会弹出对话框   ActivityCompat。requestPermissions(权限,1);   }   保存文件的方法:   公共空间SaveBitmapFromView(查看视图){   int w=view.getWidth ();   int h=view.getHeight ();   位图bmp位图。createBitmap (w h Bitmap.Config.ARGB_8888);   帆布c=新画布(bmp);   视图。布局(0,0 w h);   view.draw (c);//缩小图片   矩阵矩阵=new矩阵();   matrix.postScale (0.5, 0.5);//长和宽放大缩小的比例   bmp位图。createBitmap (bmp, 0, 0, bmp.getWidth (), bmp.getHeight(),矩阵,true);   DateFormat格式=new SimpleDateFormat (“yyyyMMddHHmmss”);   saveBitmap (bmp格式。新日期格式(())+“jpeg”);   }/*   *保存文件,文件名为当前日期   */公共空间saveBitmap(位图的位图,字符串bitName) {   字符串文件名;   文件文件;   如果构建。品牌.equals(“小米”)){//小米手机   文件名=Environment.getExternalStorageDirectory () .getPath () +“/DCIM/相机/? bitName;   其他}{//魅族,朋友   文件名=Environment.getExternalStorageDirectory () .getPath () +“DCIM/? bitName;   }=新文件(文件名);   如果(file.exists ()) {   file.delete ();   }   FileOutputStream;   尝试{=新FileOutputStream(文件);//格式为JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中   如果(bitmap.compress (Bitmap.CompressFormat.JPEG, 90))   {   out.flush ();   out.close ();//插入图库   file.getAbsolutePath MediaStore.Images.Media.insertImage (this.getContentResolver () (), bitName, null);   }   }   抓住(FileNotFoundException e)   {   e.printStackTrace ();   }   抓住(IOException e)   {   e.printStackTrace ();   }//发送广播,通知刷新图库的显示   这一点。sendBroadcast(新意图(意图。ACTION_MEDIA_SCANNER_SCAN_FILE, Uri。解析(“文件://?文件名)));   }      之前      

以上就是保存图片到相册的方式,代码写在类活动中,而我们只要稍微封装一下这些代码到你的ImageUtil或者FileUtil那样类里的面,你就可以方便地运用到你的项目中了,这里我就不封装了。

  

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android图形与图像处理技巧总结》,《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》,《Android视图视图技巧总结》,《Android布局布局技巧总结》及《安卓控件用法总结》

  

希望本文所述对大家Android程序设计有所帮助。

Android开发实现保存图片到手机相册功能