`

Android 中级教程之------Android MediaPlayer播放mp3的实例!

阅读更多

大家好我们今天研究的是Android中很重要也最为复杂的媒体播放器---MediaPlayer.

Android的MediaPlayer包含了Audio和video的播放功能,在Android的界面上,Music和Video两个应用程序都是调用MediaPlayer实现的。

MediaPlayer在底层是基于OpenCore(PacketVideo)的库实现的,为了构建一个MediaPlayer程序,上层还包含了进程间通讯等内容,这种进程间通讯的基础是Android基本库中的Binder机制。

而我们今天的例子只是利用MediaPlayer来播放res/raw文件夹中一首非常动听的英文哥love fool.mp3.程序有三个ImageButton按钮,播放,停止,和暂停!三个按钮的功能我就不用多说.下面我将Step By Step教你如何完成本Demo的实现.

Step 1 :新建一个Android工程,命名为MediaPlayerDemo.

Step 2 :准备素材,在res下建一个raw文件夹,将foollove.mp3导入,将play.png,pause.png,及stop.png导入res/drawable文件夹下.

Step 3: 设计UI布局,在main.xml里放入三个ImageButton(这里可以用AbsoluteLayout,或者RelativeLayout实现,我用后者).代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/white"
xmlns:android="http://schemas.android.com/apk/res/android "
>
<TextView
android:id="@+id/myTextView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
>
</TextView>
<ImageButton
android:id="@+id/myButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/play"
android:layout_below="@+id/myTextView1"
>
</ImageButton>
<ImageButton
android:id="@+id/myButton3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pause"
android:layout_alignTop="@+id/myButton1"
android:layout_toRightOf="@+id/myButton1"
>
</ImageButton>
<ImageButton
android:id="@+id/myButton2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/stop"
android:layout_alignTop="@+id/myButton1"
android:layout_toRightOf="@+id/myButton3"
>
</ImageButton>
</RelativeLayout>

Step 4 :主控制程序MediaPlayerDemo.java的实现,代码如下:

package com.android.test;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class MediaPlayerDemo extends Activity {

private ImageButton mb1,mb2,mb3;
private TextView tv;
private MediaPlayer mp;
//声明一个变量判断是否为暂停,默认为false
private boolean isPaused = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//通过findViewById找到资源
mb1 = (ImageButton)findViewById(R.id.myButton1);
mb2 = (ImageButton)findViewById(R.id.myButton2);
mb3 = (ImageButton)findViewById(R.id.myButton3);
tv = (TextView)findViewById(R.id.myTextView1);

//创建MediaPlayer对象,将raw文件夹下的lovefool.mp3
mp = MediaPlayer.create(this,R.raw.lovefool);
//增加播放音乐按钮的事件
mb1.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mp != null)
{
mp.stop();
}
mp.prepare();
mp.start();
tv.setText("音乐播放中...");
} catch (Exception e) {
tv.setText("播放发生异常...");
e.printStackTrace();
}
}
});

mb2.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mp !=null)
{
mp.stop();
tv.setText("音乐停止播放...");
}
} catch (Exception e) {
tv.setText("音乐停止发生异常...");
e.printStackTrace();
}

}
});

mb3.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mp !=null)
{
if(isPaused==false)
{
mp.pause();
isPaused=true;
tv.setText("停止播放!");
}
else if(isPaused==true)
{
mp.start();
isPaused = false;
tv.setText("开始播发!");
}
}
} catch (Exception e) {
tv.setText("发生异常...");
e.printStackTrace();
}

}
});

/* 当MediaPlayer.OnCompletionLister会运行的Listener */
mp.setOnCompletionListener(
new MediaPlayer.OnCompletionListener()
{
// @Override
/*覆盖文件播出完毕事件*/
public void onCompletion(MediaPlayer arg0)
{
try
{
/*解除资源与MediaPlayer的赋值关系
* 让资源可以为其它程序利用*/
mp.release();
/*改变TextView为播放结束*/
tv.setText("音乐播发结束!");
}
catch (Exception e)
{
tv.setText(e.toString());
e.printStackTrace();
}
}
});

/* 当MediaPlayer.OnErrorListener会运行的Listener */
mp.setOnErrorListener(new MediaPlayer.OnErrorListener()
{
@Override
/*覆盖错误处理事件*/
public boolean onError(MediaPlayer arg0, int arg1, int arg2)
{
// TODO Auto-generated method stub
try
{
/*发生错误时也解除资源与MediaPlayer的赋值*/
mp.release();
tv.setText("播放发生异常!");
}
catch (Exception e)
{
tv.setText(e.toString());
e.printStackTrace();
}
return false;
}
});
}

}


Step 5: 运行效果如下,一首动听的love fool在播放...享受中...

扩散学习:

如果我们想播放手机卡里的音乐,或者URL下载流媒体来播放,示意程序如下:

MediaPlayer mp = new MediaPlayer();

mp.setDataSource(String URL/FILE_PATH);

mp.prepare();

mp.start();

以上程序主要是通过MediaPlayer.setDataSource() 的方法,将URL或文件路径以字符串的方式传入.使用setDataSource ()方法时,要注意以下三点:

1.构建完成的MediaPlayer 必须实现Null 对像的检查.

2.必须实现接收IllegalArgumentExceptionIOException 等异常,在很多情况下,你所用的文件当下并不存在.

3.若使用URL 来播放在线媒体文件,该文件应该要能支持pragressive 下载.

分享到:
评论

相关推荐

    Android 中级教程之------Android MediaPlayer播放mp3的实例

    本教程将深入探讨如何使用Android的MediaPlayer类来播放MP3格式的音频文件。了解这个知识点对于Android开发者来说至关重要,特别是对于那些希望构建音乐播放器或者需要在应用中集成音频播放功能的开发者。 首先,...

    Android MediaPlayer播放mp3的实例.doc

    "Android MediaPlayer播放mp3的实例" Android 中的 MediaPlayer 是一个功能强大且复杂的媒体播放器,可以播放音频和视频文件。在 Android 的界面上,Music 和 Video 两个应用程序都是调用 MediaPlayer 实现的。...

    Android实例之MediaPlayer播放音乐和视频

    在这个"Android实例之MediaPlayer播放音乐和视频"中,我们将深入探讨如何利用MediaPlayer类实现多媒体的播放功能。 首先,MediaPlayer是Android SDK提供的一个类,它可以播放本地或网络上的音频和视频资源。在...

    Android下MediaPlayer播放MP3示例

    这个示例展示了如何在Android应用中使用`MediaPlayer`组件播放MP3文件,包括设置数据源、准备播放、处理播放状态变化等关键步骤。通过阅读`MediaPlayerDemo`项目的源代码,你可以更深入地理解这些概念,并将其应用于...

    Android MediaPlayer Playback---多媒体开发应用程序接口

    Android提供了多种API来处理音频、视频和图像,其中之一就是`MediaPlayer`类。这个强大的工具允许开发者播放本地或网络上的媒体文件,为用户创建各种多媒体应用提供了便利。 `MediaPlayer`是Android SDK中的核心...

    从头学Android之多媒体--使用MediaPlayer播放音频示例代码

    首先,我们需要创建一个`MediaPlayer`实例,然后加载音频源,最后调用播放方法来开始播放。以下是一个简单的播放音频的步骤: 1. 初始化`MediaPlayer`对象: ```java MediaPlayer mediaPlayer = new MediaPlayer...

    Android 使用MediaPlayer播放视频

    在博客"Android使用MediaPlayer播放视频"中,作者更详细地介绍了如何实现视频播放,包括网络视频播放、处理播放状态变化、控制播放进度等功能。通过阅读该博客,你可以获得更全面的了解和实践指导。 总之,`...

    android MediaPlayer播放视频网络URL,asset目录下文件,本地视频文件

    在Android开发中,`MediaPlayer`类是用于播放各种媒体文件的核心组件。它可以处理音频、视频流,支持多种格式,如MP3、AAC、MPEG-4等。在本教程中,我们将深入探讨如何使用`MediaPlayer`播放网络URL、Asset目录下的...

    Android应用开发mediaplayer播放音频,带有进度条

    在Android应用开发中,MediaPlayer类是用于播放各种音频和视频资源的核心组件。在这个特定的示例中,我们关注的是如何使用MediaPlayer与进度条(SeekBar)结合,创建一个简单的音频播放器。以下是对这个Android应用...

    android-mediaplayer_android源码_

    `MediaPlayer`类是Android SDK中的核心组件之一,它允许开发者播放本地或网络上的媒体文件。这个类提供了丰富的API,包括播放、暂停、停止、SeekTo(定位播放位置)等操作。`MediaPlayer`的工作流程通常涉及以下几个...

    Android 使用mediaplayer播放res/raw文件夹中的音乐的实例

    Android 使用mediaplayer播放res/raw文件夹中的音乐的实例 (1)在res文件夹中新建一个文件夹重命名为raw,并且将要播放的音乐放到raw文件夹里面 (2)修改layout目录下的xml布局文件,添加3个按钮空间和一个文本...

    Android MediaPlayer 自定义循环次数

    在Android开发中,MediaPlayer是处理音频和视频播放的核心类之一,它提供了丰富的API来控制多媒体文件的播放。本文将深入探讨如何使用MediaPlayer自定义循环播放的次数,这在需要重复播放特定音频片段的应用场景中...

    android实例源代码-Android MP3播放器,带卡拉OK字幕.zip

    这个"android实例源代码-Android MP3播放器,带卡拉OK字幕.zip"的压缩包显然提供了一个完整的实现案例,可以供学习者研究和参考。下面我们将详细探讨这个项目可能涵盖的一些核心技术和知识点。 1. **媒体播放框架**...

    Delphi 11.3 Android实例-录音与回放(播放MP3)

    在本实例中,我们将深入探讨如何使用Delphi 11.3在Android平台上实现录音与回放功能,特别是播放MP3文件。Delphi是Embarcadero开发的一款强大的集成开发环境(IDE),它支持跨平台应用程序开发,包括移动设备如...

    android mediaPlayer 实例 附

    在Android平台上,多媒体播放是一个常见的需求,而`MediaPlayer`类是Android SDK提供的核心组件,用于处理音频和视频的播放。本实例将详细讲解如何使用`MediaPlayer`进行媒体播放,并通过附带的`SimpleMedia`代码...

    Android多媒体功能开发-用MediaPlayer播放音频的例子

    总的来说,`MediaPlayer`是Android开发中的核心组件之一,用于实现音频播放功能。熟练掌握其用法和生命周期管理,能帮助开发者创建功能丰富且流畅的多媒体应用。在实际开发中,开发者还需要根据具体需求和场景,灵活...

    android实例源代码-Android MSD音乐播放器.zip

    总的来说,"android实例源代码-Android MSD音乐播放器"提供了一个完整的音乐播放器实现,涵盖了多媒体数据获取、播放控制、UI设计、服务使用、通知栏管理和音频特效等多个方面。通过研究这个项目,开发者可以全面...

    安卓MediaPlayer 播放MP3文件

    在Android平台上,`MediaPlayer`类是系统提供的一个核心组件,用于播放各种音频和视频文件,包括MP3格式。本文将详细讲解如何使用`MediaPlayer`来播放SDCard中的MP3文件。 首先,理解`MediaPlayer`的基本用法至关...

    mediaplayer-5.9-viral

    1. **多媒体播放器**: mediaplayer是一款用于播放音频和视频文件的应用程序,它可以支持多种格式,如MP4、AVI、WMV、MP3等。这类软件通常需要解码器来处理不同的媒体格式。 2. **版本5.9**:软件版本号的更新通常...

Global site tag (gtag.js) - Google Analytics