zoukankan      html  css  js  c++  java
  • 刻录视频

    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;
            }
        }
    }
  • 相关阅读:
    android中图型的阴影效果(shadow-effect-with-custom-shapes)
    git的经常使用命令
    C# vs Java
    Android-68-Tomcat各种启动错误的解决的方法,如:Exception in thread "Thread-6" NoClassDefFoundError,Document base E:
    Java高级程序猿技术积累
    Floodlight下发流表过程分析
    Maximal Rectangle [leetcode] 的三种思路
    C++实现顺序栈的基本功能
    ZOJ 1654 Place the Robots(最大匹配)
    [2-SAT] poj 3207 Ikki's Story IV
  • 原文地址:https://www.cnblogs.com/heml/p/3516185.html
Copyright © 2011-2022 走看看