Android_多媒體

來源:互聯網
上載者:User

本文介紹多媒體的音頻和視頻播放。

播放音頻和視頻的源檔案可以是一下三種:

  1. 源檔案(即res/raw下或assets下)
  2. 檔案系統(即sdcard)
  3. 流媒體(即網路)
1. 播放音頻檔案

播放音頻檔案可以用MediaPlayer類或SoundPool類。下面我們來介紹這兩個類。

1.1 MediaPlayer從源檔案(即res/raw下或assets下)播放音頻

mMediaPlayer = MediaPlayer.create(this, R.raw.sleep_away);mMediaPlayer.start();

1.2
MediaPlayer從檔案系統(即sdcard)播放音頻

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

方法二:

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" />

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 = MediaPlayer.create(this, Uri.parse(filePath));mMediaPlayer.start();

另外,MediaPlayer的幾個方法介紹一下:

  • start():開始播放
  • pause():暫停播放
  • reset() + prepare() + start():重新播放(其實MediaPlayer的create方法會首次調用prepare()方法)

另外,在onDestroy()方法中必須釋放MediaPlayer的資源:

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

videoView.setVideoURI(Uri.parse(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4"));

videoView.setVideoPath(Environment.getExternalStorageDirectory().getPath() + File.separator + "wild_life.mp4");

從流媒體(即網路)

videoView.setVideoURI(Uri.parse("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


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.