使用MediaRecorder类
takevideo takevideo
takevideo takevideo
package com.example.takepicture;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Display;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.SurfaceHolder.Callback;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button mButtonStart;
private Button mButtonStop;
private View mLayout;
private SurfaceView mSurfaceView;
private Camera camera;
private MediaRecorder mediaRecorder;
private final static String TAG="takepicture";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window window =getWindow();
requestWindowFeature(Window.FEATURE_NO_TITLE);//没有标题
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏
setContentView(R.layout.activity_main);
mButtonStart =(Button) findViewById(R.id.buttonstart);
mButtonStop =(Button) findViewById(R.id.buttonstop);
mSurfaceView = (SurfaceView) findViewById(R.id.surfaceView1);
//使用类MediaRecorder作为视频采集类
mediaRecorder =new MediaRecorder();
mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mSurfaceView.getHolder().setFixedSize(176, 144);
mSurfaceView.getHolder().setKeepScreenOn(true);
//开始采集
mButtonStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
try {
File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+ ".3gp");
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);
mediaRecorder.setOutputFile(file.getAbsolutePath());
mediaRecorder.setPreviewDisplay(mSurfaceView.getHolder().getSurface());
mediaRecorder.prepare();
mediaRecorder.start();//开始刻录
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e)
{
Log.e(TAG, e.toString());
}
//预期准备
mButtonStart.setEnabled(false);
mButtonStop.setEnabled(true);
}else{
Toast.makeText(MainActivity.this, "err", 1).show();
}
}
});
mButtonStop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mediaRecorder.stop();
Toast.makeText(MainActivity.this, "success", 1).show();
mButtonStop.setEnabled(false);
mButtonStart.setEnabled(true);
}
});
}
@Override
protected void onDestroy() {
if(mediaRecorder!=null)
mediaRecorder.release();
super.onDestroy();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
mLayout =(View) findViewById(R.id.buttonlayout);
mLayout.setVisibility(ViewGroup.VISIBLE);
return true;
}
return super.onTouchEvent(event);
}
}