本文介紹多媒體的音頻和視頻播放。 播放音頻和視頻的源檔案可以是一下三種: 源檔案(即res/raw下或assets下)檔案系統(即sdcard)流媒體(即網路) 1. 播放音頻檔案播放音頻檔案可以用MediaPlayer類或SoundPool類。下面我們來介紹這兩個類。 1.1 MediaPlayer從源檔案(即res/raw下或assets下)播放音頻 [java] mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away); mMediaPlayer.start(); mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);mMediaPlayer.start();1.2 MediaPlayer從檔案系統(即sdcard)播放音頻 [java]String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3 mMediaPlayer = new MediaPlayer(); try { mMediaPlayer.setDataSource(filePath); mMediaPlayer.prepare(); } catch (Exception e) { e.printStackTrace(); } mMediaPlayer.start(); String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3mMediaPlayer = new MediaPlayer();try {mMediaPlayer.setDataSource(filePath);mMediaPlayer.prepare();} catch (Exception e) {e.printStackTrace();}mMediaPlayer.start();方法二: [java] String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3 mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath)); mMediaPlayer.start(); String filePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "sleep_away.mp3";// /mnt/sdcard/sleep_away.mp3mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));mMediaPlayer.start();1.3 MediaPlayer從流媒體(即網路)播放音頻 添加許可權<uses-permission android:name="android.permission.INTERNET" /> [java] filePath = "http://www.xyz.com/Audio/sample.mp3"; mMediaPlayer = new MediaPlayer(); try { mMediaPlayer.setDataSource(filePath); mMediaPlayer.prepare(); } catch (Exception e) { e.printStackTrace(); } mMediaPlayer.start(); filePath = "http://www.xyz.com/Audio/sample.mp3";mMediaPlayer = new MediaPlayer();try {mMediaPlayer.setDataSource(filePath);mMediaPlayer.prepare();} catch (Exception e) {e.printStackTrace();}mMediaPlayer.start();方法二: [java] filePath = "http://www.xyz.com/Audio/sample.mp3"; mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath)); mMediaPlayer.start(); filePath = "http://www.xyz.com/Audio/sample.mp3";mMediaPlayer = MediaPlayer.create(this, Uri.parse(filePath));mMediaPlayer.start();另外,MediaPlayer的幾個方法介紹一下: start():開始播放pause():暫停播放reset() + prepare() + start():重新播放(其實MediaPlayer的create方法會首次調用prepare()方法)另外,在onDestroy()方法中必須釋放MediaPlayer的資源: [java] @Override protected void onDestroy() { super.onDestroy(); if (mMediaPlayer != null) { mMediaPlayer.release(); mMediaPlayer = null; } } @Overrideprotected void onDestroy() {super.onDestroy();if (mMediaPlayer != null) {mMediaPlayer.release();mMediaPlayer = null;}}1.4 SoundPool播放音頻檔案 開發Android軟體中我們可能經常需播放多媒體音效檔,一般使用MediaPlayer類但該類佔用資源較多,對於遊戲等應用可能不是很適合,SoundPool類在SDK的android.media.SoundPool,顧名思義是聲音池的意思。主要播放一些較短的聲音片段,可以從程式的資源或檔案系統載入,相對於MediaPlayer類可以做到使用較少的CPU資源和較短的反應延遲。 SoundPool和其他聲音播放類相比,其特點是可以自行設定聲音的品質、音量、播放比率等參等。並且它可以同時管理多個音頻流,每個流都有獨自的ID,對某個音頻流的管理都是通過ID進行的。 SoundPool基本使用方法: 建立一個SoundPool對象:new SoundPool(int maxStreams, int streamType, int srcQuality);從資源或者檔案載入音頻流:load(Context context, int resId, int priority);播放聲音:play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)關於SoundPool的用法參見Demohttp://download.csdn.net/detail/tianjf0514/4895976 2. 播放視頻檔案 播放視頻有兩種方法,一種是用VideoView播放,另一種是用SurfaceView播放。 2.1 VideoView播放方式可以用VideoView.setVideoURI()和VideoView.setVideoPath兩種方式播放視頻 從檔案系統(即sdcard) [java] videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4")); videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));[java] videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"); videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");從流媒體(即網路) [java]videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html")); videoView.setVideoURI(Uri.parse("http://v.pps.tv/play_3445G7.html"));[java] videoView.setVideoPath("http://v.pps.tv/play_3445G7.html"); videoView.setVideoPath("http://v.pps.tv/play_3445G7.html");用VideoView的方式播放視頻很簡單,但是視頻的位置和大小不受控制,所以要下面來介紹另一種方式 2.2 SurfaceView播放方式播放視頻 SurfaceView的控制介面SurfaceHolder的setFixedSize方法可以設定視頻的大小。 具體的SurfaceView怎麼播放視頻參考Demohttp://download.csdn.net/detail/tianjf0514/4895976