Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 調用android api播放視頻,使用MediaPlayer

調用android api播放視頻,使用MediaPlayer

編輯:Android開發實例

 上文調用android api播放視頻使用的是VideoView,是比較高層的API播放視頻,比較簡明,但定制性方面不如使用MediaPlayer。

參考的示例是android SDK示例代碼:

 

源代碼:

 

  1. package com.easymorse; 
  2.  
  3. import java.io.IOException; 
  4.  
  5. import android.app.Activity;  
  6. import android.media.AudioManager;  
  7. import android.media.MediaPlayer;  
  8. import android.media.MediaPlayer.OnBufferingUpdateListener;  
  9. import android.media.MediaPlayer.OnCompletionListener;  
  10. import android.os.Bundle;  
  11. import android.util.Log;  
  12. import android.view.SurfaceHolder;  
  13. import android.view.SurfaceView; 
  14.  
  15. public class MPlayerActivity extends Activity implements  
  16.         OnBufferingUpdateListener, OnCompletionListener,  
  17.         MediaPlayer.OnPreparedListener, SurfaceHolder.Callback { 
  18.  
  19.     private MediaPlayer mediaPlayer; 
  20.  
  21.     private SurfaceView surfaceView; 
  22.  
  23.     private SurfaceHolder surfaceHolder; 
  24.  
  25.     private int videoWidth; 
  26.  
  27.     private int videoHeight; 
  28.  
  29.     /** Called when the activity is first created. */  
  30.     @Override  
  31.     public void onCreate(Bundle savedInstanceState) {  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.main);  
  34.         this.surfaceView = (SurfaceView) this.findViewById(R.id.surface);  
  35.         this.surfaceHolder = this.surfaceView.getHolder();  
  36.         this.surfaceHolder.addCallback(this);  
  37.         this.surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
  38.         Log.v("mplayer", ">>>create ok.");  
  39.     } 
  40.  
  41.     private void playVideo() throws IllegalArgumentException,  
  42.             IllegalStateException, IOException {  
  43.         this.mediaPlayer = new MediaPlayer();  
  44.         this.mediaPlayer  
  45.                 .setDataSource("http://sayedhashimi.com/downloads/android/movie.mp4"); 
  46.         this.mediaPlayer.setDisplay(this.surfaceHolder);  
  47.         this.mediaPlayer.prepare();  
  48.         this.mediaPlayer.setOnBufferingUpdateListener(this);  
  49.         this.mediaPlayer.setOnPreparedListener(this);  
  50.         this.mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
  51.         Log.v("mplayer", ">>>play video");  
  52.     } 
  53.  
  54.     @Override  
  55.     public void onBufferingUpdate(MediaPlayer mp, int percent) {  
  56.         // TODO Auto-generated method stub 
  57.  
  58.     } 
  59.  
  60.     @Override  
  61.     public void onCompletion(MediaPlayer mp) {  
  62.         // TODO Auto-generated method stub 
  63.  
  64.     } 
  65.  
  66.     @Override  
  67.     public void onPrepared(MediaPlayer mp) {  
  68.         this.videoWidth = this.mediaPlayer.getVideoWidth();  
  69.         this.videoHeight = this.mediaPlayer.getVideoHeight(); 
  70.  
  71.         if (this.videoHeight != 0 && this.videoWidth != 0) {  
  72.             this.surfaceHolder.setFixedSize(this.videoWidth, this.videoHeight);  
  73.             this.mediaPlayer.start();  
  74.         }  
  75.     } 
  76.  
  77.     @Override  
  78.     public void surfaceChanged(SurfaceHolder holder, int format, int width,  
  79.             int height) {  
  80.         Log.v("mplayer", ">>>surface changed");  
  81.     } 
  82.  
  83.     @Override  
  84.     public void surfaceCreated(SurfaceHolder holder) {  
  85.         try {  
  86.             this.playVideo();  
  87.         } catch (Exception e) {  
  88.             Log.e("mplayer", ">>>error", e);  
  89.         }  
  90.         Log.v("mplayer", ">>>surface created");  
  91.     } 
  92.  
  93.     @Override  
  94.     public void surfaceDestroyed(SurfaceHolder holder) {  
  95.         Log.v("mplayer", ">>>surface destroyed");  
  96.     } 
  97.  
  98.     @Override  
  99.     protected void onDestroy() {  
  100.         super.onDestroy();  
  101.         if (this.mediaPlayer != null) {  
  102.             this.mediaPlayer.release();  
  103.             this.mediaPlayer = null;  
  104.         }  
  105.     }  

 

源代碼見:

http://easymorse.googlecode.com/svn/tags/mplayer-1.0

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved