Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android技術基礎 >> 第54章、播放音頻(從零開始學Android)

第54章、播放音頻(從零開始學Android)

編輯:Android技術基礎

現代智能手機無論是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文件。

輸入以下代碼:

[html] view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2.   
  3. <LinearLayout   
  4.     xmlns:android="http://schemas.android.com/apk/res/android"  
  5.     android:layout_width="match_parent"     
  6.     android:layout_height="match_parent"     
  7.     android:orientation="vertical">     
  8.       
  9.     <ImageButton       
  10.         android:id="@+id/play"       
  11.         android:layout_width="wrap_content"       
  12.         android:layout_height="wrap_content"       
  13.         android:src="@drawable/play" />   
  14.          
  15.               
  16.     <ImageButton       
  17.         android:id="@+id/pause"       
  18.         android:layout_width="wrap_content"       
  19.         android:layout_height="wrap_content"     
  20.         android:src="@drawable/pause" />   
  21.       
  22.               
  23.     <ImageButton       
  24.         android:id="@+id/stop"       
  25.         android:layout_width="wrap_content"       
  26.         android:layout_height="wrap_content"    
  27.         android:src="@drawable/stop" />   
  28.           
  29.     <TextView       
  30.         android:id="@+id/prompt"       
  31.         android:layout_width="wrap_content"       
  32.         android:layout_height="wrap_content"       
  33.         android:text="提示信息" />  
  34.   
  35. </LinearLayout>   


二、程序文件

打開“src/com.genwoxue.mp3/MainActivity.java”文件。

然後輸入以下代碼:

[java] view plain copy  
  1. package com.genwoxue.mp3;  
  2.   
  3. import android.app.Activity;   
  4. import android.os.Bundle;  
  5. import android.media.MediaPlayer;  
  6. import android.view.View;   
  7. import android.widget.ImageButton;   
  8. import android.widget.TextView;   
  9.   
  10.   
  11. public class MainActivity extends Activity {  
  12.       
  13.       private ImageButton btnPlay,btnPause,btnStop;     
  14.       private TextView tvPrompt;     
  15.       private MediaPlayer mpPlayer;     
  16.         
  17.       //聲明一個變量判斷是否為暫停,默認為false     
  18.       private boolean isPaused = false;     
  19.         
  20.       public void onCreate(Bundle savedInstanceState) {  
  21.           super.onCreate(savedInstanceState);            
  22.           setContentView(R.layout.activity_main);     
  23.             
  24.           //獲得btnPlay、btnPause、btnStop和tvPrompt通過findViewById找到資源           
  25.           btnPlay = (ImageButton)findViewById(R.id.play);            
  26.           btnPause = (ImageButton)findViewById(R.id.pause);            
  27.           btnStop = (ImageButton)findViewById(R.id.stop);            
  28.           tvPrompt = (TextView)findViewById(R.id.prompt);    
  29.             
  30.           //創建MediaPlayer對象,將raw文件夾下的coffee.mp3            
  31.           mpPlayer = MediaPlayer.create(this,R.raw.coffee);            
  32.             
  33.           //設置播放監聽事件          
  34.           btnPlay.setOnClickListener(new ImageButton.OnClickListener(){       
  35.               @Override      
  36.               public void onClick(View v) {        
  37.                   try {              
  38.                       if(mpPlayer != null){  
  39.                           mpPlayer.stop();         
  40.                       }             
  41.                         
  42.                       mpPlayer.prepare();         
  43.                       mpPlayer.start();         
  44.                       tvPrompt.setText("音樂播放中...");        
  45.                   }   
  46.                   catch (Exception e) {         
  47.                       tvPrompt.setText("播放發生異常...");         
  48.                       e.printStackTrace();        
  49.                   }           
  50.              }                  
  51.           });                      
  52.             
  53.           //設置暫停監聽事件          
  54.           btnPause.setOnClickListener(new ImageButton.OnClickListener(){       
  55.               @Override      
  56.               public void onClick(View v) {        
  57.                   try {         
  58.                       if(mpPlayer !=null){          
  59.                           mpPlayer.stop();          
  60.                           tvPrompt.setText("音樂停止播放...");         
  61.                        }        
  62.                   }  
  63.                   catch (Exception e) {         
  64.                       tvPrompt.setText("音樂停止發生異常...");         
  65.                       e.printStackTrace();        
  66.                   }             
  67.               }                     
  68.           });                      
  69.             
  70.           //設置停止監聽事件          
  71.           btnStop.setOnClickListener(new ImageButton.OnClickListener(){       
  72.               @Override      
  73.               public void onClick(View v) {        
  74.                   try {         
  75.                       if(mpPlayer !=null){          
  76.                           if(isPaused==false){           
  77.                               mpPlayer.pause();           
  78.                               isPaused=true;           
  79.                               tvPrompt.setText("停止播放!");          
  80.                           }          
  81.                           else if(isPaused==true){           
  82.                               mpPlayer.start();           
  83.                               isPaused = false;           
  84.                               tvPrompt.setText("開始播發!");          
  85.                           }        
  86.                       }        
  87.                    }   
  88.                   catch (Exception e) {         
  89.                       tvPrompt.setText("發生異常...");         
  90.                       e.printStackTrace();        
  91.                    }             
  92.             }                     
  93.           });                     
  94.             
  95.           //設置MediaPlayer播放完畢事件    
  96.           mpPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){               
  97.               // @Override               
  98.               public void onCompletion(MediaPlayer arg0){                 
  99.                   try{                   
  100.                       //釋放MediaPlayer資源                 
  101.                       mpPlayer.release();                   
  102.                       tvPrompt.setText("音樂播發結束!");                 
  103.                   }                 
  104.                   catch (Exception e){                   
  105.                       tvPrompt.setText(e.toString());                   
  106.                       e.printStackTrace();                 
  107.                   }               
  108.               }             
  109.            });                        
  110.             
  111.           //設置MediaPlayer錯誤監聽事件           
  112.           mpPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener(){              
  113.               @Override             
  114.               public boolean onError(MediaPlayer arg0, int arg1, int arg2){                
  115.                   // TODO Auto-generated method stub                
  116.                   try{                  
  117.                       //發生錯誤時,釋放資源                 
  118.                       mpPlayer.release();                  
  119.                       tvPrompt.setText("播放發生異常!");                
  120.                   }                
  121.                   catch (Exception e){                  
  122.                       tvPrompt.setText(e.toString());                   
  123.                       e.printStackTrace();                 
  124.                   }                 
  125.                   return false;               
  126.               }             
  127.          });           
  128.     }         
  129.                 
  130. }  
  131.           


三、運行結果

\

單擊“播放”按鈕,一段優美的“走過咖啡屋”歌聲從這裡就開始了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved