最近需要做一个上传手机中的视频到服务器的程序,就涉及到了怎么获取手机中的视频的问题,为了防止我忘记,我就写在这里吧。
首先要获取到手机中的视频,是需要访问sdCard的,所以需要在androidmanifest文件中注册访问sdCard的权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
然后要获取手机中的视频,就需要用到android提供的媒体数据库,所以就和查询数据库一样。
String progress[] = {
MediaStore.Video.Media.DISPLAY_NAME,//视频的名字
MediaStore.Video.Media.SIZE,//大小
MediaStore.Video.Media.DURATION,//长度
MediaStore.Video.Media.DATA,//播放地址
};
Cursor cursor = getContentResolver().query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,progress,null,null,null);
cursor.getCount();
if (cursor.getCount()>0){
while (cursor.moveToNext()){
String name = cursor.getString(0);//得到视频的名字
long size = cursor.getLong(1);//得到视频的大小
long durantion = cursor.getLong(2);//得到视频的长度
String data = cursor.getString(3);//得到视频的uri
ItemDate itemDate = new ItemDate(null,name);
list.add(itemDate);
}
}
else{
Toast.makeText(MainActivity.this,"没有找到视频",Toast.LENGTH_SHORT).show();
}
adapter = new MyAdapter(list, this);
gridView.setAdapter(adapter);
cursor 是数据 库中查询返回的result是差不多的意思,。。。
是返回一个查询的结果。
在query()中有五个参数,分别表示查询的uri也就是相当于需要查询的表名,我们这里用的是android系统提供的多媒体的库,后面是指把i结果放在一个字符串数组中,方便后面查询使用getString方法,后面几个分别是查询条件,和排序方式,在这里都是不需要的。之后在这里最重要的。。
是data了,这个是视频的路径,只有得到它才可以用播放器播放出来。这通过cursor的循环就可以把手机里所有的视频都找出来了,如果是没有sdCard的就只需要把查询的query()的第一个参数MediaStore.Video.Media.EXTERNAL_CONTENT_URI改成MediaStore.Video.Media.INTERNAL_CONTENT_URI就可以查询手机内存中的视频了。