Android 开发随手笔记之使用摄像头拍照

2019-12-10 19:51:47于海丽

最后,是将拍摄到的图片保存到SDCard,我们单击Button来拍摄图片,调用Camera.takePicture()方法,其原型为:

 

 
  1. /**  * Equivalent to takePicture(shutter, raw, null, jpeg). 
  2. *  * @see #takePicture(ShutterCallback, PictureCallback, PictureCallback, PictureCallback) 
  3. */  public final void takePicture(ShutterCallback shutter, PictureCallback raw, 
  4. PictureCallback jpeg) {  takePicture(shutter, raw, null, jpeg); 

其中,shutter为按快门瞬间的回调,就是说按快门瞬间会调用ShutterCallback.onShutter()方法。raw是未压缩的图像的回调,即处理图像原始数据的时候会调用PictureCallback.onPictureTaken()方法。jpeg为处理JPEG图片时候的回调,即我们需要将图像数据按照jpg格式保存的时候会调用这个方法,PictureCallback.onPIctureTaken()。这里我们就调用了这个方法,从而将jpg图片存储到SDCard上。

 

 
  1. button.setOnClickListener(new View.OnClickListener() {  @Override 
  2. public void onClick(View v) {  camera.takePicture(null, null, new Camera.PictureCallback() { 
  3. @Override  public void onPictureTaken(byte[] data, Camera camera) { 
  4. try {  File filePath = new File(Environment.getExternalStorageDirectory(), "myCamera"); 
  5. if(!filePath.exists()) {  filePath.mkdirs(); 
  6. }  File fileName = new File(filePath, System.currentTimeMillis() + ".jpg");