第54章、播放音频(从零开始学Android)

来源:互联网 发布:seo最牛的人 编辑:程序博客网 时间:2024/06/07 05:34

  现代智能手机无论是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;                   }                });             }             }    


三、运行结果

  

  单击“播放”按钮,一段优美的“走过咖啡屋”歌声从这里就开始了。