title: How to resolve the ANR error while invoking the Camera?
body: <p>I have two button's in the main menu. I invoking the camera when I press the 1st button. Here I didn't get any issue. Camera working properly. After taking the picture, I come back in to main menu and again I press the 1st button. Here I got the issue. Camera invoking properly. But I got <code>ANR error (Reason: keyDispatchingTimedOut)</code> while i'm taking the picture. How to resolve this issue?</p>
  
  <p><strong>Edit::</strong></p>
  
  <p>I'm using following code,</p>
  
  <p><strong>Button Listener</strong>,</p>
  
  <pre><code>Button imageButton = (Button) findViewById(R.id.button1);
  imageButton.setOnClickListener(new  View.OnClickListener() {
  
      public void onClick(View arg0) {
      Intent intent = new Intent();
      intent.setClass(activity, ImageActivity.class);
      startActivity(intent);
      }
  });
  </code></pre>
  
  <p><strong>ImageActivity.java</strong></p>
  
  <pre><code>public class ImageActivity extends Activity implements SurfaceHolder.Callback {
      private Camera camera = null;
      private SurfaceHolder surfaceHolder = null;
      private boolean previewRunning = false;
      private Button btnDone, btnCapture, btnRetake;
      private Bitmap mBitmap;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          getWindow().setFormat(PixelFormat.TRANSLUCENT);
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
          setContentView(R.layout.surface_screen);
          SurfaceView surfaceView = (SurfaceView) findViewById(R.id.camerapreview);
          surfaceHolder = surfaceView.getHolder();
          surfaceHolder.addCallback(this);
          surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
          surfaceHolder.setFixedSize(getWindow().getWindowManager()
                  .getDefaultDisplay().getWidth(), getWindow().getWindowManager()
                  .getDefaultDisplay().getHeight());
          LayoutInflater  controlInflater = LayoutInflater.from(getBaseContext());
  
          final View viewControl = controlInflater.inflate(R.layout.control, null);
          LayoutParams layoutParamsControl = new LayoutParams(
                  LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
          activity.addContentView(viewControl, layoutParamsControl);
  
          btnCapture = (Button) findViewById(R.id.takepicture);
  
          btnDone = (Button) findViewById(R.id.send);
  
          btnCapture.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
                  camera.takePicture(null, picCalBac, picCalBac);
              }
          });
  
  
      Camera.PictureCallback picCalBac = new PictureCallback() {
  
          public void onPictureTaken(byte[] data, Camera camera) {
              if (data != null) {
                  mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
              }
          }
      };
  
      public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
          if (previewRunning) {
              camera.stopPreview();
          }
          try {
              camera.setPreviewDisplay(surfaceHolder);
          } catch (IOException e) {
              Log.d("IOException", e.getMessage());
          }
          camera.startPreview();
          previewRunning = true;
      }
  
      public void surfaceCreated(SurfaceHolder arg0) {
          camera = Camera.open(0);
      }
  
      public void surfaceDestroyed(SurfaceHolder arg0) {
          camera.stopPreview();
          previewRunning = false;
          camera.release();
      }
  }
  </code></pre>