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ì)象 - MediaPlayer mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
-
- 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()等方法控制 - AssetFileDescriptor fileDescriptor = assetManager
-
- .openFd("a2.mp3");
-
- mediaPlayer = new MediaPlayer();
- mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
- fileDescriptor.getStartOffset(),
- fileDescriptor.getLength());
- 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()等方法控制 - mediaPlayer = new MediaPlayer();
- mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");
- mediaPlayer.prepare();
- mediaPlayer.start();
-
-
-
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()等方法控制 - mediaPlayer = new MediaPlayer();
-
-
-
- Uri uri = Uri
-
- .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
-
- mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
-
-
-
- mediaPlayer.prepare();
-
- mediaPlayer.start();
當(dāng)然也可以通過(guò)我們的另一種靜態(tài)構(gòu)造方法直接創(chuàng)建一個(gè)MediaPlayer對(duì)象 - Uri uri = Uri
-
- .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
-
-
-
- mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
-
- uri);
-
- mediaPlayer.start();
實(shí)現(xiàn)效果: 貼上源代碼: - package com.jiahui.media;
-
- import java.io.IOException;
-
- public class MediaPlayerDemoActivity extends Activity implements
- OnClickListener {
-
- private Button btnAppStart, btnAssetsStart, btnSdcardStart,
- btnNetworkStart;
-
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- btnAppStart = (Button) this.findViewById(R.id.btnAppStart);
- btnAssetsStart = (Button) this.findViewById(R.id.btnAssetsStart);
- btnSdcardStart = (Button) this.findViewById(R.id.btnSdcardStart);
- btnNetworkStart = (Button) this.findViewById(R.id.btnNetworkStart);
-
- btnAppStart.setOnClickListener(this);
- btnAssetsStart.setOnClickListener(this);
- btnSdcardStart.setOnClickListener(this);
- btnNetworkStart.setOnClickListener(this);
-
- }
-
- @Override
- public void onClick(View v) {
- MediaPlayer mediaPlayer = null;
- switch (v.getId()) {
- case R.id.btnAppStart:
- System.out.println("---播放應(yīng)用的資源文件----");
-
- mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
- R.raw.a1);
- mediaPlayer.start();
- break;
- case R.id.btnAssetsStart:
- System.out.println("---播放assest的資源文件----");
- AssetManager assetManager = this.getAssets();
- try {
- AssetFileDescriptor fileDescriptor = assetManager
- .openFd("a2.mp3");
- mediaPlayer = new MediaPlayer();
- mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),
- fileDescriptor.getStartOffset(),
- fileDescriptor.getLength());
-
- mediaPlayer.prepare();
- mediaPlayer.start();
- } catch (IOException e) {
-
- e.printStackTrace();
- }
- break;
- case R.id.btnSdcardStart:
- System.out.println("---播放SDcard上的文件---");
- try {
- mediaPlayer = new MediaPlayer();
- mediaPlayer.setDataSource("/mnt/sdcard/a3.mp3");
- mediaPlayer.prepare();
- mediaPlayer.start();
- } catch (Exception e) {
- }
- break;
- case R.id.btnNetworkStart:
- System.out.println("播放網(wǎng)絡(luò)上的音頻");
-
-
- try {
-
-
- Uri uri = Uri
- .parse("http://zhangmenshiting2.baidu.com/data2/music/9138619/9138619.mp3?xcode=dd0d0d0df7218eb9a79c7fd72cefb648&mid=0.18926789458694");
- mediaPlayer.setDataSource(MediaPlayerDemoActivity.this, uri);
-
-
-
- mediaPlayer = MediaPlayer.create(MediaPlayerDemoActivity.this,
- uri);
- mediaPlayer.start();
- } catch (Exception e) {
-
- }
-
- break;
-
- default:
- break;
- }
- }
- }
如需轉(zhuǎn)載引用請(qǐng)注明出處:http://blog.csdn.net/jiahui524 源代碼下載:http://download.csdn.net/detail/jiahui524/3847987
|