Android开发之MediaPlayer基本使用方法详解

发布时间 - 2026-01-11 01:31:14    点击率:

本文实例讲述了Android MediaPlayer基本使用方法。分享给大家供大家参考,具体如下:

使用MediaPlayer播放音频或者视频的最简单例子:

Java代码部分:

public class MediaPlayerStudy extends Activity {
  private Button bplay,bpause,bstop;
  private MediaPlayer mp = new MediaPlayer();
  @Override
  public void onCreate(BundlesavedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    bplay =(Button)findViewById(R.id.play);
    bpause =(Button)findViewById(R.id.pause);
    bstop =(Button)findViewById(R.id.stop);
    bplay.setOnClickListener(new OnClickListener(){
      @Override
      public void onClick(View v) {
         try {
           mp.setDataSource("/sdcard/test.mp3");
           mp.prepare();
           mp.start();
         } catch (IllegalArgumentException e){
           e.printStackTrace();
         } catch (IllegalStateException e){
           e.printStackTrace();
         } catch (IOException e) {
           e.printStackTrace();
         }
         mp.setOnCompletionListener(new OnCompletionListener(){
           @Override
           public void onCompletion(MediaPlayer mp){
             mp.release();
           }
         });
      }
    });
    bpause.setOnClickListener(new OnClickListener(){
      @Override
      public void onClick(View v) {
         if(mp != null){
           mp.pause();
         }
      }
    });
    bstop.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
       if(mp != null){
        mp.stop();
       }
    }
    });
  }
  @Override
  protected void onDestroy() {
    if(mp != null)
      mp.release();
    super.onDestroy();
  }
}

布局文件main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:text="@string/hello" />
    <Button android:text="play" android:id="@+id/play"
      android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
    <Button android:text="pause" android:id="@+id/pause"
      android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
    <Button android:text="stop" android:id="@+id/stop"
      android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
  </LinearLayout>

程序说明:

这个例子只是描述了MediaPlayer的基本使用步骤和方式,MediaPlayer还有多种使用方式和方法,并不只局限于例子所介绍的一种。具体来看:

1)如何获得MediaPlayer实例:

可以使用直接new的方式:

MediaPlayer mp = new MediaPlayer();

也可以使用create的方式,如:

MediaPlayer mp = MediaPlayer.create(this, R.raw.test);
//这时就不用调用setDataSource了

2) 如何设置要播放的文件:

MediaPlayer要播放的文件主要包括3个来源:

a. 用户在应用中事先自带的resource资源

例如:

MediaPlayer.create(this,R.raw.test);

b. 存储在SD卡或其他文件路径下的媒体文件

例如:

mp.setDataSource("/sdcard/test.mp3");

c. 网络上的媒体文件

例如:

mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");

MediaPlayer的setDataSource一共四个方法:

setDataSource(String path)
setDataSource(FileDescriptor fd)
setDataSource(Context context, Uri uri)
setDataSource(FileDescriptor fd, long offset, long length)

3)对播放器的主要控制方法:

Android通过控制播放器的状态的方式来控制媒体文件的播放,其中:

prepare()prepareAsync()  提供了同步和异步两种方式设置播放器进入prepare状态,需要注意的是,如果MediaPlayer实例是由create方法创建的,那么第一次启动播放前不需要再调用prepare()了,因为create方法里已经调用过了。
start()是真正启动文件播放的方法,
pause()stop()比较简单,起到暂停和停止播放的作用,
seekTo()是定位方法,可以让播放器从指定的位置开始播放,需要注意的是该方法是个异步方法,也就是说该方法返回时并不意味着定位完成,尤其是播放的网络文件,真正定位完成时会触发OnSeekComplete.onSeekComplete(),如果需要是可以调用setOnSeekCompleteListener(OnSeekCompleteListener)设置监听器来处理的。
release()可以释放播放器占用的资源,一旦确定不再使用播放器时应当尽早调用它释放资源。
reset()可以使播放器从Error状态中恢复过来,重新会到Idle状态。

4)设置播放器的监听器:

MediaPlayer提供了一些设置不同监听器的方法来更好地对播放器的工作状态进行监听,以期及时处理各种情况,

如:

setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
setOnErrorListener(MediaPlayer.OnErrorListener listener)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android文件操作技巧汇总》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # MediaPlayer  # Android提高之MediaPlayer播放网络视频的实现方法  # Android提高之MediaPlayer播放网络音频的实现方法  # Android提高之MediaPlayer音视频播放  # Android MediaPlayer实现音乐播放器实例代码  # 21天学习android开发教程之MediaPlayer  # android多媒体音乐(MediaPlayer)播放器制作代码  # android音乐播放简单实现的简单示例(MediaPlayer)  # Android编程视频播放API之MediaPlayer用法示例  # Android 媒体开发之MediaPlayer状态机接口方法实例解析  # Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能  # Android开发之多媒体文件获取工具类实例【音频  # 视频  # 图片等】  # Android开发之MediaPlayer多媒体(音频  # 视频)播放工具类  # 播放器  # 的是  # 操作技巧  # 可以使用  # 需要注意  # 进阶  # 是个  # 相关内容  # 过了  # 尤其是  # 是由  # 两种  # 感兴趣  # 给大家  # 考虑到  # 或其他  # 不需  # 自带  # 最简单  # 更多关于 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Bootstrap CSS布局之列表  手机软键盘弹出时影响布局的解决方法  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  使用C语言编写圣诞表白程序  EditPlus 正则表达式 实战(3)  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  香港网站服务器数量如何影响SEO优化效果?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  长沙做网站要多少钱,长沙国安网络怎么样?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  googleplay官方入口在哪里_Google Play官方商店快速入口指南  nginx修改上传文件大小限制的方法  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  JavaScript模板引擎Template.js使用详解  JavaScript如何实现错误处理_try...catch如何捕获异常?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel如何自定义分页视图?(Pagination示例)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  Laravel如何升级到最新版本?(升级指南和步骤)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何正确下载安装西数主机建站助手?  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  Linux安全能力提升路径_长期防护思维说明【指导】  制作企业网站建设方案,怎样建设一个公司网站?  如何在云服务器上快速搭建个人网站?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何用虚拟主机快速搭建网站?详细步骤解析  BootStrap整体框架之基础布局组件  Mybatis 中的insertOrUpdate操作  简历没回改:利用AI润色让你的文字更专业  Laravel怎么为数据库表字段添加索引以优化查询  Android okhttputils现在进度显示实例代码  如何快速搭建高效可靠的建站解决方案?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  javascript基本数据类型及类型检测常用方法小结  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  LinuxShell函数封装方法_脚本复用设计思路【教程】  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)