title: How do you take high resolution images using Camera.takePicture()?
body: <p>I'm implementing an in-app camera and every time I take a picture my image is 320x240, though my phone's camera is capable of much higher resolutions (Galaxy Nexus). I couldn't find a parameter for setting the resolution, so how do I up the resolution of images I am taking? Here's the relevant code:</p>
  
  <pre><code>@Override
  public void surfaceCreated( SurfaceHolder holder ) {
  
      setSurfaceHolder( holder );
  }
  
  @Override
  public void surfaceDestroyed( SurfaceHolder holder ) {
  
      setSurfaceHolder( null );
  }
  
  private void attachCameraToSurface( Camera camera, SurfaceHolder holder ) {
  
      try {
          camera.setPreviewDisplay( holder );
          setInPreview( true );
      }
      catch (IOException e) {
          Log.e( "CameraFragment", "Exception in attachCameraToSurface()", e );
      }
  }
  
  @Override
  public void surfaceChanged( SurfaceHolder holder, int format, int width, int height ) {
  
      Camera camera = getCamera();
      if ( camera == null ) {
          return;
      }
  
      Camera.Size size = getCameraPreviewSize( camera );
      Camera.Parameters params = camera.getParameters();
      params.setPreviewSize( size.width, size.height );
      camera.setParameters( params );
  
      attachCameraToSurface( camera, holder );
  
      startPreview();
  }
  
  private Camera.Size getCameraPreviewSize( Camera camera ) {
  
      Camera.Parameters params = camera.getParameters();
      List&lt;Camera.Size&gt; supportedSizes = params.getSupportedPreviewSizes();
  
      Rect frame = getSurfaceHolder().getSurfaceFrame();
      int width = frame.width();
      int height = frame.height();
  
      for (Camera.Size size : supportedSizes) {
          if ( size.width &gt;= width || size.height &gt;= height ) {
              return size;
          }
      }
  
      return supportedSizes.get( 0 );
  }
  
  @Override
  public void onClick( View v ) {
  
      switch (v.getId()) {
          case R.id.camera_action_ImageView:
              getCamera().takePicture( getShutterCallback(), null, new JpegPictureCallback() );
          break;
      }
  }
  
  private class JpegPictureCallback implements PictureCallback {
  
      @Override
      public void onPictureTaken( byte[] data, Camera camera ) {
  
          Bitmap bitmap = null;
          try {
              bitmap = BitmapFactory.decodeByteArray( data, 0, data.length );
          }
          catch (OutOfMemoryError e) {
              Log.e( "CameraFragment", "Out of memory decoding image from camera.", e );
              return;
          }
          data = null;
  
          if ( bitmap != null ) {
              new SavePictureWorker( getActivity() ).execute( bitmap );
          }
  
          startPreview();
      }
  }
  </code></pre>