`

MediaPlayer 播放音乐例子

阅读更多
最近使用MediaPlayer 实现播放 静态资源文件,即res目录下raw目录下的文件

实现连续播放:
mMediaPlayer = MediaPlayer.create(this, res);
// 播放完毕后,设置监听事件
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 播完一首之后进行下一首
mp.release();
nextMusic();
}

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

import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;

public class ActivityMain extends ListActivity {

// 定义 按钮
private ImageButton mFrontImageButton = null;
private ImageButton mStopImageButton = null;
private ImageButton mStartImageButton = null;
private ImageButton mPauseImageButton = null;
private ImageButton mNextImageButton = null;
// 声明MediaPlayer mMediaPlayer
private MediaPlayer mMediaPlayer = null;
// 播放列表
private List<Integer> mMusicList = new ArrayList<Integer>();
// 当前播放歌曲的索引
private int currentListItem = 0;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 更新显示播放列表
musicList();
// 构建MediaPlayer对象,以及ImageButton
mMediaPlayer = new MediaPlayer();

mFrontImageButton = (ImageButton) this
.findViewById(R.id.LastImageButton);
mStopImageButton = (ImageButton) this
.findViewById(R.id.stopImageButton);
mStartImageButton = (ImageButton) this
.findViewById(R.id.StartImageButton);
mPauseImageButton = (ImageButton) this
.findViewById(R.id.PauseImageButton);
mNextImageButton = (ImageButton) this
.findViewById(R.id.NextImageButton);

// 停止按钮
mStopImageButton.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {
// 判断是否正在播放
if (mMediaPlayer.isPlaying()) {
// 重置MediaPlayer到初始化状态
mMediaPlayer.reset();
}

}

});

// 开始按钮
mStartImageButton.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {
playMusic(mMusicList.get(currentListItem));

}

});

// 暂停
mPauseImageButton.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {
if (mMediaPlayer.isPlaying()) {
// 暂停
mMediaPlayer.pause();
} else {
// 开始播放
mMediaPlayer.start();
}
}

});

// 下一首
mNextImageButton.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {
nextMusic();
}

});

// 上一首
mFrontImageButton.setOnClickListener(new ImageButton.OnClickListener() {

public void onClick(View v) {
FrontMusic();
}

});

}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
mMediaPlayer.stop();
mMediaPlayer.release();
this.finish();
return true;
}
return super.onKeyDown(keyCode, event);
}

// 录点击列表是,播放被点击的音乐
protected void onListItemClick(ListView l, View v, int position, long id) {
currentListItem = position;
playMusic(mMusicList.get(position));
}

// 播放列表
private void musicList() {
try {
// 取得指定位置的文件设置显示到播放列表
mMusicList.add(R.raw.rmb1);
mMusicList.add(R.raw.rmb2);
mMusicList.add(R.raw.rmb3);
mMusicList.add(R.raw.rmb4);
mMusicList.add(R.raw.rmb5);
mMusicList.add(R.raw.rmb6);
mMusicList.add(R.raw.rmb7);
mMusicList.add(R.raw.rmb8);
mMusicList.add(R.raw.rmb9);
mMusicList.add(R.raw.rmb0);
ArrayAdapter<Integer> musicList = new ArrayAdapter<Integer>(
this, R.layout.musicitme, mMusicList);
setListAdapter(musicList);
} catch (Exception ex) {
ex.printStackTrace();
}
}

// 播放音乐
private void playMusic(Integer res) {
try {
// 重置MediaPlayer
mMediaPlayer = MediaPlayer.create(this, res);
// 准备播放
//mMediaPlayer.prepare();
// 开始播放
mMediaPlayer.start();
// 播放完毕后,设置监听事件
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
// 播完一首之后进行下一首
mp.release();
nextMusic();
}

});
}catch (Exception e) {
e.printStackTrace();
}
}

// 下一首
private void nextMusic() {
if (++currentListItem >= mMusicList.size()) {
// currentListItem = 0;
// playMusic(mMusicList.get(currentListItem));// 从第一首歌开始播放
} else {
playMusic(mMusicList.get(currentListItem));
}
}

// 上一首
private void FrontMusic() {

if (--currentListItem > 0) {
playMusic(mMusicList.get(currentListItem));
} else {
// 如果当前currentListItem等于-1,则设置currentListItem=0
// if (currentListItem < 0) {
// currentListItem = 0;
// }
// playMusic(mMusicList.get(currentListItem));
}

}


}
-----------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageButton android:id="@+id/LastImageButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_x="10px" android:layout_y="70px" android:src="@drawable/last" />

<ImageButton android:id="@+id/stopImageButton"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_x="70px" android:layout_y="70px" android:src="@drawable/stop" />
<ImageButton android:id="@+id/StartImageButton"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_x="130px" android:layout_y="70px" android:src="@drawable/start" />

<ImageButton android:id="@+id/PauseImageButton"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_x="190px" android:layout_y="70px" android:src="@drawable/pause" />
<ImageButton android:id="@+id/NextImageButton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_x="250px" android:layout_y="70px" android:src="@drawable/next" />
<ListView android:id="@id/android:list" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_weight="1"
android:drawSelectorOnTop="false" />
</AbsoluteLayout>
---------------------
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/TextView01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
  />
分享到:
评论

相关推荐

    Android MediaPlayer播放mp3的实例.doc

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

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

    本实例主要讲解如何使用`MediaPlayer`播放存储在`res/raw`文件夹内的音乐文件。 1. **创建资源文件夹:** 首先,在项目的`res`目录下创建一个新的文件夹`raw`。这个文件夹专门用来存放资源文件,如音频、视频等。...

    android-mediaplayer_android源码_

    - 系统服务通信:Android通过Binder机制进行跨进程通信,`MediaPlayer`与MediaServer之间的通信就是典型例子。 - 媒体数据解码:了解不同格式的音频和视频如何被解码为原始数据,以及这些数据如何被发送到硬件进行...

    MediaPlayer Demo

    在Android开发中,`...总的来说,`MediaPlayer Demo` 是一个学习和理解 Android 音频播放功能的好例子,通过这个示例,开发者可以了解到如何在自己的应用程序中集成音乐播放功能,为用户提供丰富的媒体体验。

    Android应用源码之(MediaPlayer音乐).zip

    在Android平台上,开发音乐播放应用是一项常见的任务,而`MediaPlayer`类是Android SDK提供的一种用于播放音频和视频的内置组件。本压缩包“Android应用源码之(MediaPlayer音乐)”提供了有关如何使用`MediaPlayer`...

    android service音乐播放例子.rar

    1. 启动Service:通过startService()方法从Activity或其他组件启动Service,播放音乐。 2. 绑定Service:通过bindService()方法与Service建立连接,获取到IBinder接口,可以在Activity中直接控制Service。 七、服务...

    android特色开发例子

    5. `releaseResource()`: 释放资源函数,当不再需要播放音乐时,调用`MediaPlayer`的`release()`方法来释放占用的系统资源,防止内存泄漏。 最后,`listener()`方法中设置的事件监听器使得按钮与音乐播放函数关联,...

    Android soundpool播放音乐声音池应用举例.rar

    这个基础例子展示了如何使用SoundPool播放音乐,你可以根据需要扩展这个示例,比如添加音量控制、播放进度条、暂停和恢复功能等,从而构建一个完整的音乐播放器。在实际的音频处理应用中,理解并熟练运用SoundPool...

    后台播放音乐

    在iOS平台上,实现后台播放音乐并确保在锁屏后仍能显示音乐信息是一项重要的功能,尤其对于音乐类应用而言。为了实现这一目标,开发者需要掌握iOS的多媒体框架(Multimedia Framework)以及相关的系统服务。本篇文章...

    声音音乐例子

    ### 一、使用MediaPlayer播放音频 #### 1.1 MediaPlayer简介 `MediaPlayer`是Android提供的一种用于播放音频和视频媒体文件的类。它支持多种媒体格式,并且能够播放网络上的流媒体。本例中主要关注的是其播放音频...

    Android MediaPlayer 简单综合应用.doc

    在这个例子中,我们学会了如何读取SD卡上的.mp3文件,创建ListView显示文件列表,以及使用MediaPlayer进行播放。注意在实际应用中,还需要处理播放状态的控制(如暂停、停止、前进、后退等),以及错误处理和资源...

    android开发十大经典例子

    RockPlayer可能是实现一个音乐播放器的实例,涉及到音频流播放,播放列表管理,以及可能的音频效果处理。这可能需要对MediaPlayer或AudioTrack类有深入理解。 10. **自定义服务(SpeakMessageService)** ...

    Android Studio音乐播放器简单例子

    - 要在Android应用中播放音乐,可以使用`MediaPlayer`类,它是Android SDK中内置的媒体播放组件,支持播放音频和视频文件。 - `MediaPlayer`类提供了如`setDataSource()`(设置数据源)、`prepare()`(准备播放)...

    Android自定义音乐播放器的代码例子

    Android自定义音乐播放器的代码例子。支持展示音乐列表、滚动歌词,以及控制栏操作,另附演示用的一剪梅歌曲与歌词。另外演示了MediaRecorder/MediaPlayer组合、AudioRecord/AudioTrack,以及SoundPool对音频的处理...

    QT实现播放wav格式音乐文件

    编译项目后,WAV文件会被嵌入到最终的可执行文件中,这样即使在没有原始WAV文件的环境中,程序也能正常播放音乐。 需要注意的是,QMediaPlayer在播放某些WAV文件时可能会遇到问题,因为WAV格式支持多种编码和采样率...

    android 音乐播放,播放一首mp3文件 ,mp3放在rew文件里

    **Service**: 在Android系统中,Service是一种在后台运行的组件,它不具有用户界面,可以执行长时间的操作,如播放音乐。在音乐播放应用中,我们通常创建一个Service来控制音乐播放,因为它可以在应用程序的前台或...

    android应用程序小例子

    例如,我们可以通过HttpURLConnection或OkHttp库实现网络请求,通过SQLite数据库管理本地数据,通过MediaPlayer类播放音频和视频。 服务(Service)是Android中一种在后台运行的组件,常用于执行长时间的任务,如...

    android service的小例子

    总结起来,这个“android service的小例子”展示了如何创建一个简单的播放器Service,它能够在后台持续播放音乐,即使用户离开应用。通过学习这个例子,初学者可以理解Service的基本概念和生命周期管理,以及如何在...

    delphi xe 开发的播放器示例,Android

    标签 "android 播放器" 确定了应用的主要功能,即在 Android 设备上播放音乐。在 Android 应用开发中,播放音频通常涉及到使用 Media Framework 或者其他音频处理库,如 Android SDK 中的 MediaPlayer 类。 在提供...

Global site tag (gtag.js) - Google Analytics