By vanevery

public class VideoCapture extends Activity implements OnClickListener, SurfaceHolder.Callback {

MediaRecorder recorder;
SurfaceHolder holder;
boolean recording = false;
@Override
public 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);

recorder = new MediaRecorder();
initRecorder();
setContentView(R.layout.main);

SurfaceView cameraView = (SurfaceView) findViewById(R.id.CameraView);
holder = cameraView.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

cameraView.setClickable(true);
cameraView.setOnClickListener(this);
}

private void initRecorder() {
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);

CamcorderProfile cpHigh = CamcorderProfile
.get(CamcorderProfile.QUALITY_HIGH);
recorder.setProfile(cpHigh);
recorder.setOutputFile("/sdcard/videocapture_example.mp4");
recorder.setMaxDuration(50000); // 50 seconds
recorder.setMaxFileSize(5000000); // Approximately 5 megabytes
}

private void prepareRecorder() {
recorder.setPreviewDisplay(holder.getSurface());

try {
recorder.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
finish();
} catch (IOException e) {
e.printStackTrace();
finish();
}
}

public void onClick(View v) {
if (recording) {
recorder.stop();
recording = false;

// Let's initRecorder so we can record again
initRecorder();
prepareRecorder();
} else {
recording = true;
recorder.start();
}
}

public void surfaceCreated(SurfaceHolder holder) {
prepareRecorder();
}

public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}

public void surfaceDestroyed(SurfaceHolder holder) {
if (recording) {
recorder.stop();
recording = false;
}
recorder.release();
finish();
}
}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android自学笔记-7-Android中的junit
  2. 【Android 电量优化】JobScheduler 源码
  3. Android NDK 知识系列(一)
  4. Android NDK编程入门
  5. 学习Android过程中的一些博客或工具收集
  6. Android's HTTP Clients -Android的http
  7. 最近整理的Android学习笔记
  8. 命令行下Android应用开发
  9. 【Android】魅族Flyme OS 3摄像头无法预
  10. Android编译详解之lunch命令