刻录视频

public class MainActivity extends Activity {
    private SurfaceView surfaceView;
    private RelativeLayout layout;
    private Button recordbutton;
    private Button stopbutton;
    private MediaRecorder mediaRecorder;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);//设置窗口特性没有标题
        //设置窗口全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
        
        surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
        //设置对数据不用缓存直接输出到SurfaceView上
        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        //设置屏幕大小
        surfaceView.getHolder().setFixedSize(176, 144);
        //设置屏幕常亮
        surfaceView.getHolder().setKeepScreenOn(true);
        
        layout = (RelativeLayout) this.findViewById(R.id.layout);
        recordbutton = (Button) this.findViewById(R.id.recordbutton);
        stopbutton = (Button) this.findViewById(R.id.stopbutton);
    }

    @Override
        //处理屏幕触摸事件
    public boolean onTouchEvent(MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            layout.setVisibility(ViewGroup.VISIBLE);
        }
        return super.onTouchEvent(event);
    }
    //刻录方法
    public void record(View v){
        switch (v.getId()) {
        case R.id.recordbutton:
            try{
                File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+ ".3gp");
                mediaRecorder = new MediaRecorder();//创建刻录对象
                //设置音频来源
                mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                //设置视频来源
                mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
                //设置文件输出格式
                mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                //设置视频大小
                mediaRecorder.setVideoSize(320, 240);
                //设置每秒多少张
                mediaRecorder.setVideoFrameRate(5);
                //设置音频编码
                mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                //设置视频编码
                mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
                //设置文件输出方向
                mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
                //设置预览到那块
                mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
                //开始准备
                mediaRecorder.prepare();
                //开始刻录
                mediaRecorder.start();
            }catch (Exception e) {
                e.printStackTrace();
            }
            recordbutton.setEnabled(false);
            stopbutton.setEnabled(true);
            break;

        case R.id.stopbutton:
            if(mediaRecorder!=null){
                //结束刻录
                mediaRecorder.stop();
                //释放资源
                mediaRecorder.release();
                mediaRecorder = null;
            }
            recordbutton.setEnabled(true);
            stopbutton.setEnabled(false);
            break;
        }
    }
}
原文地址:https://www.cnblogs.com/heml/p/3516185.html