需求:  调用系统照相机进行拍照,并且保存到系统相册,调用系统相册的时候能看到


系统相册的路径:String cameraPath=

Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM+File.separator+"Camera"+File.separator;


private Uri photoUri;
private String fileName;
private File photoFile;


1.这样的话你可以去我们保存的路径下查看下,是不是已经存在了

但是这样,你直接调用系统的相册,或者通过查询数据库来查看图片,咦?为什么没有呢!别着急到这里后还没有完呢,如果想让系统知道我们拍照了,我们还需要做一步操作就是通知数据库(更新指定的url),让图片数据库更行,知道我们拍了新的照片。(注:这个时候的图片是没有缩略图的,有的系统会在一段时间后自动生成缩略图)

通知数据库更新指定的url

下面这个是通知更新整个内存卡的,在早期的安卓版本中会使用到,更新的范围大,如果内存卡中有很多数据,会非常的慢(注:现在已经很少用)。


这样就看你在什么地方需要通知了,我在项目中是在返回的时候发广播通知系统图库更新的。

不同的系统版本通知的不一样(我文章中通知的这个范围在小米4和三星galaxys4 都没有问题,可以再系统图库中看到,但是另一款三星note 的系统图库中就没有看到。如果有更好的解决办法,烦劳小伙伴告知了,不甚感激!)


2.另外还有一种方法可以把图片插入到系统图库中。



但是这种方法,并不能指定保存的路径,而且系统会根据自己的规则来给图片进行命名。执行这个方法,你的内存中就会有两个一样的图片了,一个是你自己保存的路径,一个是执行这个方法,系统自动为你保存的一个图片。通过查看源码我们会发现,这个方法还会为图片生成缩略图。

下面我贴出这个方法的源码,可以清楚的看到在这个方法中对图片做了压缩和生成缩略图的处理。




3.对于保存拍照后的图片,我在网上看到有的小伙伴这样写,但是我这样写会报错,不知道你们遇到过没,知道的小伙伴告诉下哈,感谢 感谢

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
// ...做保存图片的操作...
}


更多相关文章

  1. android studio 2.0 引导页示例
  2. [掌眼]Android(安卓)WebView Long Press长按保存图片到手机
  3. Android绘制进阶之五:位图的处理
  4. android音乐播放器(2)
  5. Android(安卓)的 Recovery 模式分析
  6. android 自定义属性
  7. Android系统编译过程中常见问题汇总(1)
  8. Native registration unable to find class 'com/android/server
  9. ubuntu10.0.4 android2.2 编译总结

随机推荐

  1. Android 检查版本更新 Server后台下载
  2. Android的几种数据存储方式
  3. Android(安卓)selector的item里的属性说
  4. Android(安卓)Gallery控件使用方法详解
  5. android课后作业
  6. Android中bitmap图片透明度的处理(以撕美
  7. 3.创建第一个android项目
  8. Android使用DOM方式解析XML
  9. Android应用程序使用Localsocket与Linux
  10. android自定义progressbar图片大小自适应