热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android搜索视媒体库视频列表显示选择

开博客为自己的工作做一个记录MainActivity.classpublicclassMainActivityextendsActivity{publicstaticList<V

开博客为自己的工作做一个记录

MainActivity .class

public class MainActivity extends Activity {

public static List data = null;// 视频信息集合
Cursor cursor;
Button Button1;
String path;
ImageView image;
TextView namet;
protected ImageLoader imageLoader;
DisplayImageOptions options;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("hao", "1");
Button1 = (Button) findViewById(R.id.Button1);
image = (ImageView) findViewById(R.id.image);
namet = (TextView) findViewById(R.id.name);
data = new ArrayList();
imageLoader = ImageLoader.getInstance();


optiOns= new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)// 设置下载的图片是否缓存在内存中
.cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
.resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(100))// 是否设置为圆角,弧度为多少
.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
.build();// 构建完成
Button1.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Intent in = new Intent(MainActivity.this, UpVideo.class);
startActivityForResult(in, 1);


}
});

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);


switch (requestCode) {
case 1:
if (resultCode == RESULT_OK) {
String url = "file://" + data.getStringExtra("ThumbPath");
String name = data.getStringExtra("name");
path = data.getStringExtra("path");
namet.setText(name + "\n地址:\n" + path);
imageLoader.displayImage(url, image, options);
}
}


}



UpVideo .class

public class UpVideo extends Activity {
public static List data = null;// 视频信息集合
GridHolder holder;
Cursor cursor;
GridView GridView1;
MyGridAdapter adapter;
protected ImageLoader imageLoader;
DisplayImageOptions options;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.up_video);
GridView1 = (GridView) findViewById(R.id.GridView1);
data = new ArrayList();
adapter = new MyGridAdapter(UpVideo.this);


imageLoader = ImageLoader.getInstance();


optiOns= new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.ic_launcher) // 设置图片在下载期间显示的图片
.showImageForEmptyUri(R.drawable.ic_launcher)// 设置图片Uri为空或是错误的时候显示的图片
.showImageOnFail(R.drawable.ic_launcher) // 设置图片加载/解码过程中错误时候显示的图片
.cacheInMemory(true)// 设置下载的图片是否缓存在内存中
.cacheOnDisk(true)// 设置下载的图片是否缓存在SD卡中
.imageScaleType(ImageScaleType.EXACTLY_STRETCHED)// 设置图片以如何的编码方式显示
.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型//
.resetViewBeforeLoading(true)// 设置图片在下载前是否重置,复位
.displayer(new RoundedBitmapDisplayer(100))// 是否设置为圆角,弧度为多少
.displayer(new FadeInBitmapDisplayer(100))// 是否图片加载好后渐入的动画时间
.build();// 构建完成


// 检测SD卡是否存在
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
setVideoList();
} else {
Toast.makeText(this, "没有SD卡", Toast.LENGTH_LONG).show();
}


GridView1.setOnItemClickListener(new OnItemClickListener() {


@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
int s = Integer.parseInt(data.get(arg2).getSize());
if (s > 10) {
Toast.makeText(UpVideo.this, "这个文件过大不能超过10mb", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(UpVideo.this, data.get(arg2).getTitle() + "就这个", Toast.LENGTH_LONG).show();
Intent in=new Intent();
in.putExtra("name",data.get(arg2).getTitle());
in.putExtra("path",data.get(arg2).getPath());
in.putExtra("ThumbPath",data.get(arg2).getThumbPath());
setResult(RESULT_OK,in);
finish();
}


}
});


}


private void setVideoList() {
/**
*  MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径
*/
String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA, MediaStore.Video.Thumbnails.VIDEO_ID };
/**
* MediaStore.Video.Media.DATA:视频文件路径;
* MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4
* MediaStore.Video.Media.TITLE: 视频标题 : testVideo
*/


String[] mediaColumns = { MediaStore.Video.Media._ID, MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE, MediaStore.Video.Media.MIME_TYPE, MediaStore.Video.Media.DISPLAY_NAME };
cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, mediaColumns, null, null, null);
if (cursor == null) {
Toast.makeText(UpVideo.this, "没有找到可播放视频文件", 5000).show();
return;
} else


if (cursor.moveToFirst()) {
do {
VideoInfo info = new VideoInfo();
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Video.Media._ID));
Cursor thumbCursor = managedQuery(MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI, thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID + "=" + id, null, null);
if (thumbCursor.moveToFirst()) {
info.setThumbPath(thumbCursor.getString(thumbCursor.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
}
info.setPath(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));
info.setTitle(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));
info.setDisplayName(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));


File dF = new File(info.getPath());
FileInputStream fis;
int fileLen = 0;
try {
fis = new FileInputStream(dF);
fileLen = fis.available(); // 这就是文件大小
int d = fileLen / 1024 / 1024;
info.setSize(d + "");
Log.i("hao", fileLen + "大小" + d + "MB");


} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


info.setMimeType(cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));


data.add(info);
} while (cursor.moveToNext());


GridView1.setAdapter(adapter);


} else {
System.out.println(data.size() + "");
if (data.size() == 0) {
Toast.makeText(UpVideo.this, "没有找到可播放视频文件", 5000).show();
}
}


}


private static class GridHolder {
ImageView image;
TextView size, name;


}


public class MyGridAdapter extends BaseAdapter {


private Context context;


private LayoutInflater mInflater;


public MyGridAdapter(Context context) {
super();
this.mInflater = LayoutInflater.from(context);
}


public int getCount() {
return data.size();
}


@Override
public Object getItem(int index) {


return data.get(index);
}


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


@Override
public View getView(int index, View convertView, ViewGroup parent) {
holder = null;
if (cOnvertView== null) {
holder = new GridHolder();
cOnvertView= mInflater.inflate(R.layout.video_item, null);
holder.image = (ImageView) convertView.findViewById(R.id.image);
holder.size = (TextView) convertView.findViewById(R.id.size);
holder.name = (TextView) convertView.findViewById(R.id.name);


convertView.setTag(holder);


} else {
holder = (GridHolder) convertView.getTag();
}
holder.name.setText(data.get(index).getTitle());
holder.size.setText(data.get(index).getSize() + "MB");


String imageUri = "file://" + data.get(index).getThumbPath();
System.out.println("w" + imageUri);
imageLoader.displayImage(imageUri, holder.image, options);


// BitmapDrawable bd = new
// BitmapDrawable(getVideoThumbnail(data.get(index).getPath(), 150,
// 150, Thumbnails.MINI_KIND));
// holder.image.setBackgroundDrawable(bd);
return convertView;
}


}


private Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind) {
Bitmap bitmap = null;
// 获取视频的缩略图
bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
System.out.println("w" + bitmap.getWidth());
System.out.println("h" + bitmap.getHeight());
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}


}


}



VideoInfo .class

public class VideoInfo {


String ThumbPath,Path,Title,MimeType,DisplayName,Size;


public String getSize() {
return Size;
}


public void setSize(String size) {
Size = size;
}


public String getThumbPath() {
return ThumbPath;
}


public void setThumbPath(String thumbPath) {
ThumbPath = thumbPath;
}


public String getPath() {
return Path;
}


public void setPath(String path) {
Path = path;
}


public String getTitle() {
return Title;
}


public void setTitle(String title) {
Title = title;
}


public String getMimeType() {
return MimeType;
}


public void setMimeType(String mimeType) {
MimeType = mimeType;
}


public String getDisplayName() {
return DisplayName;
}


public void setDisplayName(String displayName) {
DisplayName = displayName;
}

}

代码比较简单 


推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • switch语句的一些用法及注意事项
    本文介绍了使用switch语句时的一些用法和注意事项,包括如何实现"fall through"、default语句的作用、在case语句中定义变量时可能出现的问题以及解决方法。同时也提到了C#严格控制switch分支不允许贯穿的规定。通过本文的介绍,读者可以更好地理解和使用switch语句。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
author-avatar
工程技术公司团委
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有