广告
返回顶部
首页 > 资讯 > 精选 >Android读取本地照片和视频相册实例代码
  • 555
分享到

Android读取本地照片和视频相册实例代码

android相册roi 2023-05-31 02:05:36 555人浏览 薄情痞子
摘要

前言项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了ContentPrivider这个api来管理这个

前言

项目中经常要选择本地照片或者视频的需求,如果去扫描整个SD卡就太耗时间,其实Android系统在启动时就已经把整个设备中的多媒体文件信息(文件名,类型,大小等)都存到了数据库,然后提供了ContentPrivider这个api来管理这个数据库,我们可以利用ContentPrivider来获取所有的照片和视频。

ContentPrivider初识

先看下管理的的数据库在哪

data/data/目录下:有很多这种文件夹(日历,联系人,下载管理,多媒体等)

Android读取本地照片和视频相册实例代码

我们需要的照片和视频就在media下面,进去看看。进去找到database然后打开external.db,就可以看到多张表(音频,文件,Log,图像,视频等)

Android读取本地照片和视频相册实例代码

照片相册

那么获取照片直接通过 ContentProvider读取Images这个数据库就OK了,这里开启工作线程读取所有.jpeg和.png的图片,附上代码段:

  private void getAllPhotoInfo() {  new Thread(new Runnable() {   @Override   public void run() {    List<MediaBean> mediaBeen = new ArrayList<>();    HashMap<String,List<MediaBean>> allPhotosTemp = new HashMap<>();//所有照片    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));      //用于展示相册初始化界面      mediaBeen.add(new MediaBean(MediaBean.Type.Image,path,size,displayName));      // 获取该图片的父路径名      String dirPath = new File(path).getParentFile().getAbsolutePath();      //存储对应关系      if (allPhotosTemp.containsKey(dirPath)) {       List<MediaBean> data = allPhotosTemp.get(dirPath);       data.add(new MediaBean(MediaBean.Type.Image,path,size,displayName));       continue;      } else {       List<MediaBean> data = new ArrayList<>();       data.add(new MediaBean(MediaBean.Type.Image,path,size,displayName));       allPhotosTemp.put(dirPath,data);      }     }     mCursor.close();    }    //更新界面    runOnUiThread(new Runnable() {     @Override     public void run() {      //...     }    });   }  }).start(); }

--结束END--

本文标题: Android读取本地照片和视频相册实例代码

本文链接: https://www.lsjlt.com/news/222971.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作