Android ApiDemos示例解析(87):Media->MediaPlayer

2023-11-10

本例介绍了如何使用MediaPlayer类来播放声音或是视频。涉及的Activity有三个:

  • MediaPlayerDemo:主Activity,显示示例列表。
  • MediaPlayerDemo_Audio: 子Activity,用于播放声音,在Launcher中没有图标。
  • MediaPlayerDemo_Video: 子Activity,用于播放视频,在Launcher中没有图标。

其中MediaPlayerDemo 使用四个按钮用于显示例子列表:

点击按钮后,触发子Activity,比如”Play video from local file” 将启动MediaPlayerDemo_Audio

Intent intent = 
 new Intent(MediaPlayerDemo.this.getApplication(), 
 MediaPlayerDemo_Audio.class); 
intent.putExtra(MEDIA, LOCAL_AUDIO); 
startActivity(intent);

运行这个例子,需要准备一些声音和视频资源,对于视频,可以使用手机自带的录像程序录一段视频。

修改MediaPlayerDemo_Audio.java 和MediaPlayerDemo_Video.java 中 的Path 赋值,比如在MediaPlayerDemo_Video.java 的case STREAM_VIDEO:下设置

path = “http://www.imobilebbs.com/download/android/boy.3gp”;

指定从Internet上某个位置在线播放视频的地址,同样可以设置其它声音或是视频对于的文件名,如果放在SD卡上,文件名可以为: /sd card/dcim/Camera/demo.3gp”。

有了这些准备工作,使用MediaPlayer 播放声音或是视频非常简单(用法类似于Java Me中的Player). MediaPlayer 支持从文件或是“流”中播放。MediaPlayer 可以处于多个状态,每个状态能够调用的函数是不同,下图为MediaPlayer 的状态转换图:

对应状态转换,MediaPlayer允许使用Listener来监视它的状态,具体请参见 http://developer.android.com/reference/android/media/MediaPlayer.html

下面结合本例介绍MediaPlayer 的几种用法:

播放本地文件:提供设置DataSource指向一个本地文件。

path = "/sd card/audio/test.mp3"; 
mMediaPlayer = new MediaPlayer(); 
mMediaPlayer.setDataSource(path); 
mMediaPlayer.prepare(); 
mMediaPlayer.start();

播放资源文件中的声音或是视频:


mMediaPlayer = MediaPlayer.create(this, R.raw.test_cbr); 
mMediaPlayer.start();


从本地或是网络播放视频:

path = "/sd card/dcim/camera/test.3gp"; 
//path = "http://www.imobilebbs.com/download/android/boy.3gp"; 
// Create a new media player and set the listeners 
mMediaPlayer = new MediaPlayer(); 
mMediaPlayer.setDataSource(path); 
mMediaPlayer.setDisplay(holder); 
mMediaPlayer.prepare(); 
mMediaPlayer.setOnBufferingUpdateListener(this); 
mMediaPlayer.setOnCompletionListener(this); 
mMediaPlayer.setOnPreparedListener(this); 
mMediaPlayer.setOnVideoSizeChangedListener(this); 
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);


其中Path的可以指向本地文件或是网络资源,并可以设置Media的事件处理器。 MediaPlayer播放视频时需使用SurfaceView 来显示图像,可以参见Android ApiDemos示例解析(57):Graphics->CameraPreview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ApiDemos示例解析(87):Media->MediaPlayer 的相关文章

随机推荐

  • Pinpoint--基础--06--界面说明

    Pinpoint 基础 06 界面说明 1 查看应用调用关系拓扑图 进入pintpoint gt gt 选择应用 gt gt 选择查看的时间周期 即可查看应用调用关系拓扑图 图文说明如下 2 查看应用单个节点调用情况 点击右侧View Se
  • 大数据时代的新星,图数据库究竟是什么?

    随着5G万物互联时代的到来 社交 电商 金融 物联网等行业织起了一张庞大而复杂的数据关系网 获得了新的发展空间 然而要想真正利用数据 获取越来越多 越来越复杂的关联数据中产生的业务价值 并非易事 为了应对大数据新时代的难题 工业界将越来越多
  • adb 通过wifi连接手机

    adb 通过wifi连接手机 1 电脑通过USB线连接手机 2 手机开启USB调试模式 开启手机开发者模式 3 手机开启USB调试模式 更多设置 开发者选项 USB调试 4 点击Wi Fi 高级设置 可以查看到手机Wi Fi的IP地址 此I
  • 微信小程序项目真机调试图片不显示处理

    微信开发者上图片显示 但在真机调试时不显示 查看数据库图片文件上传方式 如果是本地地址 改成网络地址即可 如图 查找ip网络地址方法 按windows R快捷键 输入CMD 输入ipconfig 复制IPv4地址192 168 0 2到上图
  • SQLite笔记-基本命令-c语言的使用

    一 数据库介绍 1 数据库的基本概念 数据 能够输入计算机并能被计算机程序识别和处理的信息集合 数据库 数据库是在数据库管理系统管理和控制之下 存放在存储介质上的数据集合 2 常用的数据库 1 大型数据库 1 oracle公司是最早开发数据
  • 软件测试的艺术(2)代码走查,检查与评审

    人工测试 代码检查 走查以及可用性测试是三种主要的人工测试方法 这种人工测试方法有点像是若干个人员坐在一起开 头脑风暴会 也就是说 目的是为了找出错误 而不是调试 优点 1 一旦发现错误 就能在代码中对其进行精准的定位 降低了调试的成本 2
  • Your account has been blocked

    Your account has been blocked 1 问题描述 GitLab Your account has been blocked fatal Could not read from remote repository 2
  • 【附源码】计算机毕业设计Python安卓基于Android的考勤管理系统hn24k(源码+程序+LW+调试部署)

    附源码 计算机毕业设计Python安卓基于Android的考勤管理系统hn24k 源码 程序 LW 调试部署 该项目含有源码 文档 程序 数据库 配套开发软件 软件安装教程 项目运行环境配置 Python3 7 7 Django Mysql
  • 解决!安装picgo插件Error: Cannot findmoduleC:\roaming\picgo\picgo-plugin-gitee-uploader\dist\index.js

    问题描述 本地安装以及picgo内在线安装该插件 均会报这个错误 我没有动过这个安装文件 但是每次它总会显示缺少index js 文件 Error Cannot find module C Users xueto AppData Roami
  • 【转】手把手走入Git开源世界

    原博文地址 https www cnblogs com objectjava p 5242542 html 我曾经一直想加入到开源项目中 但是因为没有人指导流程 网上看了很多 基本都是说了个大概 如果你也是一个初出茅庐的人 那么 我将以自己
  • 手把手教你在Windows 10,MacOS和Linux中安装TensorFlow 2-GPU版本,亲测有效(附相关安装下载资源)

    从0到1安装Tensorflow GPU版本 Windows版本TensorFlow GPU版本安装 1 要求 2 步骤 1 下载并安装显卡驱动 2 下载并安装Microsoft Visual Studio 3 下载并安装NVIDIA CU
  • Eclipse Indigo 3.7.2 安装Findbugs 3.0.0重启后找不到相关的菜单

    我通过Help gt Install New Software进行Findbugs插件安装 添加Findbugs插件地址 http findbugs cs umd edu eclipse 后 一直Next直到Finshed 然后安装完成后E
  • Kali Linux 2022修改Root用户密码(VirtualBox)

    1 启动Kali Liunx 进入开机启动页面 按键盘e键进入Kali GNU GRUB页面 2 进入Kali GNU GRUB页面 3 在Kali GNU GRUB页面 选择linux那一行 将ro 改为 rw 在此行末尾增加 init
  • Respons+生成随机验证码+详细代码 +重定向 +转发

    1 HTTP协议 响应消息 2 Response对象 3 ServletContext对象 HTTP协议 1 请求消息 客户端发送给服务器端的数据 数据格式 1 请求行 2 请求头 3 请求空行 4 请求体 2 响应消息 服务器端发送给客户
  • Kubernetes------YAML

    K8S YAML K8S 一 YAML语法格式 查看api 资源版本标签 二 写一个yaml文件demo 创建资源对象 deployment yaml文件详解 Pod yaml文件详解 Service yaml文件详解 Kubernetes
  • springMVC接收ajaxfileupload提交数据不执行success回调的问题解决

    采用ajaxfileupload插件提交表单 前端js写法如下 ajaxFileUpload url base submit ajaxfileupload do secureuri false fileElementId uploadFil
  • 正版方舟建服务器,搭建ARK服务器

    Loading 参考文章 CentOS 7 x 快速搭建ARK服务器 1 更新系统 yum update y 安装窗口会话工具 可以让你在退出ssh后保留当前运行的服务端 已安装或有其他工具的请跳过 yum install screen 安
  • ❀OSPF协议面试题总结❀

    文章目录 一 简单介绍下ospf 二 ospf的骨干区域有什么用 为什么要划分一个骨干区域 三 ospf的状态机 四 ospf的lsa有几种 五 ospf路由的生成过程 六 介绍ospf的虚链路 一 简单介绍下ospf 开放式最短路径优先协
  • 力扣2594.修车的最少时间

    题目描述 给你一个整数数组 ranks 表示一些机械工的 能力值 ranksi 是第 i 位机械工的能力值 能力值为 r 的机械工可以在 r n2 分钟内修好 n 辆车 同时给你一个整数 cars 表示总共需要修理的汽车数目 请你返回修理所
  • Android ApiDemos示例解析(87):Media->MediaPlayer

    本例介绍了如何使用MediaPlayer类来播放声音或是视频 涉及的Activity有三个 MediaPlayerDemo 主Activity 显示示例列表 MediaPlayerDemo Audio 子Activity 用于播放声音 在L