80,472
社区成员




package cn.itcast.video;
import android.app.Activity;
import android.content.Context;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
public class VideoRecordActivity extends Activity {
private static final String TAG = "VideoRecordActivity";
private Button startButton;
private Button stopButton;
private boolean record;
private MediaRecorder recorder;
private SurfaceView surfaceView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
recorder = new MediaRecorder();
ButtonListener listener = new ButtonListener();
startButton = (Button)this.findViewById(R.id.start);
stopButton = (Button)this.findViewById(R.id.stop);
this.surfaceView = (SurfaceView) this.findViewById(R.id.surfaceView);
startButton.setOnClickListener(listener);
stopButton.setOnClickListener(listener);
stopButton.setEnabled(false);//不可用
/*下面设置Surface不维护自己的缓冲区,而是等待屏幕的渲染引擎将内容推送到用户面前*/
this.surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.surfaceView.getHolder().setFixedSize(320, 240);//设置分辨率
this.surfaceView.getHolder().setKeepScreenOn(true);
}
private final class ButtonListener implements View.OnClickListener{
@Override
public void onClick(View v) {
try {
switch (v.getId()) {
case R.id.start:
stopButton.setEnabled(true);//设置可用
startButton.setEnabled(false);
recorder.reset();
recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setVideoSize(320, 240);
recorder.setVideoFrameRate(3); //每秒3帧
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile("/mnt/sdcard/itcast.3gp");
recorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
recorder.prepare();//预期准备
recorder.start();//开始刻录
record = true;
break;
case R.id.stop:
stopButton.setEnabled(false);
startButton.setEnabled(true);
if(record){
recorder.stop();//停止刻录
record = false;
}
break;
}
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
}
}