Android中显示sd卡的图片和视频
ImageView显示sd卡的图片很简单,只要知道了图片的Path,就可以引用图片的地址,用ImageView来显示
path = Environment.getExternalStorageDirectory() ; //获得SDCard目录
Bitmap bmp;
ImageView iv = (ImageView) contentView.findViewById(R.id.x);
if(bmp==null)
bmp = BitmapFactory.decodeFile(path+"xx.jpg",null);
iv.setImageBitmap(bmp);
注意:"xx.jpg",是你图片的name
1.判断SD卡是否存在:
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)){
//SD卡存在
}else{
//SD卡不存在
}
2.获取SD卡根目录的两种方式:
(1)SD卡根目录的路径一般为"/mnt/sdcard"。
File file = new File("/mnt/sdcard");
(2)另外一种获取SD卡根目录的方式相对灵活。
File file = Environment.getExternalStorageDirectory();
3.进入SD卡中指定的文件夹:
比如:Recorder文件夹。
File file = new File("/mnt/sdcard/Recorder");
4.将指定类型文件添加到集合:
以图片文件为例:
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++){
//文件类对象,类中保存文件的信息,如路径,bitmap,文件类型
MediaInfo mediaInfo = new MediaInfo();
//将文件对象添加到集合中
list.add(mediaInfo);
filePath = files.getPath().toString();
if (filePath.endsWith(".png") ||filePath.endsWith(".jpg") ){
//将图片路径添加到集合中,方便获取
liist.get(i).setmPath(filePath);
}
}
4.判断是文件或是文件夹:
if (files.isFile()){
//是文件
}else{
//是文件夹
}
5.获取图片文件的bitmap:
if (filePath.contains(".jpg") || filePath.contains(".png")) {
//将图片压缩,避免内存溢出的两种方式
(1)BitmapFactory.Options options = new BitmapFactory.Options();
//压缩图片
options.inSampleSize = 5;
mBitmap = BitmapFactory.decodeFile(path, options);
(2)if (mBitmap != null) {
mBitmap = BitmapFactory.decodeFile(path);
// 将原来的位图缩小
mSmallBitmap = Bitmap.createScaledBitmap(mBitmap, 200, 180, true);
mBitmap.recycle();// 释放内存
if (mSmallBitmap != null) {
// 可在此将图片文件的视图添加于界面中
publishProgress(new MediaInfo(mSmallBitmap));
}
list.get(i).setmBitmap(mSmallBitmap);
}
6.获取视频文件缩略图:
if (filePath.contains(".jpg") || filePath.contains(".png")) {
//参数为视频文件的路径,以及缩略图的宽度和高度
Bitmap tumb = getVideoTumb(filePath, 200, 180);
}
Bitmap getVideoTumb(String path, int width, int height) {
// Thumbnails.MINI_KIND取出的图标较小.
Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(path, Thumbnails.MINI_KIND);
if (bitmap == null) {
return bitmap;
}
Bitmap bitmapTumb = ThumbnailUtils.extractThumbnail(bitmap, width, height);
bitmap.recycle();
return bitmapTumb;
}
7.获取视频文件时长:
// 传入的参数为视频文件路径
void getMediaDuration(String path) {
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setDataSource(path);
mMediaPlayer.prepare();
//获得视频时长的毫秒数duration
int duration = mMediaPlayer.getDuration();
}