歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android應用開發之簡易視頻播放器

在Android中播放視頻用到的也是MediaPlayer,展示視頻通常使用SurfaceView控件。

在main.xml布局文件添加用於視頻畫面繪制的SurfaceView 控件:

<SurfaceView android:layout_width="fill_parent"android:layout_height="240dip"android:id="@+id/surfaceView"/>

MeidaPlayer播放視頻相關API使用方法:

  1. SurfaceView surfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);  
  2. surfaceView.getHolder().setFixedSize(176144);  //設置分辨率   
  3. /*下面設置Surface不維護自己的緩沖區,而是等待屏幕的渲染引擎將內容推送到用戶面前*/  
  4. surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  5. MediaPlayer mediaPlayer = new MediaPlayer();  
  6. mediaPlayer.reset();//重置為初始狀態   
  7. mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  8. /* 設置Video影片以SurfaceHolder播放 */  
  9. mediaPlayer.setDisplay(surfaceView.getHolder());  
  10. mediaPlayer.setDataSource("/mnt/sdcard/oppo.mp4");  
  11. mediaPlayer.prepare();//緩沖    
  12. mediaPlayer.start();//播放   
  13. mediaPlayer.pause();//暫停播放   
  14. mediaPlayer.start();//恢復播放   
  15. mediaPlayer.stop();//停止播放   
  16. mediaPlayer.release();//釋放資源  
下面介紹一個播放視頻的簡易例子,在模擬器上運行時最好用2.1, 2.1以後的模擬器播放視頻時會有問題,視頻播放同樣需要處理一些來電類的情況,需要覆寫Activity生命周期裡的幾個方法,需要注意的是,當Surface控件被其他Activity遮擋住是,會被銷毀,所以需要為他寫一個回調函數,否則當當前Activity被其他Activity打斷後,又回到當前Activity是,視頻播放界面會是黑屏。

詳細代碼:

布局文件layout/main.xml

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:background="#ffffff"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     >  
  8. <TextView    
  9.     android:layout_width="fill_parent"   
  10.     android:layout_height="wrap_content"   
  11.     android:text="@string/filename"  
  12.     />  
  13.       
  14.     <EditText  
  15.         android:layout_width="fill_parent"   
  16.         android:layout_height="wrap_content"   
  17.         android:text="oppo.mp4"  
  18.         android:id="@+id/filename"  
  19.         />  
  20.           
  21.     <LinearLayout  
  22.         android:orientation="horizontal"  
  23.         android:layout_width="fill_parent"  
  24.         android:layout_height="wrap_content"  
  25.         >  
  26.         <ImageButton  
  27.             android:layout_width="wrap_content"   
  28.             android:layout_height="wrap_content"   
  29.             android:src="@drawable/play"  
  30.             android:id="@+id/play"  
  31.             />  
  32.          <ImageButton  
  33.             android:layout_width="wrap_content"   
  34.             android:layout_height="wrap_content"   
  35.             android:src="@drawable/pause"  
  36.             android:id="@+id/pause"  
  37.             />  
  38.         <ImageButton  
  39.             android:layout_width="wrap_content"   
  40.             android:layout_height="wrap_content"   
  41.             android:src="@drawable/reset"  
  42.             android:id="@+id/reset"  
  43.             />  
  44.          <ImageButton  
  45.             android:layout_width="wrap_content"   
  46.             android:layout_height="wrap_content"   
  47.             android:src="@drawable/stop"  
  48.             android:id="@+id/stop"  
  49.             />  
  50.     </LinearLayout>  
  51.       
  52.     <SurfaceView  
  53.         android:layout_width="fill_parent"   
  54.         android:layout_height="240dip"   
  55.         android:id="@+id/surfaceView"  
  56.         />  
  57. </LinearLayout>  
Copyright © Linux教程網 All Rights Reserved