title: The startPreview function is slow, Any work around?
body: <p>Problem:</p>
  
  <p>I'm making an application on android which requires a fast response from the camera while shooting images, I noticed a slow behavior from the application, after measuring the time I noticed that function startPreview() is the responsible of the problem.</p>
  
  <p><strong>Code Preview:</strong></p>
  
  <p>This is the necessary part of the code (related to the problem).</p>
  
  <p><strong>PreviewGoogle Class (the custom preview):</strong>
  <em>On the start of the application the surfaceChanged is called, I've set some camera parameters then called the startPreview</em></p>
  
  <pre><code>public class PreviewGoogle extends ViewGroup implements SurfaceHolder.Callback {
      private final String TAG = "myapp1";
      Camera mCamera;
  
      public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
          try
          {
              // Now that the size is known, set up the camera parameters and begin
              // the preview.
              Camera.Parameters parameters = mCamera.getParameters();
  
              parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
              parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_INFINITY);
              parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
              parameters.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
              parameters.setJpegQuality(100);
              parameters.setPictureSize(Globals.CAMERA_WIDTH, Globals.CAMERA_HEIGHT);
  
              requestLayout();
              mCamera.setParameters(parameters);
  
              long before = System.currentTimeMillis();
              mCamera.startPreview();
              long after = System.currentTimeMillis();
  
              Log.d(TAG, "PreviewGoogle, surfaceChanged: startPreview took " + (after - before) + " ms");
          }
          catch (Exception e) {
              Log.d(TAG, "PreviewGoogle, surfaceChanged: " + e.getMessage());
          }
      }
  }
  </code></pre>
  
  <p><strong>PhotoShootActivity class:</strong> <em>In this class I called the startPreview on the rawImageCallback because I'm using the BitmapFactory in the jpegCallback (not necessary thing)</em></p>
  
  <pre><code>public class PhotoShootActivity extends Activity
  {
      private static final String TAG = "myapp1";
      PreviewGoogle preview;
  
      // Handles data for raw picture
      PictureCallback rawCallback = new PictureCallback()
      {
          public void onPictureTaken(byte[] data, Camera camera)
          {
              try
              {
                  long before = System.currentTimeMillis();
                  preview.getCamera().startPreview();
                  long after = System.currentTimeMillis();
  
                  Log.d(PhotoShootActivity.TAG, "PhotoShootActivity, rawCallback: preview started in " + (after - before) + " ms");
              }
              catch(Exception e)
              {
                  Log.e(TAG, "PhotoShootActivity, rawCallback: " + e.getMessage());
              }
          }
      };
  }
  </code></pre>
  
  <p>The Timer Numbers were like this:</p>
  
  <pre><code>09-09 10:58:42.336: DEBUG/myapp1(21958): PhotoShootActivity, onCreate
  **09-09 10:58:44.396: DEBUG/myapp1(21958): PreviewGoogle, surfaceChanged: startPreview took 1457 ms**
  09-09 10:58:48.438: DEBUG/myapp1(21958): PhotoShootActivity, buttonCapture: Picture taken in 65ms
  09-09 10:58:48.496: DEBUG/myapp1(21958): PhotoShootActivity, shutterCallback: Empty
  **09-09 10:58:49.790: DEBUG/myapp1(21958): PhotoShootActivity, rawCallback: preview started in 662 ms**
  </code></pre>
  
  <p><strong>The first startPreview took ~1500ms and the second took 662 ms!!!</strong></p>
  
  <h2>Searched solution:</h2>
  
  <p>The question I'm looking for is not a full code (just tip me :)), I've thought that I could missing something in the preview, and I thought about using threads in this case but I'm not familiar with android-sdk yet (I started with android programing 4 days ago)</p>
  
  <p>Regards...</p>