01.Android之多媒體--使用MediaPlayer播放音頻01

MediaPlayer類

靜態構造方法

方法名稱

描述

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

指定從資源ID對應的資源文件中來裝載音樂文件,同時指定了SurfaceHolder對象並返回MediaPlyaer對象

public static MediaPlayer create(Context context, int resid)

指定從資源ID對應的資源文件中來裝載音樂文件,並返回MediaPlyaer對象

public static MediaPlayer create(Context context, Uri uri)

指定從Uri對應的資源文件中來裝載音樂文件,並返回MediaPlyaer對象

 

常用方法

方法名稱

描述

public void start ()

開始或恢復播放

public void stop()

停止播放

public void pause()

暫停播放

public void setDataSource (String path)

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

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

指定裝載fd所代表的文件中從offset開始、長度爲length的文件內容

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()

預期準備,因爲setDataSource()方法之後,MediaPlayer並未真正的去裝載那些音頻文件,需要調用prepare()這個方法去準備音頻

public void setLooping(boolean looping)

設置是否循環播放這個音樂文件

public void setSurface(Surface surface)

設置Surface

public void setVolume(float leftVolume,float rightVolume)

設置音量

public void setDisplay(SurfaceHolder sh)

設置顯示方式

public void seekTo(int mses)

尋求指定的時間位置。

public void isLooping()

判斷是否循環播放

public void isPlaying()

判斷是否正在播放

public void release()

釋放相關該MediaPlayer對象的資源。

 

綁定事件監聽器

監聽器

描述

public void setOnCompletionListener (MediaPlayer.OnCompletionListener listener)

爲MediaPlayer的播放完成事件綁定事件監聽器

public void setOnErrorListener (MediaPlayer.OnErrorListener listener)

爲MediaPlayer的播放錯誤事件綁定事件監聽器

public void setOnPreparedListener (MediaPlayer.OnPreparedListener listener)

當MediaPlayer調用prepare()方法時觸發該監聽器

public void setOnSeekCompleteListener (MediaPlayer.OnSeekCompleteListener listener)

當MediaPlayer調用seek()方法的時候觸發該監聽器



播放音頻的4種方法:

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

通過我們上面介紹的幾個靜態構造函數創建MediaPlayer對象

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


 

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

1)        通過Context.getAssets()方法獲得AssetManager對象

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

3)        通過AssetFileDescriptor的getFileDescriptor()得到一個FileDescriptor對象

4)        通過public void setDataSource (FileDescriptor fd, long offset, long length)來創建MediaPlayer對象

5)        調用MediaPlayer.prepare()方法準備音頻

6)        調用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、播放外部存儲上的音頻資源文件(sdcard)

1)        創建MediaPlayer對象,通過MediaPlayer對象的setDataSource(String path)方法裝載預定的音頻文件

2)        調用MediaPlayer對象的prepare()方法準備音頻

3)        調用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、播放網絡上的音頻文件

1)        根據網絡上的地址創建Uri對象

2)        通過public void setDataSource (Context context, Uri uri)設置音頻來源裝載音頻文件

3)        調用MediaPlayer對象的prepare()方法準備音頻

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

  1. mediaPlayer = new MediaPlayer();  
  2.   
  3.            // 通過Uri解析一個網絡地址  
  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();  


 

當然也可以通過我們的另一種靜態構造方法直接創建一個MediaPlayer對象

  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 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章