- 浏览: 433529 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
带文件浏览的视频播放器
普通的视频播放器没什么特别的 所以今天加料 其带有文件浏览功能 即 windowXP 播放器带有的浏览功能 然后选择要播放的文件 再返回播放器中播放目标
windowsXP 行为 参考如下截图:
[功能]
1. 文件浏览器
2. 视频播放器
[代码 步骤]
1. 构建界面
写道
1 VideoView 用于视频播放
2 Button 一个用于播放控制(暂停/继续) 另一个用于文件浏览
1 TextView 用于显示指定目标文件和目录
2 Button 一个用于播放控制(暂停/继续) 另一个用于文件浏览
1 TextView 用于显示指定目标文件和目录
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <VideoView android:id="@+id/video" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <Button android:id="@+id/cmd" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="播放" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="浏览" /> </LinearLayout> </LinearLayout>
2. VideoView 的一些方法
//1. 定义 VideoView vp; //2.初始化 vp = (VideoView) findViewById(R.id.video); //3. 暂停 vp.pause(); //4. 继续播放 vp.start(); //5. 判断是否正在播放 vp.isPlaying()
3. 让一个Button 既有播放功能 又又暂停功能
findViewById(R.id.cmd).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub if(vp.isPlaying()){ vp.pause(); cmd.setText("播放"); } else { vp.start(); cmd.setText("暂停"); } } });
4. 按下"Browse" Button 去浏览文件 并返回目标的文件与目录 且传入要检索文件的类型 本例为:*.3gp 并标记其为:FILE_QUERY_ACTIVITY 便于返回供确定所用
public void sendGo(){ Intent i = new Intent(this, FileQuery.class); Bundle b = new Bundle(); b.putString("format", ".3gp"); i.putExtras(b); startActivityForResult(i,FILE_QUERY_ACTIVITY); } findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub //vp.pause(); sendGo(); } });
5. 在onActivityResult()捕捉返回的目标 然后播放之
public void playVideo(String s){ Uri u = Uri.parse(s); vp.setVideoURI(u); vp.start(); cmd.setText("暂停"); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ switch (resultCode){ case FILE_QUERY_ACTIVITY: Bundle b = data.getExtras(); String string = b.getString(FILE_QUERY); playVideo(string); } }
以上是与播放有关的功能 下面说文件浏览有关的功能
1. 定义布局: file.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="bottom" > <Button android:id="@+id/previous" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="后退 " android:gravity="right" /> <TextView android:id="@+id/path" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" /> </LinearLayout> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
2. 定义变量fileType 用于保存VideoView 传来的文件类型 并定义2个String 用于存放目标目录及其上级目录
//定义 String fileType = ""; //匹配检测 public void getType(Intent i){ Bundle b = i.getExtras(); fileType = b.getString("format");; } //调用 刚进入文件浏览时调用 getType(this.getIntent());
//存放目标目录 String target=""; //存放目标目录的上级目录 String parent="";
3. 列出目标目录下的所有文件/目录
//检测目标是否应该列出 条件: 1. 子目录 2. 文件 且 类型匹配 public boolean isType(String s){ if(s.contains(fileType)){ return true; } else { return false; } } public List<Map<String,String>> list(String s){ List<Map<String,String>> result = new ArrayList<Map<String, String>>(); File file = new File(s); File[] list= file.listFiles(); for( File f : list ){ if(isType(f.getName())||f.isDirectory()){ Map<String,String> map =new HashMap<String, String>(); map.put(FILE_NAME, f.getName().toString()); if(f.isFile()){ map.put(FILE_TYPE, FILE_TYPE_FILE); } else if(f.isDirectory()){ map.put(FILE_TYPE, FILE_TYPE_DIRECTORY); } result.add(map); } } path.setText(target); return result; }
4. 得到目标目录的子目录 当该子目录也是目录时 列出该子目录下的所有文件/目录 当该子目录为文件时 表示找到了目标 返回之 如何注册:点击ListView中的具体item 就像windowXP 的一样
list.setOnItemClickListener(new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub String s = value.get((int)arg3).get("name"); value = getNextList(s); adapter.notifyDataSetChanged(); } }); public List<Map<String,String>> getNextList(String s){ String string = updateNext(s); if(isFile(string)){ replyQuery(string); string = updatePrevious(); } return list(string); } public String updateNext(String s){ parent = target; target += "/" + s; return target; }
5. 返回目标目录的上级目录 并显示其所有文件/目录 如何注册: Button id=R.id.previous
previous.setOnClickListener(new OnClickListener(){ public void onClick(View v) { // TODO Auto-generated method stub value = getPreviousList(); adapter.notifyDataSetChanged(); } }); public List<Map<String,String>> getPreviousList(){ String string = updatePrevious(); return list(string); } public String updatePrevious(){ target = parent; File file = new File(parent); parent = file.getParent(); return target; }
6. emulator 的运行截图:
* 整体布局:
* 文件选择:
* 播放界面
评论
2 楼
peter_ims
2010-10-18
谢谢啦。发个贴真不容易,还要测试。
1 楼
mj4678
2010-09-09
请问有源码么,发一份学习下我自己写的播放只有声音没有画面dir4678@tom.com
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2608Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5923ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3169MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19013CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3138获取Launcher 启动列表 即 列出所有Launc ... -
PreferenceActivity 全接触
2010-06-19 12:53 9439PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5955Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14443SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1451Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2222流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3224NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1220自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3158模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2470TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3983View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1837Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1734*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1522我们知道Android 默认是不支持*.gif 的 但是 ...
相关推荐
该播放器具备基本的播放功能,如快进播放,允许用户快速浏览视频内容,这对于学习和查找关键信息非常有用。同时,它还支持通过滑动操作调整音量大小,提供了一种直观且便捷的音量控制方式,使用户在观看过程中可以...
QT音视频播放器是一款基于Qt框架开发的多媒体播放软件,其设计目的是为了提供一个轻量级、用户友好的界面来播放各种音频和视频文件。Qt是一个跨平台的应用程序开发框架,支持Windows、Linux、macOS等多种操作系统,...
标题中的“带列表的flash视频播放器带源码”指的是一个包含Flash视频播放功能的程序,这个程序不仅具有播放视频的能力,还支持视频列表,意味着用户可以浏览并选择多个视频进行播放。源码的提供意味着我们可以看到其...
在IT领域,开发一个视频播放器是常见的编程实践,尤其对于初学者来说,这是一个很好的学习项目。本项目名为"C#简单视频播放器",显然它是一个利用C#编程语言实现的轻量级视频播放应用程序。C#是微软公司推出的面向...
安卓视频播放器是一款可以播放数字视频数据的媒体播放器,支持从光盘等媒介播放,以及播放如MPEG、AVI、RealVideo和QuickTime等格式的文件。 该在线视频播放器是一个安卓应用,允许你从互联网上流式播放视频。你...
至于压缩包内的"视频播放器样式Flash焦点图"文件,很可能是包含源代码、资源文件(如图片、音频或视频)以及相关的文档说明。这些文件可以供开发者参考和学习,理解如何将Flash和JavaScript结合起来实现这样的效果。...
总结来说,万能视频播放器是音视频领域的必备工具,它结合了多种编解码器和功能,使得用户可以轻松处理各种格式的视频文件,提供便捷、全面的观影体验。了解其工作原理和功能特性,对于日常使用和解决视频播放问题都...
5. **响应式设计**:考虑到现在多设备浏览的需求,一个优秀的ASP.NET视频播放器应该具备响应式布局,能在不同分辨率和屏幕尺寸的设备上自适应显示。 6. **控制面板**:播放器通常包含进度条、播放/暂停按钮、音量...
【VB 视频播放器 可播放avi mpg等】是一个基于VB6.0开发的视频播放软件,它能够支持常见的视频格式,如avi和mpg等。VB(Visual Basic)是微软公司推出的一种面向对象的、事件驱动的编程语言,尤其适合于快速构建用户...
5. `dynamic_flash_video_gallery.swf`:这是编译后的Flash电影文件,它是实际运行在浏览器中的视频播放器组件。 6. `懒人图库.txt`:可能是一个包含图片资源链接或者说明的文本文件,可能与视频预览图有关。 7. `...
本文将深入探讨一个关键的视频播放器特性,即对MP4和AVI格式的支持,以及自动检索SD卡视频文件的能力。 首先,让我们关注MP4格式。全称MPEG-4 Part 14,MP4是一种广泛使用的数字多媒体容器格式。它能够存储音频、...
在本文中,我们将深入探讨如何使用uniapp原生插件YL视频播放器,以及它在不同应用场景中的实现方式。uniapp是一个跨平台的开发框架,它允许开发者使用一套代码库来构建iOS、Android、Web等多个平台的应用。原生插件...
【基于MFC的简易视频播放器】是一种使用Microsoft Foundation Class (MFC)库开发的简单视频播放应用程序。MFC是微软提供的一种C++类库,它封装了Windows API,简化了Windows应用程序的开发过程,使得开发者可以更...
【基于QT+MPlayer的视频播放器】是一个利用Qt框架和MPlayer库开发的多媒体播放应用,它提供了丰富的视频播放功能。在这个项目中,开发者利用了Qt的强大UI设计能力和MPlayer的高效媒体处理能力,实现了以下核心功能:...
总结来说,801文件浏览播放器是一款专为监控录像设计的高效工具,它通过电子放大、截图和速度控制等功能,帮助用户更有效地查看和管理监控视频。背后的技术涉及了动态链接库(DLL)和执行文件(EXE)的运用,这些都...
6. **界面与用户体验**:一个优秀的高清视频播放器应具备直观的用户界面,便于浏览视频库、控制播放、调整设置。此外,自定义皮肤和快捷键也是提升用户体验的重要元素。 7. **播放控制功能**:快进、快退、暂停、...
"快退快进"则允许用户快速浏览视频内容,寻找特定的时间点,提高了操作效率。 "多路同时播放"是801格式监控视频播放器的另一大亮点,它使得用户可以在同一界面下同时查看多个监控摄像头的画面,这对于多摄像头监控...
本文将深入探讨HTML5视频播放器的原理、兼容性,以及如何利用它来创建一个适用于谷歌浏览器的播放器。 一、HTML5 `<video>` 标签 HTML5 `<video>` 标签是核心的视频播放元素,它的基本结构如下: ```html Your ...
基于这些组件,我们可以推断出该视频播放器的工作流程:用户通过Default.aspx页面浏览视频列表,列表数据来源于文件系统的视频文件;当用户点击播放时,系统调用相应的播放器控件或JavaScript代码来加载和播放选定的...
1. 视频播放器:视频播放器是一种软件应用,它可以解码并显示存储在各种格式(如MP4, AVI, FLV, MKV等)的视频文件。视频播放器的核心是解码器,它负责将视频文件中的编码数据转化为可以显示的图像帧和可听见的声音...