最后,是将拍摄到的图片保存到SDCard,我们单击Button来拍摄图片,调用Camera.takePicture()方法,其原型为:
- /** * Equivalent to takePicture(shutter, raw, null, jpeg).
- * * @see #takePicture(ShutterCallback, PictureCallback, PictureCallback, PictureCallback)
- */ public final void takePicture(ShutterCallback shutter, PictureCallback raw,
- PictureCallback jpeg) { takePicture(shutter, raw, null, jpeg);
- }
其中,shutter为按快门瞬间的回调,就是说按快门瞬间会调用ShutterCallback.onShutter()方法。raw是未压缩的图像的回调,即处理图像原始数据的时候会调用PictureCallback.onPictureTaken()方法。jpeg为处理JPEG图片时候的回调,即我们需要将图像数据按照jpg格式保存的时候会调用这个方法,PictureCallback.onPIctureTaken()。这里我们就调用了这个方法,从而将jpg图片存储到SDCard上。
- button.setOnClickListener(new View.OnClickListener() { @Override
- public void onClick(View v) { camera.takePicture(null, null, new Camera.PictureCallback() {
- @Override public void onPictureTaken(byte[] data, Camera camera) {
- try { File filePath = new File(Environment.getExternalStorageDirectory(), "myCamera");
- if(!filePath.exists()) { filePath.mkdirs();
- } File fileName = new File(filePath, System.currentTimeMillis() + ".jpg");










