Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android錄制視頻(二)

Android錄制視頻(二)

編輯:關於Android編程

mainActivity如下:   [java]   package c.c;   import java.io.File;   import java.io.IOException;   import android.app.Activity;   import android.content.pm.ActivityInfo;   import android.media.MediaRecorder;   import android.os.Bundle;   import android.os.Environment;   import android.view.SurfaceHolder;   import android.view.SurfaceView;   import android.view.View;   import android.view.View.OnClickListener;   import android.view.Window;   import android.view.WindowManager;   import android.widget.Button;   /**   * Demo描述:   * 利用SurfaceView拍攝視頻   *    * 注意:   * 1 嚴重注意:MediaRecorder參數的設置.因手機不同而有差異   * 2 在設置MediaRecorder的參數時,應先設置:   *   setVideoSource(),setAudioSource(),setOutputFormat(),setVideoEncoder(),setAudioEncoder   *   然後再設置其余的參數,查看方法對應的API有提示   *   */   public class MainActivity extends Activity implements SurfaceHolder.Callback{       private Button mStartButton;       private Button mStopButton;       private SurfaceView mSurfaceView;       private SurfaceHolder mSurfaceHolder;       private MediaRecorder mMediaRecorder;       @Override       public void onCreate(Bundle savedInstanceState) {           super.onCreate(savedInstanceState);           // 去掉標題欄           requestWindowFeature(Window.FEATURE_NO_TITLE);           // 設置全屏           getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,           WindowManager.LayoutParams.FLAG_FULLSCREEN);           // 設置橫屏顯示           setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);           setContentView(R.layout.main);           init();       }       private void init(){           mStartButton=(Button) findViewById(R.id.start_button);           mStartButton.setOnClickListener(new ButtonClickListenerImpl());           mStopButton=(Button) findViewById(R.id.stop_button);           mStopButton.setOnClickListener(new ButtonClickListenerImpl());           mSurfaceView=(SurfaceView) findViewById(R.id.surfaceView);           mSurfaceHolder=mSurfaceView.getHolder();           mSurfaceHolder.addCallback(this);           mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);       }       private void initMediaRecorder(){           mMediaRecorder=new MediaRecorder();           //設置視頻源           mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);           //設置音頻源           mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);           //設置文件輸出格式           mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);           //設置視頻編碼方式           mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);           //設置音頻編碼方式           mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);           //設置視頻高和寬,注意文檔的說明:           //Must be called after setVideoSource().           //Call this after setOutFormat() but before prepare().           //設置錄制的視頻幀率,注意文檔的說明:           //Must be called after setVideoSource().           //Call this after setOutFormat() but before prepare().           mMediaRecorder.setVideoFrameRate(20);           //設置預覽畫面           mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());           //設置輸出路徑           mMediaRecorder.setOutputFile           (Environment.getExternalStorageDirectory()+File.separator+System.currentTimeMillis()+".mp4");                  }              private class ButtonClickListenerImpl implements OnClickListener{           public void onClick(View v) {               if (v.getId()==R.id.start_button) {                   try {                       initMediaRecorder();                       mMediaRecorder.prepare();                       mMediaRecorder.start();                   } catch (IllegalStateException e) {                       e.printStackTrace();                   } catch (IOException e) {                       e.printStackTrace();                   }               }                if (v.getId()==R.id.stop_button) {                   if (mMediaRecorder!=null) {                       mMediaRecorder.stop();                       mMediaRecorder.release();                       mMediaRecorder=null;                   }               }           }       }          //SurfaceHolder.Callback接口       public void surfaceCreated(SurfaceHolder holder) {          }       public void surfaceChanged(SurfaceHolder holder, int format, int width,               int height) {                  }       public void surfaceDestroyed(SurfaceHolder holder) {                  }                 }     main.xml如下:   [html]   www.2cto.com <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"       xmlns:tools="http://schemas.android.com/tools"       android:layout_width="match_parent"       android:layout_height="match_parent"       android:orientation="vertical" >          <SurfaceView           android:id="@+id/surfaceView"           android:layout_width="fill_parent"           android:layout_height="0dip"           android:layout_weight="1" />          <LinearLayout           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:orientation="horizontal" >              <Button               android:id="@+id/start_button"               android:layout_width="match_parent"               android:layout_height="wrap_content"               android:text="開始"               android:layout_weight="1" />              <Button               android:id="@+id/stop_button"               android:layout_width="match_parent"               android:layout_height="wrap_content"               android:text="停止"               android:layout_weight="1" />       </LinearLayout>      </LinearLayout>          
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved