今天来看一个关于音乐播放器的Android开发。MediaPlayer类可以用来播放音频,视屏和流媒体,下面我们说一下音频的播放。Medaiplayer有它的生命周期,这个可以到网上找找看看这里简单的一说,任何MediaPlayer对象都必须先处于准备状态,然后才开始播放。要开始播放MediaPlayer对象都必须调用start()方法。并且我们可以通过isPlaying()方法来检测是否正在播放。MediaPlayer对象在播放时可以进行暂停和停止操作分别用pause()方法和stop()方法,处于暂停状态时,我们可以用start()方法来恢复播放,但是当处于停止状态时则必须先调用pause()方法使其处于准备状态,然后再通过start()方法来开始播放,当然我们也可以重新创建一个MediaPlayer来播放。在MediaPlayer中我们有两大设置文件路径的方法,一种是setDataSource(),另一种就是今天用到的create方法来创建一个指定的资源索引的MediaPlayer对象,下面我们就来做一个简单的音乐播放软件步骤如下:
1 我们要建立一个Android的工程,这个就不废话了,然后在res文件夹下新建立一个raw文件夹,这里注意必须是这个文件名。因为在早期这个好像是和drawable以及layout 文件夹一样自动生成的,现在做了一些变动。然后把我们要的音乐通过复制粘贴到这个文件夹了,这里我们粘贴一个test.mp3的音乐文件(还应注意我们这个音乐文件不能太大,因为它是直接打包到这个软件里的,太大可能无法播放具体原因不是很清楚,但我试过不能成功播放,太大的我们应该放到存储卡里通过setDataSource()来访问,这里不多说了)。
2.在Layout文件夹里布局好三个按钮和一个TextView
3我们就开始写代码文件了:
package com.nextMedia;
import java.io.IOException;
import java.nio.channels.IllegalSelectorException;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.*;
public class Activity01 extends Activity {
private Button StopButton;
private Button StartButton;
private Button PauseButton;
private TextView mTextView;
private boolean bIsReleased = false;
private boolean bIsPaused = false;
private boolean bIsPlaying = false;
public MediaPlayer mMediaPlayer = new MediaPlayer();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StopButton = (Button) this.findViewById(R.id.button1);
StopButton .setText("停止");
StartButton = (Button )this.findViewById(R.id.button2);
StartButton.setText("开始");
PauseButton = (Button)this.findViewById(R.id.button3);
PauseButton.setText("暂停");
mTextView = (TextView) this.findViewById(R.id.textView1);
//播放音乐
StartButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
try {
if(!bIsPlaying){
bIsPlaying = true;
// 加载资源中的音乐
mMediaPlayer = MediaPlayer.create(Activity01.this, R.raw.test);
bIsReleased = false;
// 设置是否循环播放
mMediaPlayer.setLooping(true);
try{
//播放对象准备就绪
mMediaPlayer.prepare();
}catch(IllegalStateException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
//开始播放
mMediaPlayer.start();
mTextView.setText("正在播放");
}
} catch(IllegalStateException e){
e.printStackTrace();
}mMediaPlayer.setOnCompletionListener(new
OnCompletionListener()
{
@Override
//这里是一个音乐播放完事件的方法,告诉播放器音乐播放完了该干什么,必须有这个函数
public void onCompletion(MediaPlayer mp) {
//把这个对象释放掉
mMediaPlayer.release();
}
});
//停止音乐
StopButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
if(!bIsReleased){
//音乐停止
mMediaPlayer.stop();
//释放对象资源
mMediaPlayer.release();
bIsReleased = true;
}
bIsPlaying = false;
mTextView.setText("当前处于停止状态,请按开始键进行音乐播放");
}
});
}
});
PauseButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
if(mMediaPlayer != null)
{
if(bIsReleased ==false)
{
if(bIsPaused ==false)
{
//音乐暂停
mMediaPlayer.pause();
bIsPaused = true;
bIsPlaying = true;
mTextView.setText("已经暂停,请再按一下暂停按钮恢复播放");
}else if(bIsPaused ==true)
{
//音乐重新播放
mMediaPlayer.start();
bIsPaused = false;
mTextView.setText("音乐恢复播放");
}
}
}
}
});
}
public boolean onKeyDown(int keyCode,KeyEvent event)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
{
if(!bIsReleased){
mMediaPlayer.stop();
mMediaPlayer.release();
bIsReleased = true;
}
this.finish();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}
好了,这个程序完成了,其实回头看看挺简单的就几个方法和函数,但是如果要做一个音乐播放器就不能这样做了,这个方法基本是只用于一个软件本身内部的音乐效果,比如一个游戏的声音特效的控制。最后还是那句话,如果这个程序出现了问题请给我联系,留言或QQ 1056255918 ,小编会及时解决,也希望与喜欢Java和Android的童鞋一起交流合作。谢谢