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

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


http://www.kler.cn/a/406658.html

相关文章:

  • 基于ToLua的C#和Lua内存共享方案保姆级教程
  • Bokeh实现大规模数据可视化的最佳实践
  • 设计模式之 状态模式
  • GRU (门控循环单元 - 基于RNN - 简化LSTM又快又好 - 体现注意力的思想) + 代码实现 —— 笔记3.5《动手学深度学习》
  • 游戏引擎学习第20天
  • MybatisPlus之1:快速入门
  • Devexpress.Dashboard的调用二义性
  • GaussDB 华为高斯数据库
  • macos 使用 nvm 管理 node 并自定义安装目录
  • 超越GPT-4o-mini | 北大开源「国产o1」大模型,{多阶段自主推理}让小模型也能“放大招“!
  • 香港站群服务器有助于提升网站在搜索引擎中的排名
  • QT设置MessageBox的大小
  • fastadmin实现站内通知功能
  • [数组双指针] 0167. 两数之和 II - 输入有序数组
  • 为什么芯麦的 GC4931P 可以替代A4931/Allegro 的深度对比介绍
  • Android开发实战班-Android App 的启动过程
  • 分布式系统稳定性建设-性能优化篇
  • 【大数据学习 | Spark-Core】yarn-client与yarn-cluster的区别
  • Oracle 19c Rac + ADG搭建(源库:RAC,目标库FS)
  • 迈向AI驱动的数据新时代:探索SQL Server 2025的全新向量数据库
  • 一文说清:C和C++混合编程
  • VTK知识学习(12)- 读取PNG图像
  • 深入探索JMeter bin目录中的Properties文件:优化性能测试的关键
  • 【功能实现】bilibili顶部鼠标跟随效果怎么实现?
  • Python +Pyqt5 简单视频爬取学习及工具实现(二)
  • 5.STM32之通信接口《精讲》之USART通信---实验串口接收程序