package cn.itcast.videorecord;import java.io.File;import android.app.Activity;import android.media.MediaRecorder;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity {private static final String TAG = "MainActivity";    private SurfaceView surfaceView;    private MediaRecorder mediaRecorder;    private boolean record;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                mediaRecorder = new MediaRecorder();        surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);        /*下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前*/        this.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);        this.surfaceView.getHolder().setFixedSize(320, 240);//设置分辨率        ButtonClickListener listener = new ButtonClickListener();        Button stopButton = (Button) this.findViewById(R.id.stop);        Button recordButton = (Button) this.findViewById(R.id.record);        stopButton.setOnClickListener(listener);        recordButton.setOnClickListener(listener);            }        @Overrideprotected void onDestroy() {    mediaRecorder.release();super.onDestroy();}private final class ButtonClickListener implements View.OnClickListener{@Overridepublic void onClick(View v) {if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){Toast.makeText(MainActivity.this, R.string.sdcarderror, 1).show();return ;}try {switch (v.getId()) {case R.id.record:mediaRecorder.reset();mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setVideoSize(320, 240);mediaRecorder.setVideoFrameRate(3); //每秒3帧mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".3gp");mediaRecorder.setOutputFile(videoFile.getAbsolutePath());mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());mediaRecorder.prepare();//预期准备mediaRecorder.start();//开始刻录record = true;break;case R.id.stop:if(record){mediaRecorder.stop();record = false;}break;}} catch (Exception e) {Toast.makeText(MainActivity.this, R.string.error, 1).show();Log.e(TAG, e.toString());}}        }}

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:background="#ffffff"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><SurfaceView    android:layout_width="fill_parent"     android:layout_height="220dip"     android:id="@+id/surfaceView"    />    <LinearLayout    android:orientation="horizontal"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:gravity="right"    >    <Button    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="@string/record"    android:id="@+id/record"    />    <Button    android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginLeft="10dip"    android:text="@string/stop"    android:id="@+id/stop"    />    </LinearLayout></LinearLayout>

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="cn.itcast.videorecord"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".MainActivity"                  android:label="@string/app_name" android:screenOrientation="landscape">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application>    <uses-sdk android:minSdkVersion="7" /><uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></manifest> 

项目源码下载: http://pan.baidu.com/share/link?shareid=274384&uk=1796216265 作者:jaycee110905 发表于2013-2-21 22:28:47 原文链接 阅读:85 评论:0 查看评论

更多相关文章

  1. android全屏设置
  2. Android播放视频(二)
  3. Android(安卓)Glide RadiusTransform
  4. Android(安卓)进度条
  5. opencv for android(十六):opencv在android上的录制avi格式的视频
  6. android 学习视频
  7. Android(安卓)Studio简单设置
  8. Android图形系统(八)-app与SurfaceFlinger共享UI元数据过程
  9. Android(安卓)EditView属性详细介绍

随机推荐

  1. Android关于图片处理,更改图片灰度
  2. 【转】android常用组件
  3. Android检测电源状态
  4. 如何为Android Activity设置背景图片?
  5. 转:android 实现 流媒体 播放远程mp3文件
  6. Android官方网站!
  7. android 6.0系统 make otapackage 错误
  8. Android绘制进阶之五:位图的处理
  9. Android RecyclerView(1)——范例篇
  10. android 仿微信5版本实现滑动导航条