开发经常遇到获取图片问题

/*** 读取手机中所有图片信息*/
private void getAllPhotoInfo() {new Thread(new Runnable() {@Overridepublic void run() {Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;String[] projImage = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA,MediaStore.Images.Media.SIZE,MediaStore.Images.Media.DISPLAY_NAME};Cursor mCursor = getContentResolver().query(mImageUri,projImage,MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?",new String[]{"image/jpeg", "image/png"},MediaStore.Images.Media.DATE_MODIFIED+" desc");if(mCursor!=null){while (mCursor.moveToNext()) {// 获取图片的路径String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA));int size = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Images.Media.SIZE))/1024;String displayName = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME));//用于展示相册初始化界面// 获取该图片的父路径名String dirPath = new File(path).getParentFile().getAbsolutePath();//存储对应关系PhotoDirectory photo = new PhotoDirectory();photo.setCoverPath(path);directories.add(photo);}runOnUiThread(new Runnable() {@Overridepublic void run() {adapter.notifyDataSetChanged();}});mCursor.close();}}}).start();
}/*** 获取手机中所有视频的信息*/
private void getAllVideoInfos(){new Thread(new Runnable() {@Overridepublic void run() {BitmapFactory.Options options = new BitmapFactory.Options();options.inDither = false;options.inPreferredConfig = Bitmap.Config.ALPHA_8;ContentResolver contentResolver = getContentResolver();Cursor mCursor = contentResolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, null,null, null);List<PhotoDirectory> list = new ArrayList<>();if(mCursor!=null){while (mCursor.moveToNext()) {// 获取视频的路径int videoId = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Video.Media._ID));String path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Video.Media.DATA));/*  int duration = mCursor.getInt(mCursor.getColumnIndex(MediaStore.Video.Media.DURATION));long size = mCursor.getLong(mCursor.getColumnIndex(MediaStore.Video.Media.SIZE))/1024; //单位kbif(size<0){//某些设备获取size<0,直接计算Log.e("dml","this video size < 0 " + path);size = new File(path).length()/1024;}String displayName = mCursor.getString(mCursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));long modifyTime = mCursor.getLong(mCursor.getColumnIndex(MediaStore.Video.Media.DATE_MODIFIED));//暂未用到//提前生成缩略图,再获取:http://stackoverflow.com/questions/27903264/how-to-get-the-video-thumbnail-path-and-not-the-bitmapString[] projection = { MediaStore.Video.Thumbnails._ID, MediaStore.Video.Thumbnails.DATA};Cursor cursor = getContentResolver().query(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, projection, MediaStore.Video.Thumbnails.VIDEO_ID + "=?", new String[]{videoId+""}, null);String thumbPath = "";while (cursor.moveToNext()){thumbPath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA));}cursor.close();// 获取该视频的父路径名String dirPath = new File(path).getParentFile().getAbsolutePath();*///存储对应关系PhotoDirectory photo = new PhotoDirectory();photo.setCoverPath(path);list.add(photo);}runOnUiThread(new Runnable() {@Overridepublic void run() {for (int i = list.size()-1; i >-1 ; i--) {LogUtil.v(i+"================");directories.add(list.get(i));}adapter.notifyDataSetChanged();}});mCursor.close();}}}).start();
}

下载地址

1.适配android6.0+系统

2.解决部分机型闪退问题

3.解决图片过大oom闪退问题

Android 图片选择器(拍照)自定义相关推荐

  1. Android 图片选择器和图片裁剪库

    前言:现在大部分的App都支持上传图片和裁剪图片的功能,比如设置用户头像.聊天发送图片.发表动态.论坛帖子等.上传图片需要先从选择手机中选择要上传的图片,所以图片选择器在App中是很常见的组件,一般的 ...

  2. Matisse Android图片选择器详细使用

    Matisse Android 图片选择器 详细使用方式 前言 我们在做App的时候很多需求都要选择图片 比如说: 上传头像 上传朋友圈 发送图片 内容编辑插入图片 我们也可以使用系统的组件来完成我们 ...

  3. android图片选择器框架支持长图,基于RxJava的Android图片选择器. – RxPicker

    RxPicker 基于 RxJava 的 Android 图片选择器. 特性 与 RxJava 结合,支持响应式得到选择图片结果 兼容 Android 7.0 自定义 ImageLoader 预览 使 ...

  4. android 仿照ios 图片选择,GitHub - wildma/PictureSelector: Android 图片选择器(仿 IOS 图片选择控件)...

    PictureSelector Android 图片选择器(仿 IOS 图片选择控件) 效果图 功能特点 支持通过拍照获取图片 支持通过相册获取图片 支持图片是否裁剪两种场景 支持仿 IOS 底部弹出 ...

  5. android 自定义相册选择,Android图片选择器,支持拍照、从相册选择、裁剪、自定义主题...

    在很多项目中都会用到图片选择器,比如在选择头像的时候,还会要求选择图片进行裁剪后再进行上传:而有的项目要支持拍照后进行图片裁剪再进行上传.由于Android系统兼容性问题,我们不得不考虑自己实现图片裁 ...

  6. Android图片选择器PhotoPicker

    前言 维护的一个项目的时候发现,项目使用了一个5年前的库,是通过直接拉源码的并改写的方式来实现的.去GitHub找到了这个库PhotoPicker.作者说项目不维护了,建议大家使用zhihu/Mati ...

  7. Android 图片选择器(支持拍照,预览)

    最近项目中需要选择本地图片,自己就在网上找了一个第三方框架,此框架不太满足自己的需求,此框架拍照后,会自动将照片返回,我需要将图片设置为选中状态并不返回,自己修改了框架源码,改成自己的需求,下面有图片 ...

  8. H5调用Android图片和拍照

    这个功能需要自己做兼容处理,需要自己去实现,实现代码为: 1.拿取回调接口mUploadCallbackAboveL private ValueCallback<Uri[]> mUploa ...

  9. Android 图片黑白显示 自定义饱和度

    Android 自定义显示黑白色图片 1.先下载下来需要显示的图片(或头像) 我模拟下,将图片放到assert文件夹下,拿到他的InputStream.代码如下: 1 InputStream in = ...

最新文章

  1. 2022-2028年中国金融安防行业深度调研及投资前景预测报告
  2. python--练习--将字符串转成列表
  3. 从一个案例看系统优化
  4. 使用lxml代替beautifulsoup
  5. linux c程序加args,C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用
  6. 【BlackHat】研究员吐槽苹果漏洞奖励计划
  7. springmvc(4)注解简单了解
  8. Okhttp之CacheInterceptor简单分析
  9. 计算机应用基础公开课,计算机应用基础-公开课教案.doc
  10. java调用python机器学习模型的坑
  11. 2010-2012迷你博客
  12. Promise中then的返回值
  13. 如何用html写抖动效果,利用transition实现文字上下抖动的效果
  14. mysql安装快完了报错creating mysql router configuration显示不通过,图文教程
  15. 软件编程:常见缩写、简称
  16. 76位健康专家共荐防病36计
  17. Unity与Android Studio互相调用
  18. 腾讯企业邮箱java-收发邮件
  19. HPC 网络技术 — Overview
  20. python 解析cfg文件

热门文章

  1. 算法设计——最优二叉树搜索问题
  2. 杭州一员工因离职和领导起纠纷,携带爆炸物把写字楼给炸了!
  3. omnigraffle 创建版型
  4. pstm.setString(2, passw);
  5. “智慧”引领视频监控新时代_智能视频分析
  6. Pytorch 模型训练步骤
  7. 一键扫码,10分钟入职,听说“高配”公司都是这样做的
  8. 第七章 其他神经网络类型
  9. 浅谈云化场景下的那些业务迁移基本流程设计与华为迁移方案概述
  10. opencv学习笔记六十八:显示中文汉字