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

发布时间:2019-08-08 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android开发实现保存图片到手机相册功能脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

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

 String[] PERMISSIONS = {     "android.permission.READ_EXTERNAL_STORAGE",     "android.permission.WRITE_EXTERNAL_STORAGE" }; //检测是否有写的权限 int permission = ContextCompat.checkSelfPermission(this,     "android.permission.WRITE_EXTERNAL_STORAGE"); if (permission != PackageManager.PERMISSION_GRANTED) {   // 没有写的权限,去申请写的权限,会弹出对话框   ActivityCompat.requestPermissions(this, PERMISSIONS,1); } 保存文件的方法: public void SaveBitmapFromView(View view) {   int w = view.getWidth();   int h = view.getHeight();   Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.config.argB_8888);   Canvas c = new Canvas(bmp);   view.layout(0, 0, w, h);   view.draw(c);  // 缩小图片  Matrix matrix = new Matrix();  matrix.postScale(0.5f,0.5f); //长和放大缩小的比例  bmp = Bitmap.createBitmap(bmp,0,0,        bmp.getWidth(),bmp.getHeight(),matrix,true);  DateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");    saveBitmap(bmp,format.format(new Date())+".JPEG"); } /*  * 保存文件,文件名为当前日期  */ Public void saveBitmap(Bitmap bitmap, String bitName){     String fileName ;     File file ;     if(Build.BRAND .equals("Xiaomi") ){ // 小米手机        fileName = environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/"+bitName ;     }else{ // Meizu 、Oppo       fileName = Environment.getExternalStorageDirectory().getPath()+"/DCIM/"+bitName ;     }     file = new File(fileName);     if(file.exists()){       file.delete();     }     FileOutputStream out;     try{       out = new FileOutputStream(file);  // 格式为 JPEG,照相机拍出的图片为JPEG格式的,PNG格式的不能显示在相册中       if(bitmap.COMPress(Bitmap.ComPRessFormat.JPEG, 90, out))       {         out.flush();         out.close(); // 插入图库            MediaStore.Images.Media.insertImage(this.getContentResolver(), file.getAbsolutePath(), bitName, null);       }     }     catch (FileNotFoundException e)     {       e.printStackTrace();     }     catch (IOException e)     {       e.printStackTrace();     }  // 发送广播,通知刷新图库的显示     this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fileName))); }  

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

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

android教程
脚本网站
android studio

脚本宝典总结

以上是脚本宝典为你收集整理的Android开发实现保存图片到手机相册功能全部内容,希望文章能够帮你解决Android开发实现保存图片到手机相册功能所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。