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




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

更多相关文章

  1. android 录像和拍照功能
  2. Android获得摄像头详细信息
  3. Android调用摄像头闪退
  4. android直接利用opencv打开摄像头失败原因及解决方案
  5. C#使用AForge实现摄像头录像功能的案例
  6. 监控流媒体服务器连接监控摄像头的配置方式 - GB28181和ONVIF
  7. php调取摄像头实现拍照功能的方法
  8. HTML5获取手机摄像头拍照

随机推荐

  1. Android处理9.png文件流程
  2. Fedora 15下使用android ndk 编译ffmepg0
  3. Android自定义标题栏
  4. Android(安卓)3.0 r1 API中文文档(106)
  5. Android(安卓)项目中集成 Flutter
  6. android 开发 时间选择器TimePicker的使
  7. Android开源项目第二篇——工具库篇
  8. Android(安卓)3.0动画学习笔记
  9. Android(安卓)使用CountDownTimer实现倒
  10. 为Android应用程序添加两个入口