zoukankan      html  css  js  c++  java
  • 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"/>




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

  • 相关阅读:
    java实现第五届蓝桥杯出栈次序
    java实现第五届蓝桥杯年龄巧合
    java实现第五届蓝桥杯年龄巧合
    java实现第五届蓝桥杯年龄巧合
    java实现第五届蓝桥杯年龄巧合
    java实现第五届蓝桥杯年龄巧合
    Java使用RandomAccessFile读写文件
    Java 实现文件随机读写-RandomAccessFile
    NIO 中文乱码自我解决的简单DEMO
    NIO 中文乱码问题的解决代码实现
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3253765.html
Copyright © 2011-2022 走看看