Android的多媒体文件主要存储在/data/data/com.android.providers.media/databases目录下,该目录下有两个db文件,一个是内部存储数据库文件(internal.db),一个是存储卡数据库(external-XXXX.db)。
媒体文件的操作主要是围绕着这两个数据库来进行。这两个数据库的结构是完全一模一样的。

Android提供了MediaStore类,该类是一个ContentProvider,管理着设备上自带的和外部的多媒体文件,同时包含着每一个多媒体文件的数据信息。

通过Uri我们可以获取到媒体信息的完整路径,类型等信息,同样,我们也可以通过文件路径创建Uri

由文件路径得到URI

    Uri mUri = Uri.parse("content://media/external/images/media");     Uri mImageUri = null;    Cursor cursor = mContext.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null,                    null, MediaStore.Images.Media.DEFAULT_SORT_ORDER);    cursor.moveToFirst();    while (!cursor.isAfterLast()) {        String data = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));        if (picPath.equals(data)) {            int ringtoneID = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));            mImageUri = Uri.withAppendedPath(mUri, ""+ ringtoneID);            break;        }                    cursor.moveToNext();    }


由Uri获取文件路径

    string  myImageUrl = "content://media/external/images/media/***";    Uri uri = Uri.parse(myImageUrl);        String[] proj = { MediaStore.Images.Media.DATA };       Cursor actualimagecursor = mContext.getContentResolver().query(uri,proj,null,null,null);      int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);       actualimagecursor.moveToFirst();           String img_path = actualimagecursor.getString(actual_image_column_index);      File file = new File(img_path);    Uri fileUri = Uri.fromFile(file);


获取本地媒体数据库中的video相关信息

    private void testScanVideoUri(){        Log.w(TAG,"testScanVideoUri come in=="+MediaStore.Video.Media.EXTERNAL_CONTENT_URI);        Cursor cursor = mContext.getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,                         null, null,null, null);        int totalCount =cursor.getCount();        Log.w(TAG,"totalCount = "+totalCount);        cursor.moveToFirst();                for( int i = 0;i < totalCount;i++){            String data = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns.DATA));            String data1 = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));            String type = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE));            int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));            Log.i(TAG,"data="+data);            Log.i(TAG,"data1="+data1);            Log.i(TAG,"title="+title);            Log.i(TAG,"type="+type);            Log.i(TAG,"id="+id);                        cursor.moveToNext();        }        Log.w(TAG,"testScanVideoUri come out");    }

参考:
Android媒体的一些使用总结
http://blog.csdn.net/xingtian713/article/details/6458150

Android媒体的一些使用总结(2)
http://blog.csdn.net/xingtian713/article/details/6525411

Android多媒体学习一:Android中Image的简单实例。
http://blog.csdn.net/chenjie19891104/article/details/6320323

Android开发之旅: Intents和Intent Filters(理论部分)
http://www.cnblogs.com/skynet/archive/2010/07/20/1781644.html

Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习 (比较透彻)
http://www.cnblogs.com/lingyun1120/archive/2012/04/18/2455212.html

Android 4.4从图库选择图片,获取图片路径并裁剪
http://blog.csdn.net/tempersitu/article/details/20557383

更多相关文章

  1. Mac配置Android环境 adb
  2. Android(安卓)studio 真机调试时生成的文件找不到的解决方案
  3. Android网络抓包
  4. Android(安卓)获取通话记录和短信内容
  5. Android之短信发送器
  6. Win7 64位 Android(安卓)SDK下载和更新失败的解决方法
  7. Pycharm安装PyQt5的详细教程
  8. NPM 和webpack 的基础使用
  9. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程

随机推荐

  1. Android(安卓)文件实现断点上传
  2. android 对话框全屏
  3. adt-bundle-windows-x86_32-20140702
  4. Android(安卓)Webview播放HTML5 video的
  5. 使Android原生时间选择器样式为滚轮
  6. Android(安卓)分享功能
  7. android 随笔提示
  8. 2014.04.21 ——— android 魅族SmartBar
  9. 使用Android(安卓)Studio时报错 Manifest
  10. Android(安卓)java.lang.IllegalArgument