久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Android 中級(jí)教程之------Android MediaPlayer播放mp3的實(shí)...

 liluvu 2010-11-16

大家好我們今天研究的是Android中很重要也最為復(fù)雜的媒體播放器---MediaPlayer.

Android的MediaPlayer包含了Audio和video的播放功能,,在Android的界面上,Music和Video兩個(gè)應(yīng)用程序都是調(diào)用MediaPlayer實(shí)現(xiàn)的,。

  MediaPlayer在底層是基于OpenCore(PacketVideo)的庫(kù)實(shí)現(xiàn)的,,為了構(gòu)建一個(gè)MediaPlayer程序,上層還包含了進(jìn)程間通訊等內(nèi)容,,這種進(jìn)程間通訊的基礎(chǔ)是Android基本庫(kù)中的Binder機(jī)制,。

而我們今天的例子只是利用MediaPlayer來(lái)播放res/raw文件夾中一首非常動(dòng)聽的英文哥love fool.mp3.程序有三個(gè)ImageButton按鈕,播放,停止,和暫停!三個(gè)按鈕的功能我就不用多說(shuō).下面我將Step By Step教你如何完成本Demo的實(shí)現(xiàn).

Step 1 :新建一個(gè)Android工程,命名為MediaPlayerDemo.

Step 2 :準(zhǔn)備素材,在res下建一個(gè)raw文件夾,將foollove.mp3導(dǎo)入,將play.png,pause.png,及stop.png導(dǎo)入res/drawable文件夾下.

Step 3: 設(shè)計(jì)UI布局,在main.xml里放入三個(gè)ImageButton(這里可以用AbsoluteLayout,或者RelativeLayout實(shí)現(xiàn),我用后者).代碼如下:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout 
  3.   android:layout_width="fill_parent" 
  4.   android:layout_height="fill_parent" 
  5.   android:background="@drawable/white" 
  6.   xmlns:android="http://schemas./apk/res/android " 
  7. > 
  8.   <TextView 
  9.     android:id="@+id/myTextView1" 
  10.     android:layout_width="wrap_content" 
  11.     android:layout_height="wrap_content" 
  12.     android:text="@string/hello" 
  13.     android:layout_alignParentTop="true" 
  14.     android:layout_alignParentLeft="true" 
  15.   > 
  16.   </TextView> 
  17.   <ImageButton 
  18.     android:id="@+id/myButton1" 
  19.     android:layout_width="wrap_content" 
  20.     android:layout_height="wrap_content" 
  21.     android:src="@drawable/play" 
  22.     android:layout_below="@+id/myTextView1" 
  23.   > 
  24.   </ImageButton> 
  25.   <ImageButton 
  26.     android:id="@+id/myButton3" 
  27.     android:layout_width="wrap_content" 
  28.     android:layout_height="wrap_content" 
  29.     android:src="@drawable/pause" 
  30.     android:layout_alignTop="@+id/myButton1" 
  31.     android:layout_toRightOf="@+id/myButton1" 
  32.   > 
  33.   </ImageButton> 
  34.   <ImageButton 
  35.     android:id="@+id/myButton2" 
  36.     android:layout_width="wrap_content" 
  37.     android:layout_height="wrap_content" 
  38.     android:src="@drawable/stop" 
  39.     android:layout_alignTop="@+id/myButton1" 
  40.     android:layout_toRightOf="@+id/myButton3" 
  41.   > 
  42.   </ImageButton> 
  43. </RelativeLayout> 
  44.  

Step 4 :主控制程序MediaPlayerDemo.java的實(shí)現(xiàn),代碼如下:

  1. package com.android.test;  
  2.  
  3. import android.app.Activity;  
  4. import android.media.MediaPlayer;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.widget.ImageButton;  
  8. import android.widget.TextView;  
  9.  
  10. public class MediaPlayerDemo extends Activity {  
  11.      
  12.  private ImageButton mb1,mb2,mb3;  
  13.  private TextView tv;  
  14.  private MediaPlayer mp;  
  15.  //聲明一個(gè)變量判斷是否為暫停,默認(rèn)為false  
  16.  private boolean isPaused = false;  
  17.     public void onCreate(Bundle savedInstanceState) {  
  18.         super.onCreate(savedInstanceState);  
  19.         setContentView(R.layout.main);  
  20.           
  21.         //通過(guò)findViewById找到資源  
  22.         mb1 = (ImageButton)findViewById(R.id.myButton1);  
  23.         mb2 = (ImageButton)findViewById(R.id.myButton2);  
  24.         mb3 = (ImageButton)findViewById(R.id.myButton3);  
  25.         tv = (TextView)findViewById(R.id.myTextView1);  
  26.           
  27.         //創(chuàng)建MediaPlayer對(duì)象,將raw文件夾下的lovefool.mp3  
  28.         mp = MediaPlayer.create(this,R.raw.lovefool);  
  29.         //增加播放音樂(lè)按鈕的事件  
  30.         mb1.setOnClickListener(new ImageButton.OnClickListener(){  
  31.    @Override 
  32.    public void onClick(View v) {  
  33.     try {       
  34.      if(mp != null)  
  35.      {  
  36.       mp.stop();  
  37.      }      
  38.      mp.prepare();  
  39.      mp.start();  
  40.      tv.setText("音樂(lè)播放中...");  
  41.     } catch (Exception e) {  
  42.      tv.setText("播放發(fā)生異常...");  
  43.      e.printStackTrace();  
  44.     }      
  45.    }        
  46.         });  
  47.           
  48.         mb2.setOnClickListener(new ImageButton.OnClickListener(){  
  49.    @Override 
  50.    public void onClick(View v) {  
  51.     try {  
  52.      if(mp !=null)  
  53.      {  
  54.       mp.stop();  
  55.       tv.setText("音樂(lè)停止播放...");  
  56.      }  
  57.     } catch (Exception e) {  
  58.      tv.setText("音樂(lè)停止發(fā)生異常...");  
  59.      e.printStackTrace();  
  60.     }  
  61.       
  62.    }           
  63.         });  
  64.           
  65.         mb3.setOnClickListener(new ImageButton.OnClickListener(){  
  66.    @Override 
  67.    public void onClick(View v) {  
  68.     try {  
  69.      if(mp !=null)  
  70.      {  
  71.       if(isPaused==false)  
  72.       {  
  73.        mp.pause();  
  74.        isPaused=true;  
  75.        tv.setText("停止播放!");  
  76.       }  
  77.       else if(isPaused==true)  
  78.       {  
  79.        mp.start();  
  80.        isPaused = false;  
  81.        tv.setText("開始播發(fā)!");  
  82.       }  
  83.      }  
  84.     } catch (Exception e) {  
  85.      tv.setText("發(fā)生異常...");  
  86.      e.printStackTrace();  
  87.     }  
  88.       
  89.    }           
  90.         });  
  91.           
  92.         /* 當(dāng)MediaPlayer.OnCompletionLister會(huì)運(yùn)行的Listener */ 
  93.         mp.setOnCompletionListener(  
  94.           new MediaPlayer.OnCompletionListener()   
  95.         {   
  96.           // @Override   
  97.           /*覆蓋文件播出完畢事件*/ 
  98.           public void onCompletion(MediaPlayer arg0)   
  99.           {   
  100.             try   
  101.             {   
  102.               /*解除資源與MediaPlayer的賦值關(guān)系  
  103.                * 讓資源可以為其它程序利用*/ 
  104.               mp.release();   
  105.               /*改變TextView為播放結(jié)束*/ 
  106.               tv.setText("音樂(lè)播發(fā)結(jié)束!");   
  107.             }   
  108.             catch (Exception e)   
  109.             {   
  110.               tv.setText(e.toString());   
  111.               e.printStackTrace();   
  112.             }   
  113.           }   
  114.         });   
  115.            
  116.         /* 當(dāng)MediaPlayer.OnErrorListener會(huì)運(yùn)行的Listener */ 
  117.         mp.setOnErrorListener(new MediaPlayer.OnErrorListener()  
  118.         {  
  119.           @Override 
  120.           /*覆蓋錯(cuò)誤處理事件*/ 
  121.           public boolean onError(MediaPlayer arg0, int arg1, int arg2)  
  122.           {  
  123.             // TODO Auto-generated method stub  
  124.             try 
  125.             {  
  126.               /*發(fā)生錯(cuò)誤時(shí)也解除資源與MediaPlayer的賦值*/ 
  127.               mp.release();  
  128.               tv.setText("播放發(fā)生異常!");  
  129.             }  
  130.             catch (Exception e)  
  131.             {  
  132.               tv.setText(e.toString());   
  133.               e.printStackTrace();   
  134.             }   
  135.             return false;   
  136.           }   
  137.         });   
  138.       }   
  139.     
  140. }  
  141.  
  142.  
  143.  
  144.  
  145.  

Step 5: 運(yùn)行效果如下,一首動(dòng)聽的love fool在播放...享受中...

    

   

擴(kuò)散學(xué)習(xí):

如果我們想播放手機(jī)卡里的音樂(lè),或者URL下載流媒體來(lái)播放,示意程序如下:

  1. MediaPlayer mp = new MediaPlayer();   
  2.  
  3. mp.setDataSource(String URL/FILE_PATH);   
  4.  
  5. mp.prepare();   
  6.  
  7. mp.start();   
  8.  

以上程序主要是通過(guò)MediaPlayer.setDataSource() 的方法,將URL或文件路徑以字符串的方式傳入.使用setDataSource ()方法時(shí),要注意以下三點(diǎn):

1.構(gòu)建完成的MediaPlayer 必須實(shí)現(xiàn)Null 對(duì)像的檢查.

2.必須實(shí)現(xiàn)接收IllegalArgumentException 與IOException 等異常,在很多情況下,你所用的文件當(dāng)下并不存在.

3.若使用URL 來(lái)播放在線媒體文件,該文件應(yīng)該要能支持pragressive 下載.

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多