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


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

     

    系统相册的路径: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");
    // ...做保存图片的操作...
    }

  • 相关阅读:
    jq 比较五获取结构树的位置 eq() 或者parent
    jq 笔记四 end的用法
    jq 笔记三 find的用法
    jq 笔记二filter()用法
    jq 笔记一 选择器中的逗号
    Linux 笔记五 搜索命令的命令
    linux 笔记四 文件搜索(locate)
    使用ansible时显示Failed to connect to the host via ssh
    linux音频解码软件ffmpeg的安装
    centos服务器jenkins安装配置
  • 原文地址:https://www.cnblogs.com/dongweiq/p/6478393.html
Copyright © 2020-2023  润新知