现代智能手机无论是android、IOS、Windows phone8,其媒体播放器都是必不可少。
Android的MediaPlayer包含了Audio和video的播放功能,本案例我们学习如何使用Android的MediaPlayer播放MP3。
一、设计界面
1、首先把play.png、pause.png、stop.png三张图片复制到res/drawable-hdpi文件夹内。
2、再者把coffee.mp3复制到res/raw文件夹内。
3、布局文件
打开activity_main.xml文件。
输入以下代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageButton
android:id="@+id/play"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/play" />
<ImageButton
android:id="@+id/pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/pause" />
<ImageButton
android:id="@+id/stop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/stop" />
<TextView
android:id="@+id/prompt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="提示信息" />
</LinearLayout>
二、程序文件
打开“src/com.genwoxue.mp3/MainActivity.java”文件。
然后输入以下代码:
package com.genwoxue.mp3;
import android.app.Activity;
import android.os.Bundle;
import android.media.MediaPlayer;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;
public class MainActivity extends Activity {
private ImageButton btnPlay,btnPause,btnStop;
private TextView tvPrompt;
private MediaPlayer mpPlayer;
//声明一个变量判断是否为暂停,默认为false
private boolean isPaused = false;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获得btnPlay、btnPause、btnStop和tvPrompt通过findViewById找到资源
btnPlay = (ImageButton)findViewById(R.id.play);
btnPause = (ImageButton)findViewById(R.id.pause);
btnStop = (ImageButton)findViewById(R.id.stop);
tvPrompt = (TextView)findViewById(R.id.prompt);
//创建MediaPlayer对象,将raw文件夹下的coffee.mp3
mpPlayer = MediaPlayer.create(this,R.raw.coffee);
//设置播放监听事件
btnPlay.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mpPlayer != null){
mpPlayer.stop();
}
mpPlayer.prepare();
mpPlayer.start();
tvPrompt.setText("音乐播放中...");
}
catch (Exception e) {
tvPrompt.setText("播放发生异常...");
e.printStackTrace();
}
}
});
//设置暂停监听事件
btnPause.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mpPlayer !=null){
mpPlayer.stop();
tvPrompt.setText("音乐停止播放...");
}
}
catch (Exception e) {
tvPrompt.setText("音乐停止发生异常...");
e.printStackTrace();
}
}
});
//设置停止监听事件
btnStop.setOnClickListener(new ImageButton.OnClickListener(){
@Override
public void onClick(View v) {
try {
if(mpPlayer !=null){
if(isPaused==false){
mpPlayer.pause();
isPaused=true;
tvPrompt.setText("停止播放!");
}
else if(isPaused==true){
mpPlayer.start();
isPaused = false;
tvPrompt.setText("开始播发!");
}
}
}
catch (Exception e) {
tvPrompt.setText("发生异常...");
e.printStackTrace();
}
}
});
//设置MediaPlayer播放完毕事件
mpPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
// @Override
public void onCompletion(MediaPlayer arg0){
try{
//释放MediaPlayer资源
mpPlayer.release();
tvPrompt.setText("音乐播发结束!");
}
catch (Exception e){
tvPrompt.setText(e.toString());
e.printStackTrace();
}
}
});
//设置MediaPlayer错误监听事件
mpPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener(){
@Override
public boolean onError(MediaPlayer arg0, int arg1, int arg2){
// TODO Auto-generated method stub
try{
//发生错误时,释放资源
mpPlayer.release();
tvPrompt.setText("播放发生异常!");
}
catch (Exception e){
tvPrompt.setText(e.toString());
e.printStackTrace();
}
return false;
}
});
}
}
三、运行结果
单击“播放”按钮,一段优美的“走过咖啡屋”歌声从这里就开始了。