Android遊戲開發學習筆記(三):視頻的播放

1、在命令行下輸入mksdcard 512M c:\sdcard.img命令,建立sdcard鏡像文件。java

2、單擊Eclipse的菜單命令「Window/Preferences」,打開Preferences窗口,在左側選中「Android/Launch」,在右側的「Default emulator options」中填入「-sdcard c:\sdcard.img」。android

3、啓動模擬器,切換視圖到DDMS,找到「File Explorer」窗口,選中「mnt/sdcard」,執行右上角的「Push a file onto the device」,向sdcard中添加視頻文件「qtfy01.3gp」。app

4、編寫項目的佈局文件main.xml,代碼以下:ide

  
  
           
  
  
  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:layout_width="fill_parent" 
  5.     android:layout_height="fill_parent" 
  6.     > 
  7.     <SurfaceView 
  8.         android:id="@+id/surfaceView"    
  9.         android:layout_width="fill_parent"   
  10.         android:layout_height="380px"   
  11.         /> 
  12.     <LinearLayout   
  13.         android:layout_width="fill_parent" 
  14.         android:layout_height="wrap_content" 
  15.         > 
  16.         <Button 
  17.             android:id="@+id/play_btn" 
  18.             android:layout_width="wrap_content" 
  19.             android:layout_height="wrap_content" 
  20.             android:text="播放" 
  21.             /> 
  22.         <Button 
  23.             android:id="@+id/pause_btn" 
  24.             android:layout_width="wrap_content" 
  25.             android:layout_height="wrap_content" 
  26.             android:text="暫停" 
  27.             /> 
  28.     </LinearLayout> 
  29. </LinearLayout> 
5、編寫MainActivity.java代碼。
  
  
           
  
  
  1. package game.test;  
  2.  
  3. import android.app.Activity;  
  4. import android.graphics.PixelFormat;  
  5. import android.media.AudioManager;  
  6. import android.media.MediaPlayer;  
  7. import android.os.Bundle;  
  8. import android.view.SurfaceHolder;  
  9. import android.view.SurfaceView;  
  10. import android.view.View;  
  11. import android.view.View.OnClickListener;  
  12. import android.widget.Button;  
  13.  
  14. public class MainActivity extends Activity implements SurfaceHolder.Callback {  
  15.     String path = "/sdcard/qtfy01.3gp";  
  16.     Button play_btn, pause_btn;  
  17.     boolean isPause = false;  
  18.     SurfaceHolder surfaceHolder;  
  19.     MediaPlayer mediaPlayer;  
  20.     SurfaceView surfaceView;  
  21.  
  22.     /** Called when the activity is first created. */ 
  23.     @Override 
  24.     public void onCreate(Bundle savedInstanceState) {  
  25.         super.onCreate(savedInstanceState);  
  26.         setContentView(R.layout.main);  
  27.         play_btn = (Button) findViewById(R.id.play_btn);  
  28.         play_btn.setOnClickListener(video_listener);  
  29.         pause_btn = (Button) findViewById(R.id.pause_btn);  
  30.         pause_btn.setOnClickListener(video_listener);  
  31.         getWindow().setFormat(PixelFormat.UNKNOWN);  
  32.         surfaceView = (SurfaceView) findViewById(R.id.surfaceView);  
  33.         surfaceHolder = surfaceView.getHolder();  
  34.         surfaceHolder.addCallback(this);   
  35.         surfaceHolder.setFixedSize(176144);  
  36.         surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
  37.         mediaPlayer = new MediaPlayer();  
  38.     }  
  39.  
  40.     private OnClickListener video_listener = new OnClickListener() {  
  41.         @Override 
  42.         public void onClick(View v) {  
  43.             switch (v.getId()) {  
  44.             case R.id.play_btn:  
  45.                 isPause = false;  
  46.                 playVideo(path);  
  47.                 break;  
  48.  
  49.             case R.id.pause_btn:  
  50.                 if (isPause == false) {  
  51.                     mediaPlayer.pause();  
  52.                     isPause = true;  
  53.                 } else {  
  54.                     mediaPlayer.start();  
  55.                     isPause = false;  
  56.                 }  
  57.                 break;  
  58.             }  
  59.         }  
  60.  
  61.         private void playVideo(String path) {  
  62.             // TODO Auto-generated method stub  
  63.             if (mediaPlayer.isPlaying() == true) {  
  64.                 mediaPlayer.reset();  
  65.             }  
  66.             mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);  
  67.             mediaPlayer.setDisplay(surfaceHolder);  
  68.             try {  
  69.                 mediaPlayer.setDataSource(path);  
  70.                 mediaPlayer.prepare();  
  71.             } catch (Exception e) {  
  72.                 // TODO: handle exception  
  73.                 e.printStackTrace();  
  74.             }  
  75.             mediaPlayer.start();   
  76.         }  
  77.     };  
  78.  
  79.     @Override 
  80.     public void surfaceCreated(SurfaceHolder holder) {  
  81.         // TODO Auto-generated method stub  
  82.     }  
  83.  
  84.     @Override 
  85.     public void surfaceChanged(SurfaceHolder holder, int format, int width,  
  86.             int height) {  
  87.         // TODO Auto-generated method stub  
  88.     }  
  89.  
  90.     @Override 
  91.     public void surfaceDestroyed(SurfaceHolder holder) {  
  92.         // TODO Auto-generated method stub  
  93.     }  
相關文章
相關標籤/搜索