Android 扫描SD卡中的所有视频文件
2017-02-08 22:14
381 查看
Android应该是已经把所有的视频文件音频都在开机时,扫描完毕然后存在本地SQLite数据库了,因此,我们“扫描”的最简单方法是读取这个已经存储好的数据库。但是这样做,在程序开启过程中,用户添加或删除了音频视频文件,此时需要重新mount相关设备,才能保证程序的正确性。
另外一种方法是判断文件后缀,不如以上方法来的简单。
下面简单介绍如何使用第一种方法读取SD卡中的所有视频文件
布局文件:自动生成的即可,文件的相关信息打印在log中
需要加上读取SD卡的权限
mainactivity:
以上代码是核心,如果把MediaStore.Video.Media.DEFAULT_SORT_ORDER改成MediaStore.Audio.Media.DEFAULT_SORT_ORDER,那么读取的就是所有音频文件了。
同时以上代码有诸多注释的地方,注释的地方,其实是文件信息存储在SQLite中的对应列名
Cursor c = this.getContentResolver().query(uri, projection, null,
null,
null);
使用以上的查询语句,则可以查询想要的列。
第一种查询相当于:
select * from tablexx
而第二种查询则是
select name,age, from tablexx
结合前一篇博客,现在就可以写出完整的播放sd卡视频的程序了。
博文中的代码:
http://download.csdn.net/detail/u011109881/9750273
注:上传的资源中scan的代码少了读取SD卡的权限
另外一种方法是判断文件后缀,不如以上方法来的简单。
下面简单介绍如何使用第一种方法读取SD卡中的所有视频文件
布局文件:自动生成的即可,文件的相关信息打印在log中
需要加上读取SD卡的权限
mainactivity:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.e("chj", "onCreate"); // MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径 // MediaStore.Video.Media.DATA:视频文件路径; // MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4 // MediaStore.Video.Media.TITLE: 视频标题 : testVideo // MediaStore.Video.Media.DATE_ADDED // MediaStore.Video.Media.DATE_MODIFIED // MediaStore.Video.Media.HEIGHT // MediaStore.Video.Media.MIME_TYPE // MediaStore.Video.Media.SIZE // MediaStore.Video.VideoColumns.ALBUM // MediaStore.Video.VideoColumns.ARTIST // MediaStore.Video.VideoColumns.BOOKMARK // MediaStore.Video.VideoColumns.BUCKET_DISPLAY_NAME // MediaStore.Video.VideoColumns.BUCKET_ID // MediaStore.Video.VideoColumns.CATEGORY // MediaStore.Video.VideoColumns.DATE_TAKEN // MediaStore.Video.VideoColumns.DESCRIPTION // MediaStore.Video.VideoColumns.DURATION // MediaStore.Video.VideoColumns.LANGUAGE // String[] projection = { MediaStore.Video.VideoColumns.DATA, // MediaStore.Video.Media.DISPLAY_NAME, // MediaStore.Video.Media.TITLE, // MediaStore.Video.Media.DATE_ADDED, MediaStore.Video.Media.SIZE, // MediaStore.Video.VideoColumns.ALBUM, // MediaStore.Video.VideoColumns.ARTIST, // MediaStore.Video.VideoColumns.BOOKMARK, // MediaStore.Video.VideoColumns.DURATION, }; Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; // Cursor c = this.getContentResolver().query(uri, projection, null, // null, // null); Cursor c = this.getContentResolver().query(uri, null, null, null, MediaStore.Video.Media.DEFAULT_SORT_ORDER); int vidsCount = 0; if (c != null) { vidsCount = c.getCount(); while (c.moveToNext()) { String[] s = c.getColumnNames(); for (int i = 0; i < s.length; i++) { Log.e("chj", " " + s[i] + " =====" + c.getString(i)); } Log.e("VIDEO", c.getString(0)); } c.close(); } } }
Cursor c = this.getContentResolver().query(uri, null, null, null, MediaStore.Video.Media.DEFAULT_SORT_ORDER);
以上代码是核心,如果把MediaStore.Video.Media.DEFAULT_SORT_ORDER改成MediaStore.Audio.Media.DEFAULT_SORT_ORDER,那么读取的就是所有音频文件了。
同时以上代码有诸多注释的地方,注释的地方,其实是文件信息存储在SQLite中的对应列名
Cursor c = this.getContentResolver().query(uri, projection, null,
null,
null);
使用以上的查询语句,则可以查询想要的列。
第一种查询相当于:
select * from tablexx
而第二种查询则是
select name,age, from tablexx
结合前一篇博客,现在就可以写出完整的播放sd卡视频的程序了。
博文中的代码:
http://download.csdn.net/detail/u011109881/9750273
注:上传的资源中scan的代码少了读取SD卡的权限
相关文章推荐
- android 扫描手机内存和SD卡,获取手机的视频、音频文件。把获取不到的文件扫描出来
- 如何扫描出android手机中所有的视频文件
- 如何扫描出android手机中所有的视频文件
- 如何扫描出android手机中所有的视频文件
- Android开发——SD卡_扫描SD卡中视频、音频文件
- Android 扫描SD卡内所有MP3(音频)文件
- 我的Android进阶之旅------>Android使用正则表达式匹配扫描指定目录下的所有媒体文件(音乐、图像、视频文件)
- Android系统如何扫描手机SD卡中的视频文件
- android ProgressBar实现扫描SD卡文件 + SimpleAdapter绑定ListView
- Android中,SD卡上的媒体文件(图片、视频)的改变与通知
- Android下异步扫描视频文件缩略图
- Android下阻止系统扫描SD卡上的媒体图像文件
- Android获取SD卡上图片和视频文件及其缩略图
- android扫描sdcard中的音频、视频、图片等文件的方法
- Android中,SD卡上的媒体文件(图片、视频)的改变与通知
- Android扫描SD卡中的文件
- Android_遍历SD卡所有文件
- android 扫描SD卡与系统文件
- android 扫描SD卡与系统文件(转)
- [转]---Android获取SD卡视频音频文件