展会信息港展会大全

android 随手记 摄像头录像
来源:互联网   发布日期:2015-09-29 10:12:00   浏览:1963次  

导读: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/videoV...

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

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

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港