p.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.play: if (!mediaPlayer.isPlaying()) {try {mediaPlayer.setDataSource("/sdcard/music.mp3"); // 设置音频文件路径mediaPlayer.prepare(); // 准备播放mediaPlayer.start(); // 开始播放} catch (IOException e) {e.printStackTrace();}}break;case R.id.pause:if (mediaPlayer.isPlaying()) {mediaPlayer.pause();}break;case R.id.stop:if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}mediaPlayer.reset(); // 重置到初始状态break;}}@Overrideprotected void onDestroy() {super.onDestroy();if (mediaPlayer != null) {mediaPlayer.release(); // 释放资源}}} 在这个示例中,我们创建了一个名为 `MainActivity` 的 Activity,并实现了 `OnClickListener` 接口,这样我们可以在按钮被点击时执行相应的操作。布局文件 `activity_main.xml` 定义了三个按钮:播放(Play)、暂停(Pause)和停止(Stop)。在 `MainActivity` 的 `onCreate()` 方法中,我们找到了这些按钮并为它们设置了点击监听器。 当播放按钮被点击时,我们首先检查 `MediaPlayer` 是否已经在播放。如果不是,我们设置音频文件的来源(这里假设音频文件存储在SD卡上的 "music.mp3"),然后调用 `prepare()` 准备播放,并使用 `start()` 开始播放。如果音频文件正在播放,`isPlaying()` 方法会返回 `true`,我们就无需重复设置数据源和准备播放。 当暂停按钮被点击时,我们简单地调用 `pause()` 方法暂停播放。而当停止按钮被点击时,我们调用 `stop()` 停止播放,并通过 `reset()` 将 `MediaPlayer` 回复到初始状态,以便下次可以重新开始播放。此外,为了防止内存泄漏,我们在 `onDestroy()` 生命周期方法中调用 `release()` 释放 `MediaPlayer` 对象占用的资源。 在实际应用中,你可能需要处理更复杂的情况,例如错误处理、音频文件不存在、用户权限等问题。例如,当设置数据源时可能会抛出 `IOException`,我们需要捕获这个异常并进行适当的处理。另外,从Android 6.0(API 级别 23)开始,访问外部存储(如SD卡)可能需要运行时权限,你需要确保在运行时获取了相应的权限。 此外,还可以利用其他 `MediaPlayer` 方法来增强用户体验,例如: - 使用 `setOnCompletionListener()` 添加完成监听器,在音频播放完毕后执行特定操作。 - 使用 `setVolume()` 调整音量。 - 使用 `setLooping(true)` 让音频循环播放。 - 使用 `getCurrentPosition()` 获取当前播放位置。 Android 提供的 `MediaPlayer` 类为开发者提供了一种灵活的方式来处理音频播放任务。通过理解它的基本方法和工作流程,我们可以轻松地在应用程序中实现各种音频播放功能。
- 粉丝: 6
- 资源: 895
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助