位置: 编程技术 - 正文

Android--VideoPlay--视频播放器

编辑:rootadmin

推荐整理分享Android--VideoPlay--视频播放器,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

代码跟音乐播放器有大部分是相同的,各位可以将mp4格式的 视频文件放到sdcard卡中,在输入框中输入文件名即可,在 模拟器上运行请使用android2.0版本,据说其他版本的模拟器 不支持视频播放,如有错误之处请大家指出

java代码如下:

[html] view plaincopy package cn.mrzhu;

import java.io.File; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnPreparedListener; import android.os.Bundle; import android.os.Environment; import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView; import android.view.View; import android.widget.EditText; import android.widget.Toast;

public class VideoPlayDemoActivity extends Activity { private EditText nameText; private String path;//文件路径 private MediaPlayer mediaPlayer;//media对象 private SurfaceView surfaceView; private boolean pause;//暂停标记 private int position;//播放的进度 /* Called when the activity is first created. / @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);

nameText = (EditText)findViewById(R.id.filename); surfaceView = (SurfaceView)findViewById(R.id.surfaceview);

//把输送给surfaceview的视频画面,直接显示到屏幕上,不要维持它自身的缓冲区 surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); surfaceView.getHolder().setFixedSize(, );//设置视频播放窗口的大小 surfaceView.getHolder().setKeepScreenOn(true);//保持屏幕高亮 surfaceView.getHolder().addCallback(new SurfaceCallback()); mediaPlayer = new MediaPlayer();//实例化一个播放器对象 }

private final class SurfaceCallback implements Callback{

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

}

/* * 当surfaceView被创建时 */ public void surfaceCreated(SurfaceHolder holder) { if(position > 0 && path != null){ play(position); position = 0; } }

/* * 当surfaceView被销毁时 */

public void surfaceDestroyed(SurfaceHolder holder) { mediaPlayer.stop(); }

Android--VideoPlay--视频播放器

}

/* * 按钮事件,在main.xml中,每个按钮的click_on = mediaplay */ public void mediaplay(View v){ switch(v.getId()){

case R.id. String filename = nameText.getText().toString();//获取文件名 File file = new File(Environment.getExternalStorageDirectory(), filename); if(file.exists()){ path = file.getAbsolutePath(); play(0); }else{ //若路径不存在,弹出Toast提示 Toast.makeText(getApplicationContext(), R.string.filenoexsit, Toast.LENGTH_SHORT).show(); } break;

case R.id. if(mediaPlayer.isPlaying()){ mediaPlayer.pause(); pause = true; }else{ mediaPlayer.start(); pause = false; } break;

case R.id. if(mediaPlayer.isPlaying()){ mediaPlayer.seekTo(0); }else{ if(path != null){ play(0);//将播放进度置为0,恢复初始状态 } } break;

case R.id. if(mediaPlayer.isPlaying()){ mediaPlayer.stop(); } break; } }

private void play(int position) { try { mediaPlayer.reset(); mediaPlayer.setDataSource(path); mediaPlayer.setDisplay(surfaceView.getHolder()); mediaPlayer.prepare(); mediaPlayer.setOnPreparedListener(new PrepareListener(position)); } catch (Exception e) {

} }

private final class PrepareListener implements OnPreparedListener{ private int position;

public PrepareListener(int position) { super(); this.position = position; } public void onPrepared(MediaPlayer mp) { mediaPlayer.start();//播放视频 if(position > 0) mediaPlayer.seekTo(position); }

}

@Override protected void onDestroy() { mediaPlayer.release(); mediaPlayer = null; super.onDestroy(); } }

main.xml代码如下:

[html] view plaincopy

[置顶] android利用线程池高效实现异步任务 不管是开发android应用程序还是java应用程序,异步任务都是经常用到的,尤其是android本身做为线程不安全,只要稍微耗时的操作都要用到异步任务,而无论是j

vs 编译mosquitto win版本,开启websockets,实现消息推送 前言:因为之前没有怎么碰vs,只搞过cygwin,而cygwin上搞了好久都搞不定,以至于重新整理思路,这window上的版本应该怎么去编译。一直不知道怎么搞,

Android 编程下 Touch 事件的分发和消费机制 本文转自:

标签: Android--VideoPlay--视频播放器

本文链接地址:https://www.jiuchutong.com/biancheng/382252.html 转载请保留说明!

上一篇:Android Volley 框架的使用(一)(androidui框架)

下一篇:[置顶] android利用线程池高效实现异步任务([置顶]星陨计划)

  • 税盘收费吗
  • 个体工商户季度不超过30万免增值税吗
  • 发票的红冲和作废有何区别
  • 为什么要进行建筑工程预算
  • 2020小规模纳税人增值税税率
  • 从事演出业务取得的收入
  • 全面解析来料加工企业账务处理
  • 私募基金超募如何购买
  • 预付费卡税务处理
  • 业务招待费扣除计算
  • 年终结账后,应当更换新账的有( )
  • 免税和不免税的价格区别
  • 资管产品增值税征收管理规定
  • 三种类型的同期资料文档准备时间和提交税务机关时限有什么要求?
  • 电商销售进对公账户怎样做账
  • 餐饮行业月营业额怎么算
  • 工程结算审计费用谁承担
  • 残保金和工会经费需要计提吗
  • 资产减值损失如何结转本年利润
  • 外币报表折算差额怎么算
  • 教育费附加免征还计提吗
  • 事业单位 年终
  • linux ssh命令用法
  • 企业办税人员是干嘛的
  • 待清算商户消费款项是什么
  • 应收账款的差额计入哪里
  • 工程在建期间土地税滞纳金
  • 外地预交增值税退税了如何把申报报表
  • 复制粘贴如何提取文字
  • 多付货款退回的会计分录
  • 在php中,字符串有哪些表示形式
  • 装win7提示失败怎么办
  • 欧罗巴山脉自驾
  • 世界上最早的计算机是
  • Yii2.0小部件GridView(两表联查/搜索/分页)功能的实现代码
  • 远眺格斯韦因斯泰因村和格斯韦因斯泰因城堡 (© Juergen Sack/Getty Images)
  • 房产税和土地使用税什么时候申报
  • XHProf报告字段含义的解析
  • 蓝色龙舌兰花语
  • 功能强大的词语
  • 外贸企业出口退税申报流程
  • 其他综合收益涉及到的业务
  • python如何获取列表元素
  • windows PostgreSQL 9.1 安装详细步骤
  • 织梦如何采集文章
  • 用于职工福利的固定资产折旧
  • SqlServer 2005/2008数据库被标记为“可疑”的解决办法
  • mysql sql性能优化
  • mysql,if
  • 应收账款和应付账款可以对冲吗
  • 建筑工程和建筑装饰工程的区别
  • 在我国土地使用权分为哪几类
  • 住宿费专用发票会计分录
  • 为什么自创商誉不能确认
  • 辅助核算设置后使用后还可以随时修改
  • 未分配利润如何计算
  • 注销基本户必须注销专户吗
  • 建筑企业业务招待费
  • sql,join
  • mysql数据库基本知识点总结
  • mac自带的看图软件怎么使用
  • solaris 11.4
  • win7系统锁屏密码
  • 正在进行设备安装 win10安装打印机
  • Linux运维工程师工作内容
  • linux系统的
  • windows 8开机
  • python和r语言区别
  • cocos2dx游戏
  • jquery弹出窗口的方法
  • base如何使用
  • Python生成随机数
  • js计算字体宽度
  • javascript indexOf方法、lastIndexOf 方法和substring 方法
  • 成都市地方税务局 组织税收收入 2010
  • 四川国税发票手机查询
  • 学费报销找学校哪个部门
  • 深圳微信税务局登录不了
  • 新旧动能转换是我们能否过坎的关键
  • 查册证明怎么自动生成
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设