private SurfaceView surfaceView;
private ImageButton imageButton;
public int click_down=0,lose_up=0;
public static final String TAG = "MainActivity";
public SurfaceHolder mholder;
private MediaRecorder mRecorder;
public SurfaceHolder mSurfaceHolder;
private boolean isStart = false;
private File myRecAudioFile;
private boolean mIsSufaceCreated = false;
getTime time=new getTime();
getSDCard path=new getSDCard();
String path0 = path.getSDPath();
private Camera camera;/
/实现预览功能
private void startPreview() {
//保证只有一个Camera对象if (camera != null || !mIsSufaceCreated) {
Log.d(TAG, "startPreview will return");
return;
}
camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
parameters.setPreviewFrameRate(20);
//设置相机预览方向
camera.setDisplayOrientation(90);
camera.setParameters(parameters);
try {
camera.setPreviewDisplay(mSurfaceHolder);
} catch (Exception e) {
Log.d(TAG, e.getMessage());
}
camera.startPreview();
}
//停止预览画面
private void stopPreview() {
//释放Camera对象
if (camera != null) {
try {
camera.setPreviewDisplay(null);
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
camera.stopPreview();
camera.release();
camera = null;
}
}
}
实现Callback借口的方法
//界面创建时
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mIsSufaceCreated = true;
mSurfaceHolder = holder;
Log.d(TAG, "surfaceChanged 2");
}
//界面销毁时
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
mIsSufaceCreated = false;
if (isStart) {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
stopPreview();//停止预览画面
}
//界面发生改变时
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
startPreview();
mSurfaceHolder = holder;
Log.d(TAG, "surfaceChanged 1");
然后实现startRecording()和stopRecording()方法!