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 的相关文章

  • 在 Java 中捕获(捕获)窗口中的鼠标光标

    我正在寻找一种方法 在鼠标进入窗口后捕获或捕获该窗口中的鼠标 就像鼠标被捕获在虚拟机窗口中一样 直到用户按 CTRL ALT DEL 或以其他方式释放鼠标 我如何在 Java 中实现这一点 全屏显示不是一个选择 EDIT 这里有一些 SSC
  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 如何从 Java 访问 Windows 设备管理器中的信息?

    我有一个串行 USB 设备 并且其中多个设备可以连接到计算机 我需要查询和检索设备连接到的 COM 端口列表 在 Windows 设备管理器中 您可以获得当前连接的设备的 COM 端口 友好名称 该列表是动态的 从注册表中读取不工作 htt
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • Java 中如何验证字符串的格式是否正确

    我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一 我希望它接受的格式如下 MM DD YY M DD YY MM D YY 和 M D YY 我正在测试第一种格式 每次它都告诉我它无效 即使我输入了有
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • Time.valueOf 方法返回错误值

    我使用 Time valueOf 方法将字符串 09 00 00 转换为 Time 对象 如下所示 Time valueOf LocalTime parse 09 00 00 当我调用 getTime 来显示我得到的值时 28800000
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • 如何在 spring-data 中强制使用 CrudRepository 进行预加载?

    我有一个实体 其中包含List就是这样lazy默认加载 interface MyEntityRepository extends CrudRepository
  • Java 8 方法签名不一致

    Java 8 为我们提供了具有很长签名的新方法 如下所示 static
  • 使用 Java 8 Spring 4 + MyBatis 集成问题

    使用 Java 8 1 8 0 60 Spring 4 2 1 和 MyBatis 3 3 0 时遇到以下异常 Sep 29 2015 11 02 58 AM org springframework context annotation A
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 我怎样才能限定我不“拥有”的自动装配设置器

    要点是 Spring Batch v2 测试框架具有JobLauncherTestUtils setJob与 Autowired注解 我们的测试套件有多个Job类提供者 由于这个类不是我可以修改的东西 我不确定如何限定它自动连接的作业 每个

随机推荐

  • 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