当前位置: 首页 > news >正文

android视频播放,(一)MediaPlayer视频播放示例

1. Apk内,预定义按键与触发按键:

layout 按键定义:
<SurfaceView
    android:id="@+id/surfaceView"
    android:layout_width="match_parent" 
    android:layout_height="360dp"
    />
<ImageButton
    android:id="@+id/play"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/play"
    />
<ImageButton
    android:id="@+id/stop"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/pause"
    />    
    
    
按键触发,代码处理:
@Override
public void onClick(View source)
{
        switch (source.getId())
    {

    case R.id.play:      // 播放按钮
        play();
        break;

    case R.id.stop:        // 停止按钮
                onStop();
        break;
    }
}


2. 创建MediaPlayer对象,与启动停止播放:
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    
    mPlayer = new MediaPlayer();
    surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
}

private void play()
{
    mPlayer.reset();
    // 音频流类型
    mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    // 预播放视频
    mPlayer.setDataSource("/sdcard/movie.3gp");
    
    // 视频输出到SurfaceView
    mPlayer.setDisplay(surfaceView.getHolder());
    mPlayer.prepare();
    
    mPlayer.start();
}

protected void onStop()
{
    if (mPlayer.isPlaying() || mPlayer.pause()){ 
       mPlayer.stop();
    }
    mPlayer.release();
}

3. 按照,如上最简步骤进行调试,即可通过MediaPlayer类对象Api进行视频播放测试。

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微调LLama 3.1——七月论文审稿GPT第5.5版:拿早期paper-review数据集微调LLama 3.1
  • Docker的卸载|安装|启动|停止|重启
  • vue防止鼠标左键拖动选中页面的元素
  • Elasticsearch 文档修改:全量更新与增量更新
  • C语言 | Leetcode C语言题解之第329题矩阵中的最长递增路径
  • LeetCode Pow(x, n)
  • HTTP的场景实践
  • 学习嵌入式的第十六天----结构体 共用体
  • C# winform 三层架构增删改查,(删除篇)
  • Python面试宝典第32题:课程表
  • cmake+ninja交叉编译android下的静态库
  • Elasticsearch 基本搜索
  • AI大模型开发——2.深度学习基础(1)
  • HCIP第七章(BGP拓展知识)
  • HCIP第六章(BGP)
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • Android Studio:GIT提交项目到远程仓库
  • Apache Zeppelin在Apache Trafodion上的可视化
  • ES6--对象的扩展
  • git 常用命令
  • JS函数式编程 数组部分风格 ES6版
  • Mac转Windows的拯救指南
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SOFAMosn配置模型
  • Web Storage相关
  • Xmanager 远程桌面 CentOS 7
  • 彻底搞懂浏览器Event-loop
  • 初识 webpack
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 观察者模式实现非直接耦合
  • 如何在GitHub上创建个人博客
  • 移动端唤起键盘时取消position:fixed定位
  • 自制字幕遮挡器
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (pytorch进阶之路)扩散概率模型
  • (不用互三)AI绘画工具应该如何选择
  • (过滤器)Filter和(监听器)listener
  • (算法)前K大的和
  • (一一四)第九章编程练习
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .NET C# 使用 iText 生成PDF
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net中我喜欢的两种验证码
  • @angular/cli项目构建--Dynamic.Form
  • [8481302]博弈论 斯坦福game theory stanford week 1
  • [ARC066F]Contest with Drinks Hard
  • [BUG] Authentication Error
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [Effective C++读书笔记]0012_复制对象时勿忘其每一部分
  • [GN] 后端接口已经写好 初次布局前端需要的操作(例)