小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

從頭學(xué)Android之多媒體--使用MediaPlayer播放音頻

 edwinningb 2012-08-17
MediaPlayer類

靜態(tài)構(gòu)造方法

方法名稱

描述

public static MediaPlayer create(Context context, Uri uri, SurfaceHolder holder)

指定從資源ID對(duì)應(yīng)的資源文件中來(lái)裝載音樂(lè)文件,同時(shí)指定了SurfaceHolder對(duì)象并返回MediaPlyaer對(duì)象

public static MediaPlayer create(Context context, int resid)

指定從資源ID對(duì)應(yīng)的資源文件中來(lái)裝載音樂(lè)文件,并返回MediaPlyaer對(duì)象

public static MediaPlayer create(Context context, Uri uri)

指定從Uri對(duì)應(yīng)的資源文件中來(lái)裝載音樂(lè)文件,并返回MediaPlyaer對(duì)象

 

常用方法

方法名稱

描述

public void start ()

開始或恢復(fù)播放

public void stop()

停止播放

public void pause()

暫停播放

public void setDataSource (String path)

從指定的裝載path路徑所代表的文件

public void setDataSource (FileDescriptor fd, long offset, long length)

指定裝載fd所代表的文件中從offset開始、長(zhǎng)度為length的文件內(nèi)容

public void setDataSource (FileDescriptor fd)

指定裝載fd所代表的文件

public void setDataSource (Context context, Uri uri)

指定裝載uri所代表的文件

public void setDataSource (Context context, Uri uri, Map<String, String> headers)

指定裝載uri所代表的文件

public void prepare()

預(yù)期準(zhǔn)備,因?yàn)閟etDataSource()方法之后,MediaPlayer并未真正的去裝載那些音頻文件,需要調(diào)用prepare()這個(gè)方法去準(zhǔn)備音頻

public void setLooping(boolean looping)

設(shè)置是否循環(huán)播放這個(gè)音樂(lè)文件

public void setSurface(Surface surface)

設(shè)置Surface

public void setVolume(float leftVolume,float rightVolume)

設(shè)置音量

public void setDisplay(SurfaceHolder sh)

設(shè)置顯示方式

public void seekTo(int mses)

尋求指定的時(shí)間位置。

public void isLooping()

判斷是否循環(huán)播放

public void isPlaying()

判斷是否正在播放

public void release()

釋放相關(guān)該MediaPlayer對(duì)象的資源。

 

綁定事件監(jiān)聽(tīng)器

監(jiān)聽(tīng)器

描述

public void setOnCompletionListener (MediaPlayer.OnCompletionListener listener)

為MediaPlayer的播放完成事件綁定事件監(jiān)聽(tīng)器

public void setOnErrorListener (MediaPlayer.OnErrorListener listener)

為MediaPlayer的播放錯(cuò)誤事件綁定事件監(jiān)聽(tīng)器

public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)

當(dāng)MediaPlayer調(diào)用prepare()方法時(shí)觸發(fā)該監(jiān)聽(tīng)器

public void setOnSeekCompleteListener (MediaPlayer.OnSeekCompleteListener listener)

當(dāng)MediaPlayer調(diào)用seek()方法的時(shí)候觸發(fā)該監(jiān)聽(tīng)器

 

播放音頻

1、播放應(yīng)用的資源文件(res/raw/)

通過(guò)我們上面介紹的幾個(gè)靜態(tài)構(gòu)造函數(shù)創(chuàng)建MediaPlayer對(duì)象

  1. MediaPlayer  mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,  
  2.   
  3.               R.raw.a1);  


 

2、播放應(yīng)用的原始資源文件(assets)

1)        通過(guò)Context.getAssets()方法獲得AssetManager對(duì)象

2)        通過(guò)AssetManager對(duì)象的openFd(String name)方法打開指定的原生資源文件夾,返回一個(gè)AssetFileDescriptor對(duì)象

3)        通過(guò)AssetFileDescriptor的getFileDescriptor()得到一個(gè)FileDescriptor對(duì)象

4)        通過(guò)public void setDataSource (FileDescriptor fd, long offset, long length)來(lái)創(chuàng)建MediaPlayer對(duì)象

5)        調(diào)用MediaPlayer.prepare()方法準(zhǔn)備音頻

6)        調(diào)用MediaPlayer的start()、pause()、stop()等方法控制

  1. AssetFileDescriptor fileDescriptor = assetManager  
  2.   
  3.                  .openFd("a2.mp3");  
  4.   
  5.             mediaPlayer = new MediaPlayer();  
  6.            mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),  
  7.                  fileDescriptor.getStartOffset(),  
  8.                  fileDescriptor.getLength());  
  9.             mediaPlayer.prepare();<p>                  mediaPlayer.start();</p>  

3、播放外部存儲(chǔ)上的音頻資源文件(sdcard)

1)        創(chuàng)建MediaPlayer對(duì)象,通過(guò)MediaPlayer對(duì)象的setDataSource(String path)方法裝載預(yù)定的音頻文件

2)        調(diào)用MediaPlayer對(duì)象的prepare()方法準(zhǔn)備音頻

3)        調(diào)用MediaPlayer的start()、pause()、stop()等方法控制

  1.     mediaPlayer = new MediaPlayer();  
  2.            mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");  
  3.            mediaPlayer.prepare();  
  4.            mediaPlayer.start();  
  5.   
  6.   
  7.    

4、播放網(wǎng)絡(luò)上的音頻文件

1)        根據(jù)網(wǎng)絡(luò)上的地址創(chuàng)建Uri對(duì)象

2)        通過(guò)public void setDataSource (Context context, Uri uri)設(shè)置音頻來(lái)源裝載音頻文件

3)        調(diào)用MediaPlayer對(duì)象的prepare()方法準(zhǔn)備音頻

4)        調(diào)用MediaPlayer的start()、pause()、stop()等方法控制

  1. mediaPlayer = new MediaPlayer();  
  2.   
  3.            // 通過(guò)Uri解析一個(gè)網(wǎng)絡(luò)地址  
  4.   
  5.            Uri uri = Uri  
  6.   
  7.                  .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");  
  8.   
  9.            mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);  
  10.   
  11.    
  12.   
  13.            mediaPlayer.prepare();  
  14.   
  15. mediaPlayer.start();  


 

當(dāng)然也可以通過(guò)我們的另一種靜態(tài)構(gòu)造方法直接創(chuàng)建一個(gè)MediaPlayer對(duì)象

  1. Uri uri = Uri  
  2.   
  3.               .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");  
  4.   
  5.   
  6.   
  7. mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,  
  8.   
  9.               uri);  
  10.   
  11.         mediaPlayer.start();  


 

實(shí)現(xiàn)效果:

 

貼上源代碼:

  1. package com.jiahui.media;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. public class MediaPlayerDemoActivity extends Activity implements  
  6.         OnClickListener {  
  7.   
  8.     private Button btnAppStart, btnAssetsStart, btnSdcardStart,  
  9.             btnNetworkStart;  
  10.   
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.   
  15.         btnAppStart = (Button) this.findViewById(R.id.btnAppStart);  
  16.         btnAssetsStart = (Button) this.findViewById(R.id.btnAssetsStart);  
  17.         btnSdcardStart = (Button) this.findViewById(R.id.btnSdcardStart);  
  18.         btnNetworkStart = (Button) this.findViewById(R.id.btnNetworkStart);  
  19.   
  20.         btnAppStart.setOnClickListener(this);  
  21.         btnAssetsStart.setOnClickListener(this);  
  22.         btnSdcardStart.setOnClickListener(this);  
  23.         btnNetworkStart.setOnClickListener(this);  
  24.   
  25.     }  
  26.   
  27.     @Override  
  28.     public void onClick(View v) {  
  29.         MediaPlayer mediaPlayer = null;  
  30.         switch (v.getId()) {  
  31.         case R.id.btnAppStart:  
  32.             System.out.println("---播放應(yīng)用的資源文件----");  
  33.             // 使用raw下的資源文件創(chuàng)建MediaPlayer對(duì)象  
  34.             mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,  
  35.                     R.raw.a1);  
  36.             mediaPlayer.start();  
  37.             break;  
  38.         case R.id.btnAssetsStart:  
  39.             System.out.println("---播放assest的資源文件----");  
  40.             AssetManager assetManager = this.getAssets();  
  41.             try {  
  42.                 AssetFileDescriptor fileDescriptor = assetManager  
  43.                         .openFd("a2.mp3");  
  44.                 mediaPlayer = new MediaPlayer();  
  45.                 mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),  
  46.                         fileDescriptor.getStartOffset(),  
  47.                         fileDescriptor.getLength());  
  48.   
  49.                 mediaPlayer.prepare();  
  50.                 mediaPlayer.start();  
  51.             } catch (IOException e) {  
  52.                 // TODO Auto-generated catch block  
  53.                 e.printStackTrace();  
  54.             }  
  55.             break;  
  56.         case R.id.btnSdcardStart:  
  57.             System.out.println("---播放SDcard上的文件---");  
  58.             try {  
  59.                 mediaPlayer = new MediaPlayer();  
  60.                 mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");  
  61.                 mediaPlayer.prepare();  
  62.                 mediaPlayer.start();  
  63.             } catch (Exception e) {  
  64.             }  
  65.             break;  
  66.         case R.id.btnNetworkStart:  
  67.             System.out.println("播放網(wǎng)絡(luò)上的音頻");  
  68.             // http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?  
  69.             // xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694  
  70.             try {  
  71.                 // mediaPlayer = new MediaPlayer();  
  72.                 // 通過(guò)Uri解析一個(gè)網(wǎng)絡(luò)地址  
  73.                 Uri uri = Uri  
  74.                         .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");  
  75.                 mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);  
  76.   
  77.                 // mediaPlayer.prepare();  
  78.                 // 也可以直接通過(guò)這種方式裝載網(wǎng)絡(luò)上的音頻文件  
  79.                 mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,  
  80.                         uri);  
  81.                 mediaPlayer.start();  
  82.             } catch (Exception e) {  
  83.                 // TODO: handle exception  
  84.             }  
  85.   
  86.             break;  
  87.   
  88.         default:  
  89.             break;  
  90.         }  
  91.     }  
  92. }  


 

如需轉(zhuǎn)載引用請(qǐng)注明出處:http://blog.csdn.net/jiahui524

源代碼下載:http://download.csdn.net/detail/jiahui524/3847987

 

    本站是提供個(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)論公約

    類似文章 更多