MediaStore是android提供的一个多媒体数据库,在系统重新启动的时候,会主动的去扫描全盘,将所有的音视频,图片文件的信息存储到这个数据库中。android对多有多媒体数据库接口进行了封装,我们可以通过ConentResolver去调用封装好的接口来进行数据库操作。

案例一:

获取“/storage/emulated/0/DCIM/Camera/”下“Vc”开头的文件下的所有视频的修改时间,路径,时长等信息。

private static final String[] VIDEO_PROJECT = { MediaStore.Video.Media._ID, MediaStore.Video.Media.DATE_MODIFIED, MediaStore.Video.Media.DURATION, MediaStore.Video.Media.DATA,MediaStore.Video.Media.DATE_TAKEN };String selection = MediaStore.Video.Media.DATA+" like ?";Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, VIDEO_PROJECT, selection, new String[]{"/storage/emulated/0/DCIM/Camera/Vc"+"%"}, MediaColumns.DATE_MODIFIED + " DESC");if (cursor != null) {int idindex = cursor.getColumnIndex(BaseColumns._ID);int modifiedindex = cursor.getColumnIndex(MediaStore.Video.Media.DATE_MODIFIED);int durationindex = cursor.getColumnIndex(MediaStore.Video.Media.DURATION);int dataindex = cursor.getColumnIndex(MediaStore.Video.Media.DATA);int takenindex = cursor.getColumnIndex(MediaStore.Video.Media.DATE_TAKEN);while (cursor.moveToNext()) {VideoInfo info = new VideoInfo();info.setId(cursor.getInt(idindex));info.setPath(cursor.getString(dataindex));info.setDateModified(cursor.getLong(modifiedindex));info.setDateTaken(cursor.getLong(takenindex));info.setDuration(cursor.getInt(durationindex));mVideoInfos.add(info);Log.d("videoinfo", info.toString());}



ConentResolver中query字段解析:

query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)

Uri uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI     视频所对应的content://

String[] projection:

private static final String[] VIDEO_PROJECT = { MediaStore.Video.Media._ID, MediaStore.Video.Media.DATE_MODIFIED, MediaStore.Video.Media.DURATION, MediaStore.Video.Media.DATA,MediaStore.Video.Media.DATE_TAKEN };

需要查询的字段,不填则查询出所有字段

String selection:

查询条件:参数以?代替,在String[] selectionArgs数组中给出;null则查询所有的

String[] selectionArgs:

查询条件对应的参数;没有则传null


更多相关文章

  1. Android之SQLite数据库操作
  2. android studio + ndk + cmake + jna +sqlite c层报错SQLITE_CAN
  3. 【Android】第三方QQ账号登录的实现
  4. 图片缓存库之深度剖析
  5. Android(安卓)中的那些策略模式
  6. Android中ContentProvider和ContentResolver使用入门
  7. Android(安卓)ArrayList LinkedList Set HashMap的介绍.
  8. 详解Android接口Interface的使用和意义
  9. Android(安卓)ndk开发swig编译jni接口配置文件(二)

随机推荐

  1. Android高手进阶教程(一)-------Android
  2. Android物理按键功能更改
  3. Android 单线程模型详解及实例
  4. 当我凑齐了一整套苹果设备时,我获得了什么
  5. Android中使用Thread+Handler实现非UI线
  6. Android 七彩手电筒的实现与应用
  7. Android高手进阶教程(十五)之---通过Loca
  8. 【Android的从零单排开发日记】之入门篇(
  9. android 通讯录的相关操作
  10. Android输入法遮盖输入框(屏幕底部输入框