Android中获取SD卡下的图片资源.docx

上传人:小飞机 文档编号:3152567 上传时间:2023-03-11 格式:DOCX 页数:5 大小:38.41KB
返回 下载 相关 举报
Android中获取SD卡下的图片资源.docx_第1页
第1页 / 共5页
Android中获取SD卡下的图片资源.docx_第2页
第2页 / 共5页
Android中获取SD卡下的图片资源.docx_第3页
第3页 / 共5页
Android中获取SD卡下的图片资源.docx_第4页
第4页 / 共5页
Android中获取SD卡下的图片资源.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《Android中获取SD卡下的图片资源.docx》由会员分享,可在线阅读,更多相关《Android中获取SD卡下的图片资源.docx(5页珍藏版)》请在三一办公上搜索。

1、Android中获取SD卡下的图片资源当我想做一个相册的时候,我需要的获得SD卡下所有图片的路径path,然后利用Bitmap的方法画到到画布canvas上。 我该如何获得SD卡下的图片路径呢? 其实在没有做好研究的之前我走了好多弯路,并且还是一个错误的弯路。 首先我先获得SD卡下的根目录路径: privateString isSdcard File sdcardDir=null; boolean isSDExist=Environment.getExternalStorageState.equals(Environment.MEDIA_MOUNTED); if(isSDExist) /如果存

2、在SDcard就找到跟目录 sdcardDir=Environment.getExternalStorageDirectory;return sdcardDir.toString; else return null; 找到/sdcard之后,就开始利用File f = file.listFile;的方法获得目录下的所有文件的列表。 public void getpicpath(String sdpath) /打开SD卡目录 File file = new File(sdpath); /获取SD卡目录列表 File files =file.listFiles; for(int z=0;zfile

3、s.length;z+) File f = filesz; if(f.isFile) isfile(f); else notfile(f); 如果是文件的话,就跳入isfile(File file);的方法中,如果是文件夹的话就跳入notfile;方法中。 public void isfile(File file) Log.i(TAG, isfile); String fnm=file.getPath; Log.i(TAG, isfile=+fnm); mapsd=new HashMap; String filename=file.getName; int idx = filename.las

4、tIndexOf(.); if (idx = 0) return; String suffix =filename.substring(idx+1, filename.length); if (suffix.toLowerCase.equals(jpg) | suffix.toLowerCase.equals(jpeg) | suffix.toLowerCase.equals(bmp) | suffix.toLowerCase.equals(png) | suffix.toLowerCase.equals(.gif) ) mapsd.put(imagepath,file.getPath.toS

5、tring); listsd.add(mapsd); 如果是有文件isfile 就配合他文件名的后缀名是否为图片,是的话放进mapsd中,再加到list中。 如果有文件是文件夹的话,就继续用file.listFile打开它的文件夹里面的内容,再用for语句判断它里面的文件是否有文件,如果有就isfile;无,就利用getpicpath打开它。 public void notfile(File file) Log.i(TAG, notfile Yes); Log.i(TAG, notfilepath+file.getPath); File files = file.listFiles; if(f

6、iles =null) return; for(int i = 0;ifiles.length;i+) Log.i(TAG,notfile int=+String.valueOf(files.length); File fis=filesi; if(fis.isFile) isfile(fis); else String SDpath=fis.getPath; File fileSD=new File(SDpath); Log.i(TAG,notfile =+fileSD); File filess=fileSD.listFiles; if(filess =null) return; for(

7、int j=0;jfiless.length;j+) getpicpath(fileSD.toString); 经过上述复杂的转换,终于可以得到了存有sdcared下所有图片的path的list了,可是其中这个list却是好巨大的,因为它连.thumbnails下的目录图片也得到了,其实起初我不知道这个文件是什么东西来的,在SDcare中看不到,后来一翻译就知道是缩略图。再翻阅一下网络,发现缩略图其实可以Cursor查到的,再想,缩略图和原图片应该是有关联的,果然,可以通过Thumbnails.IMAGE_ID,在Media.EXTERNAL_CONTENT_URI,中找到相对应的path,终

8、于大费周章下来只不过是两个简单的方法的就可以获得SD卡下所有图片的path,不过我们获得的缩略图是整个SD卡图片的缩略图,该如何将他们按不同的文件夹分放呢?我还在研究。 先获得缩略图: list = new ArrayListHashMap; cr = getContentResolver; String projection = Thumbnails._ID, Thumbnails.IMAGE_ID, Thumbnails.DATA ; Cursor cursor = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projection, null, nu

9、ll,null); if(cur.moveToFirst) int _id; int image_id; String image_path; int _idColumn = cur.getColumnIndex(Thumbnails._ID); int image_idColumn =cur.getColumnIndex(Thumbnails.IMAGE_ID); int dataColumn = cur.getColumnIndex(Thumbnails.DATA); Log.i(TAG, String.valueOf(image_idColumn) ; do / Get the fiel

10、d values _id = cur.getInt(_idColumn); image_id =cur.getInt(image_idColumn); image_path =cur.getString(dataColumn); / Do something with the values. / Log.i(TAG, _id + image_id:+ image_id + path: / + image_path +-); HashMap hash = new HashMap; hash.put(image_id, image_id +); hash.put(path, image_path)

11、; list.add(hash); while (cur.moveToNext); 上述方法获得含有image_path和id的list 这里的image_path其实是缩略图的路径,要找到原图片的路径要利用image_id和原路径相关联的关系寻找,如下: 我是用SimpleAdapter显示图片的,所以点击的时候会得到一个position的位置int ,再找到image_id; public void onItemClick(AdapterView arg0, Viewarg1, int position, long arg3) cr = getContentResolver; String

12、 image_id = list.get(position).get(image_id); String projection = Media._ID, Media.DATA ; Cursor cursor = cr.query(Media.EXTERNAL_CONTENT_URI, projection, Media._ID += + image_id, null,null); if (cursor !=null) cursor.moveToFirst; Stringpath = cursor.getString(cursor.getColumnIndex(Media.DATA); Log.i(TAG,path); else Toast.makeText(this,Image doesnt exist!, Toast.LENGTH_SHORT) .show;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号