您的位置:首页 > 移动开发 > Android开发

android 调用系统照相机拍照后保存到系统相册,在系统图库中能看到

2015-03-18 14:39 471 查看
需求: 调用系统照相机进行拍照,并且保存到系统相册,调用系统相册的时候能看到

系统相册的路径: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");

// ...做保存图片的操作...

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐