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);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐