读书人

传媒信息查询

发布时间: 2013-11-08 17:52:14 作者: rapoo

媒体信息查询
今天写了一个查询图片信息的方法,才知道android中的所有媒体信息都被android保存到数据库里了。
android系统每次加载SDCARD的时候都会扫描SDCARD把sdcard中的多媒体,文件信息等等信息保存在数据库中。
我们先看一下数据库文件保存的目录 /data/data/com.android.providers.media/databases,在这个目录里有一个数据库文件
打开数据库,就可以看到android按着不同的数据类型给我们分成了不同的表,有image、video、auto_meta等等。
android为我们提供了很好的方法查询数据库:

private Map<String, String> resolutionCursor(Cursor cursor){Map<String, String> map =new HashMap<String, String>();//cursor.moveToPosition(23);//this.string=cursor.getColumnNames();//for(int i=0;i<string.length;i++){//System.out.println(string[i]);////System.out.println(cursor.getColumnIndex(string[i]));//System.out.println(""+cursor.getString(cursor.getColumnIndex(string[i])));//}////System.out.println(""+cursor.getString(cursor.getColumnIndex("_data"))+"\n"+ cursor.getString(cursor.getColumnIndex("_size"))//+"\n"+cursor.getString(cursor.getColumnIndex("_display_name"))+"\n"+cursor.getString(cursor.getColumnIndex("mime_type"))//+"\n"+cursor.getString(cursor.getColumnIndex("title"))+"\n"+cursor.getString(cursor.getColumnIndex("bucket_display_name"))); //具体的文件地址/sdcard/tencent/MobileQQ/head/511079108.pngmap.put(ConstantFactory.ImageAbout.DATA, cursor.getString(cursor.getColumnIndex("_data")));//文件大小map.put(ConstantFactory.ImageAbout.SIZE, cursor.getString(cursor.getColumnIndex("_size")));//文件名称(包含扩展名)map.put(ConstantFactory.ImageAbout.DISPLAY_NAME, cursor.getString(cursor.getColumnIndex("_display_name")));//文件类型map.put(ConstantFactory.ImageAbout.MIME_TYPE, cursor.getString(cursor.getColumnIndex("mime_type")));//文件标题(文件名没有标题)map.put(ConstantFactory.ImageAbout.TITLE, cursor.getString(cursor.getColumnIndex("title")));//父文件夹名map.put(ConstantFactory.ImageAbout.BUCKET_DISPLAY, cursor.getString(cursor.getColumnIndex("bucket_display_name")));return map;}



1、SD卡中的所有缩略图可以通过MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI来得到

2、MediaStore.Images.Media.EXTERNAL_CONTENT_URI来得到原始图片

读书人网 >移动开发

热点推荐