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. compileDebugJavaWithJavac
  2. BZOJ 1935 园丁的烦恼
  3. STL学习一:标准模板库理论基础
  4. linux系统安装对硬件有什么要求
  5. 从源码看Android中sqlite是怎么通过cursorwindow读DB的
  6. css背景渐变兼容(兼容所有ie)
  7. Qt SQL Programming 部分翻译
  8. Super Jumping! Jumping! Jumping! 基础DP
  9. C# 截取两个指定字符串中间的字符串列表
  10. Apache Traffic Server
  11. ccf题库中2015年12月2号消除类游戏
  12. bootstrap 3.0 LESS源代码浅析(一)
  13. nginx动态配置及服务发现那些事
  14. sql遍历全部数据集
  15. Yahoo Programming Contest 2019
  16. 如此繁荣的移动webapp开发市场:总结当下的一些移动web开发套件
  17. 搭建redis集群的过程中遇到的问题
  18. ps -aux --sort -rss |head 列出进程拿物理内存占用排序 使用ps aux 查看系统进程时,第六列即 RSS列显示的就是进程使用的物理内存。
  19. Chrome 67 以后版本无法离线安装crx插件
  20. avast从隔离区恢复后,仍无法打开被误杀文件的解决方案

热门文章

  1. SC || 那些CheckStyle中的错误们
  2. window.addEventListener介绍说明
  3. Find the Longest Word in a String-freecodecamp算法题目
  4. 洛谷 P2735 电网
  5. 【Kafka】搭建和测试等问题
  6. drf版本控制 django缓存
  7. centos7 安装显卡驱动方法
  8. virtual function c++
  9. LA 3667 Ruler 搜索
  10. 匈牙利算法 - Luogu 1963 变换序列