博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中显示sd卡的图片和视频
阅读量:4036 次
发布时间:2019-05-24

本文共 2377 字,大约阅读时间需要 7 分钟。

mageView显示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();
          }

 

转载地址:http://lyjdi.baihongyu.com/

你可能感兴趣的文章
排序算法的C语言实现C代码
查看>>
c语言快排函数调用方法模板
查看>>
c语言实现多行输入输出数据
查看>>
查找算法
查看>>
C语言单链表实现
查看>>
SQL基本命令集合整理
查看>>
QT中json的生成和解析
查看>>
std::function 和 std::bind 的简单例子
查看>>
CFormView简介
查看>>
Visual Studio 2010 与 VC++ 6.0 的操作差异(一)之对话框中添加OnInitDialog()函数
查看>>
VC的MFC里面控件的ID使用ID_XXXXX和IDR_XXXXX的区别
查看>>
VC++ 获取ListControl选中行
查看>>
用VC++实现应用程序窗口的任意分割(2)
查看>>
“class”类型重定义,include(头文件)重复加载 QT /c++
查看>>
MFC框架类、文档类、视图类相互访问的方法
查看>>
<转>文档视图指针互获
查看>>
C++中头文件相互包含的几点问题
查看>>
内存设备描述表
查看>>
Latex插入eps图片的方法
查看>>
Matlab subplot 图像间距调整
查看>>