位置: 编程技术 - 正文

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利用线程池高效实现异步任务([置顶]星陨计划)

  • 息税前利润增长率与财务杠杆系数
  • 广告发布费在哪个分类
  • 金税盘备份文件名
  • 救护车能随便买吗
  • 存货毁损计入
  • 出口企业退税流程
  • 为什么要开增值税
  • 特许权使用费的收入确认时间
  • 城建税及教育费附加计提表
  • 联营和合营的区别共同控制
  • 银行贷款受托支付受托人有风险吗
  • 经营租赁中出租人发生的初始直接费用是指
  • 以产品分成方式销售商品
  • 无偿赠送资产需要交哪些税
  • 房地产行业需要做环评吗
  • 声卡无声音怎么回事
  • Intel 酷睿i5 8300H
  • php部署在什么服务器
  • php数组原理
  • (Select)解决:Element-ui 中 Select 选择器下拉框样式及输入框样式的修改问题(背景色透明与悬停背景色变化与下拉框边距变化等操作)
  • 公司试乘试驾车管理
  • 转出未交增值税会计科目
  • gwsystemservice.exe是什么进程 有什么作用 gwsystemservice进程查询
  • 最小的摄像头是多大
  • php-cpp
  • hpzts04.exe是什么进程 有什么作用 hpzts04进程查询
  • vue3.0用法
  • 设备维修产生的人工费怎么开发票
  • api使用方法
  • php异步处理方案
  • vue开发环境和生产环境域名配置
  • react路由exact
  • web前端开发html代码
  • ftp port命令
  • 美国人用什么英语词典
  • 小规模增值税减征额怎么算
  • 物业费税目
  • 一般纳税人无票收入怎么报增值税
  • 金税盘密码和口令是多少
  • VUE3.0+Antdv+Asp.net WebApi开发学生信息管理系统(二)
  • 小规模纳税人进项发票怎么做账
  • 附有销售退回条件的商品销售
  • 科技型中小企业享受优惠税收政策
  • 存货报废进项税额需要转出吗
  • 融资方式股权融资
  • 废旧物资收购发票政策2018
  • 工程款发票怎么做分录
  • 进口固定资产的汇率怎么算
  • 无形资产摊销能加计扣除吗
  • 对公账户 发票
  • 独立董事需要入股吗
  • win7系统打开网页出现file not found
  • win10 server2008
  • mac系统的控制面板在哪
  • ubuntu unity8
  • 苹果mac怎么安装win10
  • win8系统简介
  • win10h2版本
  • Fatal server error: could not open 无法进图形界面的解决办法
  • xp电脑网络连接配置异常怎么办
  • 如何删除win7
  • win7禁用开机启动服务
  • shell脚本通过expect实现自动单边无密登录功能
  • dos删除文件夹下所有文件 不删除父目录
  • perl语言基本命令
  • perl中@_
  • 使用多进程web
  • js中生成随机数
  • js判断checkbox是否被选中
  • 使用灭火器时要对准火焰的什么部位喷射
  • python中元祖的用法
  • centos python2.7升级到3.7
  • 税务局投诉怎么投诉
  • 增值税申报表如何填报
  • 土地增值税网上申报流程
  • 锦江区税务局搬迁新地址
  • 营业账簿中的其他账簿包括
  • 黄金消费税如何征收
  • 2020年税务系统关闭
  • 小组长的职责及职责
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设