Android视频录制

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

 

posted on 2013-07-18 18:50  I love Android  阅读(622)  评论(0编辑  收藏  举报