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

android 使用MediaPlayer实现音乐播放--基础介绍

        Android 多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中,所有这些均使用 MediaPlayer API。

        java部分代码路径

\frameworks\base\media\java\android\media\MediaPlayer.java

下图是MediaPlayer的操作的生命周期和状态图,图片介绍来源于官方文。

       上面MediaPlayer完整状态图指明哪些方法可将 MediaPlayer 从一种状态变为另一种状态。 例如,当您创建新的 MediaPlayer 时,它处于 Idle 状态。此时,您应通过调用 setDataSource(),带来 更改为“Initialized”状态。然后,您需要使用 prepare() 或 prepareAsync() 方法。时间 MediaPlayer 准备就绪后,就会进入 Prepared 状态,这意味着您可以调用 start()。 使其可以播放媒体内容此时,如图所示 您可以按如下方式在已开始已暂停播放完成状态之间切换 调用诸如 start()pause()和 seekTo(), 等。当您 调用 stop(),但请注意, 在您呼叫start()之前, 再次准备 MediaPlayer

      MediaPlayer可以使用 系统资源。 因此,您应始终采取额外的预防措施, MediaPlayer 实例的挂起时间超出必要时间。当您 则应始终调用 release(),以确保 系统资源才会被正确释放例如,如果你是 使用 MediaPlayer,并且您的 activity 收到对 onStop() 的调用时,您必须释放 MediaPlayer, 因为它 当您的 activity 未与产品互动时,就应该继续保留该 activity 并无意义。 用户(除非你正在后台播放媒体,这在下一部分中进行了介绍)。 当然,当 activity 恢复或重启时,您需要 请创建一个新的 MediaPlayer,并在继续播放之前重新对其进行准备。

    MediaPlayer主要用到的方法有以下:

方法作用

MediaPlayer适合播放大的实时性要求不高的音频,其主要方法有: static MediaPlayer create(Context context,int resid)

创建MediaPlayer对象,用resid指定的资源作为要播放的音频

void setDataSource(String path)

设置要播放的音频文件位置,参数path为文件路径或Uri

void prepare()

setDataSource并不载入资源,需要调用此方法准备资源

void start()

开始/恢复播放

void stop()

停止播放,调用后无法再播放

void pause()

暂停播放,可以再用start恢复播放

void reset()

重置到刚刚创建后的状态

void release()

释放掉相关的资源

void seekTo(int msec)

从指定位置播放,参数为用毫秒定义的位置

int getCurrentPosition()

得到当前播放位置,即播放的毫秒数

int getDuration()

得到音频长度,即总的毫秒数

boolean isPlaying()

得到当前音频是否正在播放

void setLooping(boolean looping) / boolean isLooping()

循环播放

void setVolume(float leftVolume, float rightVolume)

设置音量

int getAudioSessionId()

获取音频会话 ID

setOnPreparedListener(MediaPlayer.OnPreparedListener listener)

音频源准备好后调用

setOnCompletionListener(MediaPlayer.OnCompletionListener listener)音频播放完毕后调用
setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener)网络流缓冲的状态变化时调用
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener)Seek操作完成后调用
setOnErrorListener(MediaPlayer.OnErrorListener listener)发生错误时调用

以上是关于MediaPlayer简单介绍,更完整可以关注后面或者查看谷歌文档:MediaPlayer 概览  |  Android media  |  Android Developers

相关文章:

android 使用MediaPlayer实现音乐播放--基础介绍

Android 多媒体框架支持播放各种常见媒体类型,因此 可轻松地将音频、视频和图片集成到您的应用中。你可以播放音频或 从存储在应用资源(原始资源)的媒体文件(原始资源)中获取独立文件 或从通过网络连接到达的数据流中&…...

【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南

文章目录 PyTorch 全面解析2.1 PyTorch 的发展历程2.2 PyTorch 的核心特点2.3 PyTorch 的应用场景 TensorFlow 全面解析3.1 TensorFlow 的发展历程3.2 TensorFlow 的核心特点3.3 TensorFlow 的应用场景 Keras 全面解析4.1 Keras 的发展历程4.2 Keras 的核心特点4.3 Keras 的应用…...

transformer.js(二):关于pipe管道的一切

前面的章节 transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景介绍了transformer.js的应用场景。 pipe 管道(Pipeline) 作为 Transformer.js 的核心功能之一&#xf…...

django宠物服务管理系统

摘 要 宠物服务管理系统是一种专门为宠物主人和宠物服务提供商设计的软件。它可以帮助用户快速找到附近的宠物医院、宠物美容店、宠物寄养中心等服务提供商,并预订相关服务。该系统还提供了一系列实用的功能。通过使用宠物服务管理系统,用户可以更加方便…...

设计模式的学习思路

学习设计模式确实需要一定的时间和实践,尤其是对于刚入门的人来说,因为一开始可能会感到有些混淆,尤其是当多个设计模式看起来有相似之处时。本博客是博主学习设计模式的思路历程,大家可以一起学习进步。设计模式学习-CSDN博客 1…...

PgSQL即时编译JIT | 第1期 | JIT初识

PgSQL即时编译JIT | 第1期 | JIT初识 JIT是Just-In-Time的缩写,也就是说程序在执行的时候生成可以执行的代码,然后执行它。在介绍JIT之前,需要说下两种执行方式:解释执行和编译执行。其中解释执行是通过解释器,将代码逐…...

比rsync更强大的文件同步工具rclone

背景 多个复制,拷贝,同步文件场景,最大规模的是每次几千万规模的小文件需要从云上对象存储中拉取到本地。其他的诸如定期数据备份,单次性数据备份。 rsync是单线程的,开源的mrsync是多线程的,但适用范围没…...

【eNSP】OSPF、RIP与静态路由互通实验(四)

OSPF、RIP与静态路由互通实验 实验目的实验要求实验步骤步骤 1:配置R1、R2、R3、R4、R5、R6、R7的端口ip步骤 2:配置R1、R2、R3的OSPF动态路由协议步骤 3:配置R3、R4、R5的RIP动态路由协议步骤 4:配置R3作为边界路由器&#xff0c…...

MODBUS TCP转CANOpen网关

Modbus TCP转CANopen网关 型号:SG-TCP-COE-210 产品用途 本网关可以实现将CANOpen接口设备连接到MODBUS TCP网络中;并且用户不需要了解具体的CANOpen和Modbus TCP 协议即可实现将CANOpen设备挂载到MODBUS TCP接口的 PLC上,并和CANOpen设备…...

Figure 02迎重大升级!!人形机器人独角兽[Figure AI]商业化加速

11月19日知名人形机器人独角兽公司【Figure AI】发布公司汽车巨头【宝马】最新合作进展,旗下人形机器人Figure 02在生产线上的性能得到了显著提升,机器人组成自主舰队,依托端到端技术,速度提高了400%,执行任务成功率提…...

Linux tcpdump 详解教程

简介 tcpdump 是一款在 Linux 平台上广泛使用的网络抓包工具。它可以捕获整个 TCP/IP 协议族的数据包,并支持对网络层、协议、主机、端口等进行过滤。tcpdump 提供了强大的过滤功能,允许使用 and、or、not 等逻辑语句来筛选数据包,非常适合用…...

o1的风又吹到多模态,直接吹翻了GPT-4o-mini

开源LLaVA-o1:一个设计用于进行自主多阶段推理的新型VLM。与思维链提示不同,LLaVA-o1独立地参与到总结、视觉解释、逻辑推理和结论生成的顺序阶段。 LLaVA-o1超过了一些更大甚至是闭源模型的性能,例如Gemini-1.5-pro、GPT-4o-mini和Llama-3.…...

记录下,用油猴Tampermonkey监听所有请求,绕过seesion

油猴Tampermonkey监听所有请求,绕过seesion 前因后果脚本编写 前因后果 原因是要白嫖一个网站的接口,这个接口的页面入口被隐藏掉了,不能通过页面调用,幸好之前有想过逆向破解通过账号密码模拟登录后拿到token,请求该…...

Golang语言整合jwt+gin框架实现token

1.下载jwt go get -u github.com/dgrijalva/jwt-go2.新建生成token和解析token文件 2.1 新建common文件夹和jwtConfig文件夹 新建jwtconfig.go文件 2.2 jwtconfig.go文件代码 /* Time : 2021/8/2 下午3:03 Author : mrxuexi File : main Software: GoLand */ package jwtC…...

SpringBootTest启动时出现循环依赖问题

在公司项目开发中由于SpringBoot启动类配置了setAllowCircularReferences为true在特定的业务逻辑下需要该配置,但我们需要使用SpringBootTest单元测试的时候引入我们开发的配置文件发现不生效, 解决方法: SpringBootTest(properties "…...

微信小程序——01开发前的准备和开发工具

一、踏上小程序开发之旅前的准备 (一)小程序账号注册 开启注册流程 首先,在浏览器中打开 “微信公众平台”(微信公众平台)。进入平台后,你会看到右上角有一个 “立即注册” 按钮,点击它&#x…...

华为欧拉系统使用U盘制作引导安装华为欧拉操作系统

今天记录一下通过U盘来安装华为欧拉操作系统 华为欧拉操作系统是国产的一个类似于Centos的Linus系统 具体实现操作步骤: 先在官网下载欧拉系统镜像点击跳转到下载 准备好一个大于16g的U盘 ,用于制作U盘启动 下载一个引导程序制作工具,我使用…...

【Java 集合】Collections 空列表细节处理

问题 如下代码&#xff0c;虽然定义为非空 NonNull&#xff0c;但依然会返回空对象&#xff0c;导致调用侧被检测为空引用。 实际上不是Collections的问题是三目运算符返回了null对象。 import java.util.Collections;NonNullprivate List<String> getInfo() {IccReco…...

2021 年 3 月青少年软编等考 C 语言三级真题解析

目录 T1. 找和为 K 的两个元素思路分析T2. Minecraft思路分析T3. 踩方格思路分析T4. 苹果消消乐思路分析T5. 流感传染思路分析T1. 找和为 K 的两个元素 在一个长度为 n ( n < 1000 ) n\ (n < 1000) n (n<1000) 的整数序列中,判断是否存在某两个元素之和为 k k k…...

【PyTorch】Pytorch中torch.nn.Conv1d函数详解

1. 函数定义 torch.nn.Conv1d 是 PyTorch 中用于一维卷积操作的类。定义如下&#xff1a; 官方文档&#xff1a;https://pytorch.ac.cn/docs/stable/generated/torch.nn.Conv1d.html#torch.nn.Conv1d torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride1,paddi…...

Linux运维篇-iscsi存储搭建

目录 概念实验介绍环境准备存储端软件安装使用targetcli来管理iSCSI共享存储 客户端软件安装连接存储 概念 iSCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的存储技术&#xff0c;该技术是将存储行业广泛…...

通过shell脚本分析部署nginx网络服务

题目&#xff1a; 1.接收用户部署的服务名称 2.判断服务是否安装 ​ 已安装&#xff1b;自定义网站配置路径为/www&#xff1b;并创建共享目录和网页文件&#xff1b;重启服务 ​ 没有安装&#xff1b;安装对应的软件包 3.测试 判断服务是否成功运行&#xff1b; ​ 已运行&am…...

Cyberchef使用功能之-多种压缩/解压缩操作对比

cyberchef的compression操作大类中有大量的压缩和解压缩操作&#xff0c;每种操作的功能和区别是什么&#xff0c;本章将进行讲解&#xff0c;作为我的专栏《Cyberchef 从入门到精通教程》中的一篇&#xff0c;详见这里。 关于文件格式和压缩算法的理论部分在之前的文章《压缩…...

【http】http协议状态码

目录 1. 说明2. 信息性状态码3. 成功状态码4. 重定向状态码5. 客户端错误状态码6. 服务器错误状态码 1. 说明 1.HTTP协议状态码是指在HTTP通信过程中&#xff0c;服务器向客户端返回的三位数值的数字代码&#xff0c;用于表示服务器对请求的处理结果和状态。2.这些状态码由三个…...

tcpdump交叉编译

TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#xff0c; 你尽可以试试&#xff0c;从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程&#xff0c;下载地址都只给了一个英文的官网首页&#…...

Python 脚本程序加密

文章目录 前言编译成 .pyc 文件编译成可执行文件PyInstallerNuitka PyArmor加密 Python 脚本生成可执行文件设置授权管理规则 前言 Python 脚本程序加密推荐。 编译成 .pyc 文件 .pyc 文件是 Python 源码文件 (.py) 编译后的二进制文件&#xff0c;能提高加载速度&#xff0…...

记录一次mysql的一些操作,mysql的docker,mysql备份,mysql表复制

我是用的是mysql的docker容器版本。 1、使用mysql的docker容器版本 1.1 启动 docker run --name <docker_name> \-e MYSQL_ROOT_PASSWORD<password> \-v /datavolume2/mysql:/var/lib/mysql \-p 3306:3306 \-d hub.atomgit.com/arm64v8/mysqldocker_name是启动后…...

Slate文档编辑器-WrapNode数据结构与操作变换

Slate文档编辑器-WrapNode数据结构与操作变换 在之前我们聊到了一些关于slate富文本引擎的基本概念&#xff0c;并且对基于slate实现文档编辑器的一些插件化能力设计、类型拓展、具体方案等作了探讨&#xff0c;那么接下来我们更专注于文档编辑器的细节&#xff0c;由浅入深聊…...

2024信创数据库TOP30之蚂蚁集团OceanBase

数据库作为存储、管理和分析这些数据的关键工具&#xff0c;其地位自然不言而喻。随着信息技术的日新月异&#xff0c;数据库技术也在不断演进&#xff0c;以满足日益复杂多变的市场需求。近日&#xff0c;备受瞩目的“2024信创数据库TOP30”榜单由DBC联合CIW/CIS权威发布&…...

Unity类银河战士恶魔城学习总结(P130 SkillTree UI 技能树)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了技能树的UI设置 UI_SKillTreeSlot.cs 这段代码定义了…...

Web服务器

简介 www是world wide web的缩写&#xff0c;也就是全球信息广播的意思。通常说的上网就是使用www来查询用户 所需要的信息。www可以结合文字、图形、影像以及声音等多媒体&#xff0c;并通过可以让鼠标单击超链接的方 式将信息以Internet传递到世界各处去。 与其他服务器类似…...

.net将List<实体1>的数据转到List<实体2>

比如说有两个实体Class&#xff0c;如下&#xff1a; //实体1 public class People {public string Name {get;set;}public int Age {get;set;} } //实体2 public class Student {public string Name {get;set;}public int Age {get;set;}public string ClassRoom {get;set;}/…...

django从入门到精通(五)——表单与模型

好的&#xff0c;下面将详细介绍 Django 的表单与模型&#xff0c;包括它们的定义、使用、如何在 Django Admin 中结合使用&#xff0c;以及相关的字段类型和验证机制。 Django 模型与表单 1. Django 模型 Django 模型是一个 Python 类&#xff0c;用于定义数据库中的数据结…...

Keepalived部署

Keepalived部署 安装配置单VIP模式配置master节点查看节点IP信息配置 keepalived.conf启动且加入开机自启查看是否生效 配置backup节点配置 keepalived.conf启动且加入开机自启查看是否生效 主备测试 多VIP配置 keepalived.conf查看IP 安装 dnf install -y keepalived配置 单…...

怀旧游戏打卡清单(TODO)

感觉忙碌了好久好久&#xff0c;真的好想休息一下。。 整理一下将来休息时候的打卡清单&#xff0c;不工作了去个海边狂打游戏&#xff0c;想想就惬意啊。当然&#xff0c;最好找个work from home&#xff0c;去海边找个酒店上班。挣钱休息两不误。。。 能不能实现另说&#xf…...

ssm160基于Java技术的会员制度管理的商品营销系统的设计与实现+vue(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;商品营销系统计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本商品营销系统就是在这…...

springboot实战(15)(注解@JsonFormat(pattern=“?“)、@JsonIgnore)

目录 一、请求映射路径相同&#xff0c;根据请求方式区分不同接口。 1、例子。 二、注解JsonFormat。 1、基本介绍。 2、日期和时间格式化。 3、时区设置。 4、反序列化。 三、注解JsonIgnore。 1、基本介绍。 2、主要作用。 一、请求映射路径相同&#xff0c;根据请求方式区分…...

Redis面试篇笔记(持续更新)

一、redis主从集群 单节点redis的并发能力是由上限的&#xff0c;要进一步提高redis的并发能力可以搭建主从集群&#xff0c;实现读写分离&#xff0c;一主多从&#xff0c;主节点写数据&#xff0c;从节点读数据 部署redis主从节点的docker-compose文件命令解析 version: &q…...

Applied Intelligence投稿

一、关于手稿格式&#xff1a; 1、该期刊是一个二区的&#xff0c;模板使用Springer nature格式&#xff0c; 期刊投稿要求&#xff0c;详细期刊投稿指南&#xff0c;大部分按Soringernature模板即可&#xff0c;图片表格声明参考文献命名要求需注意。 2、参考文献&#xff…...

WPF窗体基本知识-笔记-命名空间

窗体程序关闭方式 命名空间:可以理解命名空间的作用为引用下面的控件对象 给控件命名:一般都用x:Name,也可以用Name但是有的控件不支持 布局控件(容器)的类型 布局控件继承于Panel的控件,其中下面的border不是布局控件,panel是抽象类 在重叠的情况下,Zindex值越大的就在上面 Z…...

LLM | 论文精读 | CVPR | Alpha-CLIP —— 一个聚焦目标区域的CLIP模型

论文标题&#xff1a;Alpha-CLIP: A CLIP Model Focusing on Wherever You Want 作者&#xff1a;Zeyi Sun, Ye Fang, Tong Wu, Pan Zhang, Yuhang Zang等 期刊&#xff1a;CVPR 2024 DOI&#xff1a;http://arxiv.org/pdf/2312.03818v2 email&#xff1a;yuhan.huangwhu.ed…...

windows系统中实现对于appium的依赖搭建

Node.js&#xff1a;Appium是基于Node.js的&#xff0c;因此需要安装Node.js。可以从Node.js官网下载并安装。 Java Development Kit (JDK)&#xff1a;用于Android应用的自动化测试&#xff0c;需要安装JDK。可以从Oracle官网下载并安装。 Android SDK&#xff1a;进行Andro…...

【网络系统管理】Centos7——配置主从mariadb服务器案例(下半部分)

【网络系统管理】Centos7——配置主从mariadb服务器案例-CSDN博客 接上个文档&#xff0c;我们已经完成了主服务器创建数据库备服务器可以看到 一、在DBMS2查看信息 File&#xff0c;Position这两个字段的数据要记好&#xff0c;等一下需要用到 show master status; 二、在…...

mac nvm安装及使用(nvm安装指定版本node npm pnpm)

mac nvm安装及使用&#xff08;nvm安装指定版本node npm pnpm&#xff09; 1.卸载电脑的node 打开终端&#xff1a;依次执行以下命令&#xff1a; sudo rm -rf /usr/local/bin/npmsudo rm -rf /usr/local/share/man/man1/node.1sudo rm -rf /usr/local/lib/dtrace/node.dsudo…...

Elasticsearch面试内容整理-常见问题和解决方案

在使用 Elasticsearch 的过程中,可能会遇到各种常见问题,如集群状态异常、分片未分配、查询性能低下等。这些问题往往影响系统的可用性和性能,因此理解这些问题的成因和解决方案非常重要。以下是 Elasticsearch 常见问题及其解决方案的整理。 集群状态问题 Elasticsearch 集…...

鸿蒙学习高效开发与测试-应用程序框架和HarmonyOS SDK(3)

文章目录 1、应用程序框架1、规范化后台进程管理2、原生支持分布式3、支持多设备的统一窗口管理4、 组件共享及面向对象5、逻辑与界面解耦6、灵活扩展机制2、HarmonyOS SDK1、 开放能力 Kit2、开放能力的检索和使用3、 方舟工具链4、前端编译器架构1、应用程序框架 应 用 程 序…...

LeetCode 3244.新增道路查询后的最短距离 II:贪心(跃迁合并)-9行py(O(n))

【LetMeFly】3244.新增道路查询后的最短距离 II&#xff1a;贪心&#xff08;跃迁合并&#xff09;-9行py&#xff08;O(n)&#xff09; 力扣题目链接&#xff1a;https://leetcode.cn/problems/shortest-distance-after-road-addition-queries-ii/ 给你一个整数 n 和一个二维…...

使用GDB或Delve对已经运行起来的Go程序进行远程调试

同步发布在我的博客&#xff0c;欢迎来点赞。 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 使用 GDB 或 Delve 对已经运行起来的 Go 程序进行远程调试 背景 Java 程序可以很方便地通过 jdwp 参数指定一个对外端口进行远程调试&#xff0c;如 java \ -agentlib…...

集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1

蓝牙模组 - RF-BM-2340B1是基于美国TI的CC2340R5为核心设计的一款SimpleLink 2.4 GHz 无线模块。支持Bluetooth 5.3 Low Energy、Zigbee 、IEEE 802.15.4g、TI 15.4-Stack (2.4 GHz)及私有协议。集成了高性能ARM Cortex-M0处理器&#xff0c;具有512 KB Flash、32 KB超低泄漏SR…...

笔记记录 k8s-install

master节点安装: yum upgrade -y 更新系统 yum update -y 升级内核 ifconfig ens33 关闭swap swapoff -a (临时) vim /etc/fstab (永久) #/dev/mapper/cl-swap swap swap defaults 0 0 vim /etc/sysctl.conf vm.swappin…...