camera实现拍照的代码:
/** * 开始拍照 */ public void startCapture() { if (null != camera) { camera.takePicture(null, null, pictureCallback); } } private final Camera.PictureCallback pictureCallback = new Camera.PictureCallback() { @Override public void onPictureTaken(byte[] data, Camera camera) { // if (data != null) { //解析生成相机返回的图片 try { File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); if (!dir.exists()) { dir.mkdirs(); } File mCaptureFile = new File(dir, System.currentTimeMillis() + ".jpg"); FileOutputStream fos = new FileOutputStream(mCaptureFile); fos.write(data); fos.close(); Toast.makeText(surfaceView.getContext(), "拍照成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(surfaceView.getContext(), "保存相片失败", Toast.LENGTH_SHORT).show(); } } else { Toast.makeText(surfaceView.getContext(), "拍照失败,请重试", Toast.LENGTH_SHORT).show(); } } };运行起来会发现一个问题就是拍照完成后停留在预览界面,此时如果你不录像是没有问题的,但是如果你正在录像停留在当前界面是不是很尴尬,一番查找后只需要重新设置camera的参数就可以实现拍照完成后不预览画面,录像一直在进行是不是很爽
Camera.Parameters params = camera.getParameters(); params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); camera.setParameters(params);