在 Android 中播放音频文件一般都是使用 MediaPlayer 类来实现的,它对多种格式的音 频文件提供了非常全面的控制方法,从而使得播放音乐的工作变得十分简单。下表列出了 MediaPlayer 类中一些较为常用的控制方法。

方法名

功能描述

setDataSource()

设置要播放的音频文件的位置。

prepare()

在开始播放之前调用这个方法完成准备工作。

start()

开始或继续播放音频。

pause()

暂停播放音频。

reset()

将 MediaPlayer 对象重置到刚刚创建的状态。

seekTo()

从指定的位置开始播放音频。

stop()

停止播放音频。调用这个方法后的 MediaPlayer 对象无法再播放音频。

release()

释放掉与 MediaPlayer 对象相关的资源。

isPlaying()

判断当前 MediaPlayer 是否正在播放音频。

getDuration()

获取载入的音频文件的时长。

简单了解了上述方法后,我们再来梳理一下 MediaPlayer 的工作流程。首先需要创建出一个 MediaPlayer 对象,然后调用 setDataSource()方法来设置音频文件的路径,再调用 prepare()方法使 MediaPlayer 进入到准备状态,接下来调用 start()方法就可以开始播放音频,调用 pause()方法就会暂停播放,调用 reset()方法就会停止播放。 下面就让我们通过一个具体的例子来学习一下吧,新建一个 PlayAudioTest 项目,然后

修改 activity_main.xml 中的代码,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" >

<Button android:id="@+id/play" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Play" />

<Button android:id="@+id/pause" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Pause" />

<Button android:id="@+id/stop" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="Stop" />

</LinearLayout>

布局文件中横向放置了三个按钮,分别用于对音频文件进行播放、暂停和停止操作。然 后修改 MainActivity 中的代码,如下所示:

public class MainActivity extends Activity implements OnClickListener {

private Button play;

private Button pause;

private Button stop;

private MediaPlayer mediaPlayer = new MediaPlayer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

play = (Button) findViewById(R.id.play);

pause = (Button) findViewById(R.id.pause);

stop = (Button) findViewById(R.id.stop); play.setOnClickListener(this); pause.setOnClickListener(this); stop.setOnClickListener(this);

initMediaPlayer(); // 初始化MediaPlayer

}

private void initMediaPlayer() {

try {

File file = new File(Environment.getExternalStorageDirectory(), "music.mp3");

mediaPlayer.setDataSource(file.getPath()); // 指定音频文件的路径

mediaPlayer.prepare(); //MediaPlayer进入到准备状态

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.play:

if (!mediaPlayer.isPlaying()) {

mediaPlayer.start(); // 开始播放

}

break;

case R.id.pause:

if (mediaPlayer.isPlaying()) {

mediaPlayer.pause(); // 暂停播放

}

break;

case R.id.stop:

if (mediaPlayer.isPlaying()) {

mediaPlayer.reset(); // 停止播放

initMediaPlayer();

}

break;

default:

break;

}

}

@Override

protected void onDestroy() {

super.onDestroy();

if (mediaPlayer != null) {

mediaPlayer.stop();

mediaPlayer.release();

}

}

}

可以看到,在类初始化的时候我们就创建了一个 MediaPlayer 的实例,然后在 onCreate() 方法中调用了 initMediaPlayer()方法为 MediaPlayer 对象进行初始化操作。在 initMediaPlayer() 方法中,首先是通过创建一个 File 对象来指定音频文件的路径,从这里可以看出,我们需要 事 先 在 SD 卡 的 根 目 录 下 放 置 一 个 名 为 music.mp3 的 音 频 文 件 。 后 面 依 次 调 用 了 setDataSource()方法和 prepare()方法为 MediaPlayer 做好了播放前的准备。

接下来我们看一下各个按钮的点击事件中的代码。当点击 Play 按钮时会进行判断,如 果当前 MediaPlayer 没有正在播放音频,则调用 start()方法开始播放。当点击 Pause 按钮时会 判断,如果当前 MediaPlayer 正在播放音频,则调用 pause()方法暂停播放。当点击 Stop 按钮 时会判断,如果当前 MediaPlayer 正在播放音频,则调用 reset()方法将 MediaPlayer 重置为刚 刚创建的状态,然后重新调用一遍 initMediaPlayer()方法。

最后在 onDestroy()方法中,我们还需要分别调用 stop()和 release()方法,将与 MediaPlayer相关的资源释放掉。 这样一个简易版的音乐播放器就完成了,现在将程序运行到手机上,界面如图 8.19 所示。

图   8.19

点击一下 Play 按钮就可以听到优美的音乐了,然后点击 Pause 按钮声音会停住,再次点 击 Play 按钮会接着暂停之前的位置继续播放。这时如果点击一下 Stop 按钮声音也会停住, 但是再次点击 Play 按钮时,音乐就会重头开始播放了。

android: 播放音频相关推荐

  1. Android播放音频之按钮控制

    控制音量和播放 良好的用户体验是可预测的. 如果您的应用程式播放媒体,您的使用者必须使用装置,蓝牙耳机或耳机的硬体或软体音量控制来控制应用程式的音量. 类似地,在适当和可用的情况下,播放,停止,暂停, ...

  2. android 播放声音文件,AudioPlayerDemo android 播放音频文件

    [实例简介] 该PCM 参数如下: rm-channels_2 frame_4096(纯PCM数据每帧长度4096) freq_44100 bits_16 480X234_1700kbps.rm是源音 ...

  3. android怎么播放音频,Android播放音频的两种方式

    一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: private MediaPlayer mPlayer = null; mPlayer = Med ...

  4. Android播放音频到耳机,Android音乐播放模式切换-外放、听筒、耳机

    初始化音频管理器 /** * 初始化音频管理器 */ private void initAudioManager() { audioManager = (AudioManager) context.g ...

  5. Android播放音频工具类

    播放完毕重置mediaplayer,播放完毕才能播放下一次.播放小音频建议使用soundpool(音频大小不超过900k) public class PlayMusicUtils {private s ...

  6. Ffmpeg + OpenSL ES + Android 播放音频

    一 拿到音频的 路径 ,然后根据 jni 发送数据到C语言的方法 然后,开始解析 avcodec_register_all();avformat_network_init();pPlayer-> ...

  7. Android多媒体功能开发(6)——使用MediaPlayer类播放音频

    Android播放音频资源主要有两个类:MediaPlayer和SoundPool. MediaPlayer用于实现对一个音频的播放控制,侧重于启动.停止.暂停.位置控制等操作.不支持同时播放多个音频 ...

  8. android播放音乐权限,android开发播放音乐需要声明什么权限

    android开发播放音乐需要声明什么权限以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! android开发播放音乐需要 ...

  9. 基于网络音频的Android播放程序简单示例

    随着发布MP3文件.播客以及流式音频变得越来越受欢迎,构建可以利用这些服务的音频播放程序的需求也越来越强烈.幸运的是,Android拥有丰富的功能用于处理网络上存在的各种类型的音频. 1.基于HTTP ...

最新文章

  1. 《深入浅出Mysql》學習筆記--日志
  2. json字符串与对象互相转换
  3. 赋值给集合_ArrayList集合源码
  4. pmd 设置默认规则,只要使用了该规则集就自动使用
  5. Java Web应用小案例:猜数小游戏
  6. 【转载】以前ioi上看到的一篇关于如何成为一名程序员的文章
  7. c# mysql datetime 判断为空 dbnull_转:SqlServer中的datetime类型的空值和c#中的DateTime的空值的...
  8. REST和微服务——用异步交互分解单体系统
  9. python10进制2进制转换
  10. Microsoft Visio 2010 - 参与者 (actor) - 人的形状图标
  11. 机器学习特征工程之皮尔森相关系数 pearson correlation of features
  12. 老照片免费修复软件有哪些?一键智能修复老照片工具推荐给你
  13. NAND FLASH简介
  14. 【Linux】bash: /home/stefan/jdk1.7.0_55/bin/java: /lib/ld-linux.so.2: bad ELF interpreter
  15. 云杰恒指:7.29恒指期货实盘指导交易复盘
  16. 其他人的爱情 VS 程序员的爱情
  17. Java递归解压zip压缩包
  18. idea 使用markdown总结
  19. 转一位计算机牛人的心得,谈计算机和数学,很实用~
  20. java获取当前时间和求时间差(分钟,秒钟,小时,年等)

热门文章

  1. BJUI怎样对input添加自定义验证规则
  2. spring系列-注解驱动原理及源码-bean生命周期
  3. 神策 2021 数据驱动大会,与“现代营销之父”科特勒的认知同行
  4. [LeetCode][JavaScript]Invert Binary Tree 反转二叉树
  5. Memtest86-7.1内存测试工具
  6. 关于CI的服务器与最佳实践,这里有一些思考 1
  7. 《趣题学算法》—第0章0.3节算法的伪代码描述
  8. nginx配置支持http2
  9. python--html to pdf
  10. 二十六个月Android学习工作总结