1 public class MainActivity extends Activity { 2 3 private MediaRecorder videoRecorder=null; 4 private Button recorder=null; 5 private Button stop=null; 6 private SurfaceView surface=null; 7 @SuppressWarnings("deprecation") 8 protected void onCreate(Bundle savedInstanceState) { 9 super.onCreate(savedInstanceState); 10 requestWindowFeature(Window.FEATURE_NO_TITLE); 11 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 12 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置屏幕横向全屏显示 13 setContentView(R.layout.main); 14 videoRecorder=new MediaRecorder(); 15 surface=(SurfaceView) this.findViewById(R.id.surface); 16 recorder=(Button) this.findViewById(R.id.recorder); 17 stop=(Button) this.findViewById(R.id.stop); 18 surface.getHolder().setKeepScreenOn(true); 19 surface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 20 surface.getHolder().setFixedSize(320, 240); 21 22 } 23 public void RecordVideo(View v) 24 { 25 switch (v.getId()) { 26 case R.id.recorder: 27 28 stop.setEnabled(true); 29 recorder.setEnabled(false); 30 try { 31 videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频的来源 32 videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //设置视频的来源 33 videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置视频的输出格式3gp 34 videoRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设音频的解码方式 35 videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设视频的解码方式 36 videoRecorder.setVideoFrameRate(5);//设置每秒捕获画面的个数 37 videoRecorder.setVideoSize(480, 320);//设置视频的大小 38 File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath(),System.currentTimeMillis()+".3gp"); 39 videoRecorder.setOutputFile(f.getAbsolutePath());//设置保存的路径 40 videoRecorder.setPreviewDisplay(surface.getHolder().getSurface());//吧捕获的画面显示到surfaceView控件中 41 videoRecorder.prepare(); 42 videoRecorder.start(); 43 } catch (Exception e) { 44 // TODO Auto-generated catch block 45 e.printStackTrace(); 46 } 47 48 break; 49 case R.id.stop: 50 stop.setEnabled(false); 51 recorder.setEnabled(true); 52 if(videoRecorder!=null) 53 { 54 videoRecorder.stop(); 55 videoRecorder.release(); 56 videoRecorder=null; 57 } 58 break; 59 } 60 } 61 @Override 62 public boolean onTouchEvent(MotionEvent event) { 63 if(event.getAction()==MotionEvent.ACTION_DOWN) 64 { 65 this.findViewById(R.id.btnLayout).setVisibility(View.VISIBLE); 66 } 67 return super.onTouchEvent(event); 68 } 69 70 @Override 71 public boolean onCreateOptionsMenu(Menu menu) { 72 // Inflate the menu; this adds items to the action bar if it is present. 73 getMenuInflater().inflate(R.menu.main, menu); 74 return true; 75 } 76 77 } 78 79 注意:activity设置好之后必须在Mainfest.xml文件中配置权限 80 <uses-permission android:name="android.permission.CAMERA"/> 81 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 82 <uses-permission android:name="android.permission.RECORD_AUDIO"/> 83 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>