`

android 多媒体部分学习笔记十三----mediaStore 检索视频

阅读更多

/**
* mediaStore检索视频
*
* @time 下午05:15:41
* @author retacn yue
* @Email zhenhuayue@sina.com
*/
public class VideoGalleyActivity extends Activity implements OnClickListener, OnItemClickListener {
private ListView listView;
private Cursor cursor;


/**
* 视频文件信息
*/
class VideoViewInfo {
String filePath;
String mimeType;
String thumbPath;
String title;
}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video_gallery);
findView();
init();
getVideo();
}


/**
* 初始化方法
*/
private void init() {


}


/**
* 实例化控件
*/
private void findView() {
listView = (ListView) this.findViewById(R.id.listView);
listView.setOnItemClickListener(this);
}


@Override
public void onClick(View v) {


}


/**
* mediaStore检索视频
*/


private void getVideo() {
String[] mediaColumns = { MediaStore.Video.Media._ID,//
MediaStore.Video.Media.DATA,//
MediaStore.Video.Media.TITLE,//
MediaStore.Video.Media.MIME_TYPE };
String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,//
MediaStore.Video.Thumbnails.VIDEO_ID //
};


cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
ArrayList<VideoViewInfo> viewInfos = new ArrayList<VideoGalleyActivity.VideoViewInfo>();
if (cursor.moveToFirst()) {
do {
VideoViewInfo info = new VideoViewInfo();
// 获取缩略图
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));
String selection = MediaStore.Video.Thumbnails.VIDEO_ID + "=?";
String[] selectionArgs = new String[] { id + "" };
Cursor thumbCursor = this.managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, thumbColumns, selection, selectionArgs, null);
if (thumbCursor.moveToFirst()) {
info.thumbPath = thumbCursor.getString(thumbCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA));
}
info.filePath = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
info.title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));
info.mimeType = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE));
viewInfos.add(info);
} while (cursor.moveToNext());
}
listView.setAdapter(new VideoGalleryAdapter(VideoGalleyActivity.this, viewInfos));


}


@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (cursor.moveToPosition(position)) {
int fileColum = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
int mimeColum = cursor.getColumnIndex(MediaStore.Video.Media.MIME_TYPE);
String videoFilePath = cursor.getString(fileColum);
String mimeType = cursor.getString(mimeColum);


Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
File file = new File(videoFilePath);
intent.setDataAndType(Uri.fromFile(file), mimeType);
startActivity(intent);


}
}


/*****************************************/
/**
*
*/
class VideoGalleryAdapter extends BaseAdapter {
private List<VideoViewInfo> items;
LayoutInflater inflater;


/**
* 构造器
*/
public VideoGalleryAdapter(Context context, ArrayList<VideoViewInfo> viewInfos) {
this.items = viewInfos;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public int getCount() {
return items.size();
}


@Override
public Object getItem(int position) {
return items.get(position);
}


@Override
public long getItemId(int position) {
return position;
}


@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (null == convertView) {
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
holder.imageView = (ImageView) convertView.findViewById(R.id.img_thumb);
holder.textView = (TextView) convertView.findViewById(R.id.txt_info);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String tmpStr = items.get(position).thumbPath;
if (null != tmpStr) {
holder.imageView.setImageURI(Uri.parse(tmpStr));
}
holder.textView.setText(items.get(position).title);


return convertView;
}


class ViewHolder {
ImageView imageView;
TextView textView;
}


}
}

分享到:
评论

相关推荐

    Android MediaStore检索视频

    在Android开发中,MediaStore是系统提供的一种接口,用于访问设备上的多媒体数据,包括图片、音频和视频。本文将深入探讨如何使用MediaStore检索SD卡上的视频,并展示在ListView中,以及实现点击列表项后播放视频的...

    认识Android多媒体数据库MediaStore.doc

    认识 Android 多媒体数据库 MediaStore MediaStore 是 Android 系统提供的一个多媒体数据库, android 中多媒体信息都可以从这里提取。MediaStore 包括了多媒体数据库的所有信息,包括音频、视频和图像。android 把...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.17.60.0.tar.gz

    《PyPI上的mypy-boto3-mediastore-data库详解》 在Python的世界里,PyPI(Python Package Index)是官方的软件仓库,提供了大量的第三方库,方便开发者下载和安装。今天我们要讨论的是其中的一个名为`mypy-boto3-...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.14.27.0.tar.gz

    《PyPI上的mypy-boto3-mediastore-data库详解》 在Python的世界里,PyPI(Python Package Index)是官方的第三方Python库仓库,它为开发者提供了丰富的资源和便利。今天我们要讨论的是PyPI上的一款名为mypy-boto3-...

    Python库 | mypy-boto3-mediastore-data-1.14.18.0.tar.gz

    在实际应用中,例如在构建视频流服务平台时,开发者可以利用mypy-boto3-mediastore-data库来高效地存储、分发和管理大量的媒体文件。类型注解不仅可以帮助在开发阶段发现潜在的类型错误,还可以作为代码文档,使团队...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.11.8.0.tar.gz

    标题 "PyPI 官网下载 | mypy-boto3-mediastore-data-1.11.8.0.tar.gz" 提供的信息是,这是一个在Python的包索引平台PyPI上发布的软件包,名为 `mypy-boto3-mediastore-data`,版本为1.11.8.0,其格式为tar.gz压缩...

    Python库 | mypy-boto3-mediastore-data-1.18.53.tar.gz

    在实际项目中,`mypy-boto3-mediastore-data`库可以广泛应用于媒体服务提供商、直播平台、视频点播系统等场景,通过AWS MediaStore服务实现大规模、高效率的媒体内容存储和分发。配合其他AWS服务如CloudFront、S3等...

    PyPI 官网下载 | aws-cdk.aws-mediastore-1.45.0.tar.gz

    标题中的"PyPI 官网下载 | aws-cdk.aws-mediastore-1.45.0.tar.gz"表明这是一个从Python Package Index (PyPI) 官方网站上下载的软件包,具体是`aws-cdk.aws-mediastore-1.45.0`的版本。PyPI是Python开发者发布和...

    Python库 | mypy-boto3-mediastore-data-1.14.55.2.tar.gz

    《Python库mypy-boto3-mediastore-data详解》 在Python的开发环境中,库是不可或缺的一部分,它们为开发者提供了丰富的功能,大大简化了编程工作。本文将深入探讨一个特定的Python库——mypy-boto3-mediastore-data...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.14.50.0.tar.gz

    mypy-boto3-mediastore-data库的核心功能在于提供了一组Python接口,这些接口使得开发者能够方便地执行如存储、检索和管理MediaStore中的数据对象等操作。通过使用这个库,开发者可以实现以下功能: 1. **创建和...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.11.10.0.tar.gz

    “boto3-mediastore-data”这部分则表明这个库专注于与AWS的MediaStore服务交互。MediaStore是一个高性能、低延迟的对象存储服务,用于流式媒体和实时数据分发。它特别适合用于在线视频流、直播、游戏流和其他需要...

    android 通过MediaStore 数据库获取本地指定文件夹下的视频文件 可以排序并删除文件

    在Android开发中,MediaStore是一个重要的内容提供者,它允许我们访问设备上的多媒体数据,如图片、音频和视频。本文将深入探讨如何使用MediaStore数据库来获取本地指定文件夹下的视频文件,并进行排序和删除操作。...

    Python库 | mypy-boto3-mediastore-data-1.14.36.0.tar.gz

    而mediastore-data是Boto3中的一个客户端,它用于与Amazon MediaStore交互,这是一个高性能、低延迟的对象存储服务,特别适合流式传输视频和图像等媒体内容。 Amazon MediaStore Data API允许开发者上传、下载、...

    Python库 | mypy-boto3-mediastore-data-1.16.31.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:mypy-boto3-mediastore-data-1.16.31.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.12.5.0.tar.gz

    标题中的“PyPI 官网下载 | mypy-boto3-mediastore-data-1.12.5.0.tar.gz”表明这是一个从Python Package Index(PyPI)上下载的软件包,名为“mypy-boto3-mediastore-data”,版本号为1.12.5.0,其格式是tar.gz,这...

    Python库 | aws-cdk.aws-mediastore-1.39.0.tar.gz

    本文将深入探讨aws-cdk.aws-mediastore-1.39.0这个Python库,它是AWS CDK的一部分,用于与MediaStore服务进行交互。 首先,了解AWS CDK是至关重要的。CDK是一个开源软件开发框架,允许开发人员使用熟悉的编程语言...

    PyPI 官网下载 | mypy-boto3-mediastore-data-1.17.37.0.tar.gz

    `mediastore-data`是boto3中的一个组件,专门用于处理AWS Elemental MediaStore服务,这是一个高性能、低延迟的内容存储服务,适合流媒体和在线视频应用。 标签中提到了"zookeeper",这是一款分布式协调服务,常...

    PyPI 官网下载 | mypy-boto3-mediastore-1.14.57.0.tar.gz

    《PyPI上的mypy-boto3-mediastore-1.14.57.0:Python库解析与应用》 PyPI(Python Package Index)是Python开发者们分享和获取Python软件包的主要平台,其中包含了丰富的开源库和工具。本文将深入探讨在PyPI上发布...

    PyPI 官网下载 | mypy-boto3-mediastore-1.14.41.0.tar.gz

    标题中的“PyPI 官网下载 | mypy-boto3-mediastore-1.14.41.0.tar.gz”表明这是一个从Python Package Index(PyPI)官方源下载的软件包,名为“mypy-boto3-mediastore”。PyPI是Python开发者发布和分享他们编写的...

    PyPI 官网下载 | aws-cdk.aws-mediastore-1.78.0.tar.gz

    **PyPI 官网下载 | aws-cdk.aws-mediastore-1.78.0.tar.gz** 在Python开发中,PyPI(Python Package Index)是官方的第三方Python软件包仓库,开发者可以在这里发布和下载各种Python库。"aws-cdk.aws-mediastore-...

Global site tag (gtag.js) - Google Analytics