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

JAVA代码部分:

public class MediaPlayerStudy extends Activity {

private Button bplay,bpause,bstop;

private MediaPlayer mp = new MediaPlayer();

@Override

public void onCreate(Bundle savedInstanceState) {

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)等,设置播放器时需要考虑到播放器可能出现的情况设置好监听和处理逻辑,以保持播放器的健壮性。

转载于:https://www.cnblogs.com/dubo-/p/7710961.html

MediaPlayer播放音频,也可以播放视频相关推荐

  1. iOS 9音频应用播放音频之控制播放速度

    iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现i ...

  2. Java播放音频,支持暂停播放停止继续

    Java播放音频,支持暂停播放停止继续 之前发过一篇关于播放音频的文章,但是占用CPU过高,这里是改进版 改进内容 修复部分bug CPU占用率减少 安全性提高 Wav类 package player ...

  3. JavaScript - PC 端通过纯 js 播放音频文件(播放提示音)

    前言 有时候,我们可能有这样一个需求,当到达条件时,网页会播放一个提示音告知用户. 实现 当然,你也可以写一个 <audio> </audio> 标签,通过 js 获取 DOM ...

  4. html怎么用js播放音频,用Javascript播放音频?

    如果不想处理HTML元素: var audio = new Audio('audio_file.mp3'); audio.play(); Hide code snippet var audio = n ...

  5. 对象方法Android之多媒体使用——MediaPlayer播放音频

    每日一贴,今天的内容关键字为对象方法 MediaPlayer类 静态构造方法 常用方法 绑定事件监听器 播放音频 1.播放应用的资源文件(res/raw/) 通过我们下面介绍的几个静态构造函数创立Me ...

  6. 【Android FFMPEG 开发】OpenSLES 播放音频 ( 创建引擎 | 输出混音设置 | 配置输入输出 | 创建播放器 | 获取播放/队列接口 | 回调函数 | 开始播放 | 激活回调 )

    文章目录 I . FFMPEG 播放视频流程 II . OpenSLES 播放音频流程 III . OpenSLES 播放参考 Google 官方示例 IV . OpenSL ES 播放代码 ( 详细 ...

  7. FFmpeg学习3:播放音频

    参考dranger tutorial,本文将介绍如何使用FFmpeg解码音频数据,并使用SDL将解码后的数据输出. 本文主要包含以下几方面的内容: 关于播放音频的需要的一些基础知识介绍 使用SDL2播 ...

  8. iOS 音频录制、播放(本地、网络)

    文章目录一.录音机(AVAudioRecorder)1.简介2.如何使用3.具体实现(开始.暂停.停止.播放 四个功能)4.附件实现demo二.播放音频1.播放本地音频文件(AVAudioPlayer ...

  9. swift之视频播放AVKIT、AVPlayerViewController、音频录制和播放

    AVFoundation框架简介AVFoundation框架是iOS中专门处理音视频的框架,其中集成了音频播放以及处理和视频播放处理以及采集等功能(实现录制,编辑和播放音视频功能);以及配置音频会话更 ...

  10. js实现语音播报+html自动播放音频

    - 1. js生成语音源(利用百度的TTS): let str = "测试测试测试测试测试测试测试123测试测试测试测试测试测试123435"; let make_mp3 = &q ...

最新文章

  1. C/C++二级指针概念及应用(有向图的邻接表(拓扑排序)、有向网图的邻接表、树的孩子表示)
  2. ASP.NET MVC 5 - 视图
  3. 蚁群:微型机器人的社区
  4. spark streaming 入门例子
  5. 【解决没有该选项问题】使Clion运行编译运行单个C/C++文件(Single File Execution插件)
  6. 在Win2003、Win7、XP中配置IIS搭建ASP.NET Web网站或应用程序(1)
  7. PCB 电子线路板制作流程
  8. HDU5120 - Intersection
  9. 2014年9月计算机二级mysql真题_2017年9月全国计算机二级MySQL考试章节练习题
  10. 【Elasticsearch】Elasticsearch:aggregation介绍
  11. vue 属性 computed
  12. cgo 解决 error while loading shared libraries: xxx.so.x
  13. 微信小程序scroll-view横向滚动
  14. ENVI入门系列教程---一、数据预处理---4.1 遥感图像正射校正
  15. 非越狱iPad实现外接键盘全APP五笔输入(IOS14已自带五笔)
  16. (八)、MultipartFile
  17. HDAO 全新项目落地,带动区块链新一轮牛市
  18. Fundamentals of Computer Graphics(4th Ed)--Introduction(计算机图形学翻译级笔记)
  19. 某程序员揭秘“开水团”大厂真实福利
  20. 工业散热风扇对除甲醛有用吗

热门文章

  1. maven中net.sf.json报错的解决方法
  2. open×××结合pam_mysql认证出错的解决方法
  3. 微软服务器虚拟化-Hyper-v详解
  4. [MSSQL]也说SQL中显示星期几函数
  5. H计算机语言吗,计算机考研面试------编程语言
  6. MySQL执行计划EXPLAIN详解
  7. RocketMQ(五)——工作原理
  8. 我将要关注的kaggle比赛
  9. 基于参考点的非支配遗传算法-NSGA-III(二)
  10. GP学习(六)—Creating geodatabase and connecting geodatabase