Android之操作相册

获取手机中的图片的绝对路径并且区分出每个文件夹下的路径:

存放图片绝对路径的文件夹的名字和存放绝对路径的List 实体类如下:

 1 import java.util.ArrayList;
 2 import java.util.List;
 3
 4 public class ImagePath {
 5     private String pakagePath;
 6     private List<String> listPth = new ArrayList<String>();
 7
 8
 9     public String getPakagePath() {
10         return pakagePath;
11     }
12     public void setPakagePath(String pakagePath) {
13         this.pakagePath = pakagePath;
14     }
15     public List<String> getListPth() {
16         return listPth;
17     }
18     public void setListPth(List<String> listPth) {
19         this.listPth = listPth;
20     }
21
22 }

将手机中的图片绝对路径按包名区分开:

 1     private ContentResolver contentResolver;
 2     private Button button;
 3     private Uri uri;
 4     private List<ImagePath> imagePaths;
 5 private List<ImagePath> getImgPath() {
 6         imagePaths = new ArrayList<ImagePath>();
 7         contentResolver = this.getContentResolver();
 8         uri = Media.EXTERNAL_CONTENT_URI;
 9         Cursor cursor = contentResolver.query(uri, null, null, null, null);
10         Set<String> set = new TreeSet<String>();
11         List<String> lsPsth = new ArrayList<String>();
12         while (cursor.moveToNext()) {
13             //获取绝对路径
14             String path = cursor.getString(cursor.getColumnIndex(Media.DATA));
15             //将绝对路径添加到list中
16             lsPsth.add(path);
17             //获取包名
18             String pakageName = cursor.getString(cursor.getColumnIndex(Media.BUCKET_DISPLAY_NAME));
19             //将包名添加到set中
20             set.add(pakageName);
21         }
22         //set转换成数组
23         String[] str =set.toArray(new String[set.size()]);
24         //循环装有包名的数组
25         for (int i = 0; i < str.length; i++) {
26             //创建一个ImagePath对象,用于存储某个包下的所有绝对路径(包含包名)
27             ImagePath imagePath = new ImagePath();
28             //创建一个ImagePath对象,用于存储某个包下的所有绝对路径(不包含包名)
29             List<String> listpath = new ArrayList<String>();
30             //将str数组中的第一个包名存入到imagePath对象中
31             imagePath.setPakagePath(str[i]);
32             //循环lsPsth中的所有绝对路径
33             for (int k = 0; k < lsPsth.size(); k++) {
34                 //判断lsPathget(k)当前这条绝对路径是否是str[i]包名下的绝对路径
35                 if(getPakageNameByPath(lsPsth.get(k)).equals(str[i])){
36                     //如果是存入listpath中
37                     listpath.add(lsPsth.get(k));
38                 }
39             }
40             //将区分出来的对局路径存入到对用的包名的imagePath对象中
41             imagePath.setListPth(listpath);
42             //将该对象存入imagePaths集合中
43             imagePaths.add(imagePath);
44         }
45         return imagePaths;
46     }
 1     /**
 2      * 根据据对路径获取该路径的包名
 3      * @param path
 4      * @return
 5      */
 6     public String getPakageNameByPath(String path){
 7         String pkgName = null;
 8         if(path.length()>0){
 9             String[] str = path.split("/");
10             pkgName = str[str.length-2];
11         }
12         return pkgName;
13     }
14     

未完....

时间: 2024-12-11 00:13:04

Android之操作相册的相关文章

Android调用系统相册和相机选择图片并显示在imageview中

Android调用系统相册和相机选择图片并显示在imageview中,在系统调用相机拍摄中,直接返回的是经过压缩处理后的图像,当你直接把返还后的图片放在imageview中时 图片就会非常的模糊,所以要经过先存放在sd中,然后在处理并显示.当调用系统相册时,因为Android系统从4.4版本以后系统不再返回真实的uri路径,而是封装过后的uri路径,所以当你写代码时必须注意,4.4是一个分水岭,4.4以上的版本必须就通过解析和相应的处理才能获取到真实的uri路径. 先上程序运行的结果. 这个是调

Android拍照、相册选取、裁剪图片

来自:http://blog.csdn.net/ryantang03/article/details/8656278 package com.example.listactivity; import java.io.ByteArrayOutputStream; import java.io.File; import com.example.model.ImageTools; import android.app.Activity; import android.app.AlertDialog;

如何将Android数据库操作通用化(三)

概述 悠悠绿水傍林侵日落观山四望回 幽林古寺孤明月冷井寒泉碧映台 鸥飞满浦渔舟泛鹤伴闲亭仙客来 游径踏花烟上走流溪远棹一篷开 概述 一个不小心都写了三篇了,也不知道大家还看得懂不?如果看不懂最好给我留个言,我好下一次改正. 接着上次的说,准备工作都已经做好了,现在咱们就要开始着手解决阻挡Android数据库操作通用化的五个问题了. 我们先回顾一下问题: 问题1:表名的获取 问题2:如何将实体中的数据,按照对应关系导入到数据库中 问题3:明确实体中主键是谁?获取到主键中封装的值 问题4:如何将数据

Android应用层操作GPIO

Android应用层操作GPIO的方法: http://my.oschina.net/u/1176566/blog/177554 在使用某个GPIO之前首先的保证此GPIO没有正在被使用,否则是无法操作的: 如NAND模块的NCE3/PC18,此io口正被使用,在导入echo 74 > /sys/class/gpio/export时没问题,但是设置方向是无权操作,如图: 下面是我写的DEMO,单独操作GPIO和控制LED操作的代码.之前想用C部分来操作,然后通过JNI把方法暴露给上层,但是貌似C

Android手势操作使用Fling,Scroll等Gesture

Android手势操作  一盏灯, 一片昏黄: 一简书, 一杯淡茶. 守着那一份淡定, 品读属于自己的寂寞. 保持淡定, 才能欣赏到最美丽的风景! 保持淡定, 人生从此不再寂寞. 前言利用手势操作在现在的APP中越来越普及,大多数时候使用Fling,Scroll等Gesture能大幅度提高用户的操作体验,特别是大屏手机返回键程越来越大的现状下.  在Android系统下,手势识别是通过Gestur... douban.com/doulist/38811866/douban.com/doulist

Android开发操作案例分享!

Android LRecyclerView 操作案例分享-实现下拉刷新.滑动到底部自动加载,一直想抽空写下这个开源项目www.itxdl.cn,但是各种原因没有抽时间,今天还是趁着工作间隙写下了这篇博客,与大家分享. 简介 LRecyclerView是支持addHeaderView. addFooterView.下拉刷新.分页加载数据的RecyclerView. 它对 RecyclerView 控件进行了拓展,给RecyclerView增加HeaderView.FooterView,并且不需要对

Android 获取系统相册中的所有图片

Android 提供了API可获取到系统相册中的一些信息,主要还是通过ContentProvider 来获取想要的内容. 代码很简单,只要熟悉ContentProvider 就可以了. public static List<String> getSystemPhotoList(Context context) { List<String> result = new ArrayList<String>(); Uri uri = MediaStore.Images.Medi

Android数据库操作_表格显示

Android数据库操作_表格显示 显示表格布局 完成后效果如下: 首先需要一个主布局文件main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation=&quo

android——拍照,相册图片剪切其实就这么简单

接触android这么久了.还没有真正的浩浩看看android拍照,相册图片剪切到底是怎么回事,每次都是从别人的代码一扣,就过来了.其实,谷歌提供的API已经很强大.只需要用的好,就那么几句就可以搞定神秘的拍照和剪切图片.废话不多少,直接看源码 package com.example.testcamera; import java.io.FileNotFoundException; import android.app.Activity; import android.content.Inten