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

/*** 读取手机中所有图片信息*/
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. Liunx中环境变量的配置profile,environment,barshrc
  2. c#滚动条创建实例,多线程
  3. 芋道 spring security oauth2 入门_Spring官方宣布:新的Spring OAuth2.0授权服务器已经来了
  4. 关于 “Makefile:3:***遗漏分隔符。停止 。”解决方法二
  5. Step by Step演示如何训练Pytorch版的EfficientDet
  6. SimpleDateFormat 格式化日期
  7. oracle 数据加密
  8. drupal主题开发_开发人员充满了Drupal的活力和活力
  9. 紫微斗数排盘JS算法 源码 和解析
  10. 一个纯粹的中文搜索引擎【Doge Doge】多吉搜索
  11. 微信测试睡眠的软件,微信小睡眠小程序使用方法
  12. html完整语句,html语句
  13. 【LOJ3124】「CTS2019」氪金手游
  14. 微信第三方平台授权流程说明
  15. 2021年后一个算法工程师的门槛有多高?
  16. 4.4 区块链和大数据
  17. 入行web前端开发可以做什么工作
  18. 为SEO而生的Rabbit V1.0 WordPress主题下载
  19. 特斯拉model3中控屏怎么关_玩转特斯拉Model 3:那些隐藏的功能和技巧
  20. 软件工程文档编写标准包括哪些内容

热门文章

  1. PLC编程0基础入门到精通
  2. ICLR 2022的10篇论文推荐
  3. Ubuntu 下安装极点五笔输入法
  4. 软考 | 2018年下半年 软件设计师 下午试卷
  5. 2022年,树莓派搭建web服务器,加各种bug的解决
  6. 学Python还需要花钱?啥情况?
  7. 简易android手电筒app
  8. 什么软件可以提取扫描文件上的文字
  9. 自定义Switch背景带文字
  10. 基于vs2017 Qt编写软件控制安捷伦信号源