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"/>