public class MainActivity extends Activity {

     private MediaRecorder videoRecorder=null;
private Button recorder=null;
private Button stop=null;
private SurfaceView surface=null;
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置屏幕横向全屏显示
setContentView(R.layout.main);
videoRecorder=new MediaRecorder();
surface=(SurfaceView) this.findViewById(R.id.surface);
recorder=(Button) this.findViewById(R.id.recorder);
stop=(Button) this.findViewById(R.id.stop);
surface.getHolder().setKeepScreenOn(true);
surface.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surface.getHolder().setFixedSize(320, 240); }
public void RecordVideo(View v)
{
switch (v.getId()) {
case R.id.recorder: stop.setEnabled(true);
recorder.setEnabled(false);
try {
videoRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置音频的来源
videoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //设置视频的来源
videoRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//设置视频的输出格式3gp
videoRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设音频的解码方式
videoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设视频的解码方式
videoRecorder.setVideoFrameRate(5);//设置每秒捕获画面的个数
videoRecorder.setVideoSize(480, 320);//设置视频的大小
File f=new File(Environment.getExternalStorageDirectory().getAbsolutePath(),System.currentTimeMillis()+".3gp");
videoRecorder.setOutputFile(f.getAbsolutePath());//设置保存的路径
videoRecorder.setPreviewDisplay(surface.getHolder().getSurface());//吧捕获的画面显示到surfaceView控件中
videoRecorder.prepare();
videoRecorder.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} break;
case R.id.stop:
stop.setEnabled(false);
recorder.setEnabled(true);
if(videoRecorder!=null)
{
videoRecorder.stop();
videoRecorder.release();
videoRecorder=null;
}
break;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
this.findViewById(R.id.btnLayout).setVisibility(View.VISIBLE);
}
return super.onTouchEvent(event);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} } 注意:activity设置好之后必须在Mainfest.xml文件中配置权限
80 <uses-permission android:name="android.permission.CAMERA"/>
81 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
82 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
83 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

Android视频录制的更多相关文章

  1. android视频录制、另一部手机实时观看方案

    最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...

  2. Android视频录制从不入门到入门系列教程(一)————简介

    一.WHY Android SDK提供了MediaRecorder帮助开发者进行视频的录制,不过这个类很鸡肋,实际项目中应该很少用到它,最大的原因我觉得莫过于其输出的视频分辨率太有限了,满足不了项目的 ...

  3. Android视频录制从不入门到入门系列教程(三)————视频方向

    运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子 ...

  4. 利用FFmpeg玩转Android视频录制与压缩(二)<转>

    转载出处:http://blog.csdn.net/mabeijianxi/article/details/72983362 预热 时光荏苒,光阴如梭,离上一次吹牛逼已经过去了两三个月,身边很多人的女 ...

  5. android 视频录制 混淆打包 之native层 异常的解决

    原文地址:http://www.cnblogs.com/linguanh/    (滑至文章末,直接看解决方法) 问题起因: 前5天,因为项目里面有个类似 仿微信 视频录制的功能, 先是上网找了个 开 ...

  6. Android视频录制从不入门到入门系列教程(四)————Camera Parameter

    Camera提供了一个叫做setParameters的方法帮助开发者设置相机的相关参数. 通过Camera的getParameters方法可以获取到当前为相机设置的相关参数. 下面简单介绍下,视频录制 ...

  7. Android视频录制命令screenrecord

    不管是教学,还是为了演示,如果能将Android手机(或平板)的屏幕录制成视频文件,那是一件非常酷的事(iOS8已经提供了这一功能,能通过OS X直接在Mac上录制iPad.iPhone的屏幕,win ...

  8. Android拓展系列(9)--Android视频录制screenrecord命令

    在Android4.4 Kitkat上集成了一个比较好用的视频录制功能.参考:http://forums.androidcentral.com/android-4-4-kitkat/329674-ho ...

  9. 我的Android进阶之旅------>Android视频录制小例子

    ============================首先看看官网上关于视频捕捉的介绍================================ Capturing videos Video ...

随机推荐

  1. 数据结构笔记01:编程面试过程中常见的10大算法(java)

    以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...

  2. linux定时任务1-crontab命令

    简单测试例子: 添加定时任务前,注意查看crond服务是否已经启动,如果未启动,则用命令service crond start命令启动. 注意给脚本添加可执行权限. [root@rheltest1 ~ ...

  3. jQuery 第一阶段 学习使用总结

    jQuery 是一个 JavaScript 库,位于一个 JavaScript 文件中,其中包含了所有的 jQuery 函数.在平常的使用过程中,会常常与JavaScript,配合css使用,能够令网 ...

  4. Centos6 安装vnc

    Centos6 安装vnc 1. 安装 使用yum方式安装 yum install tigervnc-server tigervnc #启动 vncserver #重启动 /etc/init.d/vn ...

  5. maven第7章生命周期和插件

    maven插件用到哪些思想? 7.7 从命令行调用插件 目标前缀和插件前缀是一个意思. 在本地搭建maven环境,熟悉maven的环境.

  6. HTTP头信息解读

    本文为多篇“HTTP请求头相关文章”及<HTTP权威指南>一书的阅读后个人汇总整理版,以便于理解. 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.客户端向服务器发 ...

  7. pydev新工程

    http://www.cnblogs.com/linjiqin/p/3595891.html 明天再编辑一下

  8. 武汉科技大学ACM :1008: A+B for Input-Output Practice (VIII)

    Problem Description Your task is to calculate the sum of some integers. Input Input contains an inte ...

  9. 洛谷 P1305 新二叉树

    P1305 新二叉树 题目描述 输入一串完全二叉树,用遍历前序打出. 输入输出格式 输入格式: 第一行为二叉树的节点数n. 后面n行,每一个字母为节点,后两个字母分别为其左右儿子. 空节点用*表示 输 ...

  10. JSTL与EL之间的千丝万缕

    一.关于JSTL和EL: 什么是JSTL? JSTL( JSP Standard Tag Library)是JSP标准 标签库,由apache实现. 什么是EL? EL(Expression Lang ...