• android 随手记 摄像头录像


    1 xml

       <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <SurfaceView
            android:id="@+id/videoView"
            android:layout_width="300dip"
            android:layout_height="200dip"
            android:visibility="visible" >
        </SurfaceView>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/start"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="录制" />

            <Button
                android:id="@+id/stop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toRightOf="@id/start"
                android:text="停止" />
        </RelativeLayout>

    </LinearLayout>



    2,java代码

      package prox.AndroidRecordVideoTest;

    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import android.app.Activity;
    import android.content.pm.ActivityInfo;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class AndroidRecordVideoTest extends Activity {
        private SurfaceView mSurfaceView;
        private SurfaceHolder mSurfaceHolder;
        private Button buttonStart;
        private Button buttonStop;
        private File dir;
        private MediaRecorder recorder;
        private String path = "/sdcard/RTCameraSendRecv/";
        SimpleDateFormat format1;
        String fileName = "";
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            format1 = new SimpleDateFormat("yyyyMMddHHmmss");
            mSurfaceView = (SurfaceView) findViewById(R.id.videoView);
            
            mSurfaceHolder = mSurfaceView.getHolder();
            mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            buttonStart = (Button) findViewById(R.id.start);
            buttonStop = (Button) findViewById(R.id.stop);

            
            dir = new File(path);
            if (!dir.exists()) {
                dir.mkdir();
            }
            recorder = new MediaRecorder();
            
            buttonStart.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    startrecord();
                }
            });
            
            buttonStop.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    recorder.stop();
                    recorder.reset();
                    recorder.release();
                    recorder = null;
                }
            });
        }

        public void startrecord() {
            try {
                fileName = format1.format(new Date());
                
                recorder.setPreviewDisplay(mSurfaceHolder.getSurface());
                
                recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
            
                recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            
                recorder.setVideoSize(352, 288);
            
                recorder.setVideoFrameRate(25);
                
                recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
                
                recorder.setMaxDuration(60000); // 60s
            
                recorder.setOutputFile(path + fileName+".3gp");
                recorder.prepare();
                recorder.start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }



    3,在AndroidManifest.xml 加上权限

        <uses-permission android:name="android.permission.CAMERA"/>        
        <uses-permission android:name="android.permission.RECORD_AUDIO"/>        
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>




    就这样 一个摄像头录像程序就完工了

  • 相关阅读:
    第二次结对编程作业
    第5组 团队展示
    第一次结对编程作业
    第一次个人编程作业
    51 Nod 1024 Set
    51 Nod 1007 dp
    YY的GCD 数学
    选课 树形背包dp
    运输问题 费用流
    分配问题 费用流
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3253765.html
Copyright © 2020-2023  润新知