Android 获取手机中的图片信息的两种方法

原创 2015年07月10日 17:16:41
1,  

Android 使用ContentProvider扫描手机中的图片


// 必须在查找前进行全盘的扫描,否则新加入的图片是无法得到显示的(加入对sd卡操作的权限)//todo 仅限于android4.2.2(API 17)以下(不包括17)可以正常使用。。。。
public static void allScanBeforeSearchRes(Context context) {


    if (Build.VERSION.SDK_INT >= 17) { // 判断SDK版本是不是4.2.2或者高于4.2.2.//todo useless...
        String[] paths = new String[]{Environment.getExternalStorageDirectory().toString()};
        MediaScannerConnection.scanFile(context, paths, null, null);
    } else {
        Intent intent;
        intent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
        intent.setClassName("com.android.providers.media", "com.android.providers.media.MediaScannerReceiver");
        intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
        context.sendBroadcast(intent);
    }

}

private void getAllPicturesInTheDevice() {

    CommonUtil.allScanBeforeSearchRes(this);//对android 4.4 以下有用。。。

    String[] projection = {
            MediaStore.Images.Media.DATA,
            MediaStore.Images.Media.DATE_TAKEN,
    };

    //全部图片
    String where = MediaStore.Images.Media.MIME_TYPE + "=? or "
            + MediaStore.Images.Media.MIME_TYPE + "=?";
    String[] whereArgs = {"image/jpeg", "image/png"};

    Cursor cursor = getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection,
            where, whereArgs, MediaStore.Images.Media.DATE_MODIFIED + " desc");
   
    while (cursor.moveToNext()) {
        String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
        Long takeDate = cursor.getLong(cursor.getColumnIndex(MediaStore.Images.Media.DATE_TAKEN));

	......
    }
    cursor.close();

}

2, 通过遍历找到所有的图片格式的文件。强烈推荐使用第二种方法,准确。
private static List<File> fileList = new ArrayList<File>();
private static String[] img = new String[]{".jpg", ".png", ".gif", ".bmp"};

/**
 * 遍历sdcard 找到某找类型的file放到list中。
 * 比较耗时 建议放在线程中做
 * @param file
 */
private static void checkFile(File file) {// 遍历文件,在这里是遍历sdcard

    if (file.isDirectory()) {// 判断是否是文件夹

        File[] files = file.listFiles();// 以该文件夹的子文件或文件夹生成一个数组

        if (files != null) {// 如果文件夹不为空

            for (int i = 0; i < files.length; i++) {

                File f = files[i];

                checkFile(f);// 递归调用

            }

        }

    } else if (file.isFile()) {// 判断是否是文件

        int dot = file.getName().lastIndexOf(".");

        if (dot > -1 && dot < file.getName().length()) {

            String extriName = file.getName().substring(dot,

                    file.getName().length());// 得到文件的扩展名

            if (extriName.equals(img[0]) || extriName.equals(img[1])

                    || extriName.equals(img[2]) || extriName.equals(img[3])) {// 判断是否是图片文件 www.it165.net

                fileList.add(file);

            }

        }

    }

}


相关链接:
http://blog.csdn.net/xiaanming/article/details/18730223

http://www.it165.net/pro/html/201304/5483.html


版权声明:本文为博主原创文章,未经博主允许,大家可以转载,希望可以帮助到更多的人,向开源致敬。

android中的ContentResolver获取手机本地图片

获取手机的本地图片就是使用ContentResolver类查询本地的数据库,只不过需要使用该类进行查询,并且该类中提供了增删改查的响应的方法。本篇博文并不对ContentResolver进行详细的介绍...
  • u010156024
  • u010156024
  • 2015年03月07日 19:14
  • 4139

android 获取图片信息 之 ExifInterface

--------------------------------------------------------------------------------------- 作者:承香墨影 出处:...
  • haha_zhan
  • haha_zhan
  • 2016年09月13日 11:39
  • 2915

android:如何从照片中获取拍摄地址信息

在开发中遇到一个需求,需要解析拿到照片拍摄时的地址信息,在网上有很多网站提供照片上传后解析出照片的具体信息,很详细。android也很给力,提供ExifInterface ,可以获取到拍摄照片时的很多...
  • qq_17326933
  • qq_17326933
  • 2015年08月29日 20:50
  • 4999

Android中通过Exif-ExifInterface获取图片的相关信息,并且在图片上添加获取到的信息将图片展示出来

1、Exif-ExifInterface简介 Exif是一种图像文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门...
  • liu_jing_hui
  • liu_jing_hui
  • 2017年03月16日 09:31
  • 2160

Android中通过Exifinterface读取图片地理位置信息

效果图: 一、了解Exif EXIF(Exchangeable Image File)是“可交换图像文件”的缩写,是一种图像文件格式,它的数据存储与JPEG格式是完全相同的,当中包含了...
  • diyangxia
  • diyangxia
  • 2016年03月30日 16:23
  • 11427

Android获取图片信息

出处:www.csdn.net 1、我们把图片放在了drawable下面,我们通过图片的ID(ID就是R.drawable.图片名称)获得图片名称 比如我们知道了图片的ID,我们想把它...
  • zhengliusu
  • zhengliusu
  • 2012年01月06日 15:53
  • 4337

Android实现获取手机里面的所有图片

public class MainActivity extends Activity {//查看图片按钮 private Button look; private Button add...
  • bi_diu1368
  • bi_diu1368
  • 2016年09月03日 22:52
  • 5479

Android开发之获取相册照片和获取拍照照片

在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片...
  • Beyond0525
  • Beyond0525
  • 2013年05月17日 15:38
  • 116789

Android开发之获取相册照片和获取拍照照片

在Android的开发过程中,我们可能会读取手机里面的照片或者通过相机拍摄获取照片,这是两种常用的获取图片的方式,在做项目过程中也会经常遇到,下面来介绍一下这两种获取方式.. 1.从本地相册获取照片...
  • u010069940
  • u010069940
  • 2016年04月15日 11:08
  • 600

Android 使用ContentResolver获取手机图片和照片的相关信息

Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; ContentResolver mContentResolv...
  • baidu_29835301
  • baidu_29835301
  • 2016年11月14日 11:50
  • 864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 获取手机中的图片信息的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)