title: How to focus camera shot?
body: <p>I am able to run a code to take pictures but the resulting image is undesirable. In the following image, the Google logo should be at the center, but it isn't. </p>
  
  <p><img src="https://i.stack.imgur.com/AkBIj.jpg" alt="enter image description here"></p>
  
  <p>I'm using the following code:</p>
  
  <p><strong>CameraView.java</strong></p>
  
  <pre><code>package com.pictures;
  
  import java.io.BufferedOutputStream;
  import java.io.File;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.IOException;
  
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.Intent;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.PixelFormat;
  import android.graphics.Bitmap.CompressFormat;
  import android.hardware.Camera;
  import android.os.Bundle;
  import android.os.Environment;
  import android.util.Log;
  import android.view.KeyEvent;
  import android.view.MotionEvent;
  import android.view.SurfaceHolder;
  import android.view.SurfaceView;
  import android.view.View;
  import android.view.Window;
  import android.view.WindowManager;
  import android.view.View.OnClickListener;
  import android.view.View.OnTouchListener;
  
  public class CamaraView extends Activity implements SurfaceHolder.Callback,
          OnClickListener {
      static final int FOTO_MODE = 0;
      private static final String TAG = "CameraTest";
      Camera mCamera;
      boolean mPreviewRunning = false;
      private Context mContext = this;
  
      public void onCreate(Bundle icicle) {
          super.onCreate(icicle);
  
          Log.e(TAG, "onCreate");
  
          Bundle extras = getIntent().getExtras();
  
          getWindow().setFormat(PixelFormat.TRANSLUCENT);
          requestWindowFeature(Window.FEATURE_NO_TITLE);
          getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
          setContentView(R.layout.main);
          mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);
          mSurfaceView.setOnClickListener(this);
          mSurfaceHolder = mSurfaceView.getHolder();
          mSurfaceHolder.addCallback(this);
          mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
      }
  
      @Override
      protected void onRestoreInstanceState(Bundle savedInstanceState) {
          super.onRestoreInstanceState(savedInstanceState);
      }
  
      Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
          public void onPictureTaken(byte[] imageData, Camera c) {
  
              if (imageData != null) {
  
                  Intent mIntent = new Intent();
  
                  StoreByteImage(mContext, imageData, 50,
                          "ImageName");
                  mCamera.startPreview();
  
                  setResult(FOTO_MODE, mIntent);
                  finish();
  
              }
          }
      };
  
      protected void onResume() {
          Log.e(TAG, "onResume");
          super.onResume();
      }
  
      protected void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
      }
  
      protected void onStop() {
          Log.e(TAG, "onStop");
          super.onStop();
      }
  
      public void surfaceCreated(SurfaceHolder holder) {
          Log.e(TAG, "surfaceCreated");
          mCamera = Camera.open();
  
      }
  
      public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
          Log.e(TAG, "surfaceChanged");
  
          // XXX stopPreview() will crash if preview is not running
          if (mPreviewRunning) {
              mCamera.stopPreview();
          }
  
          Camera.Parameters p = mCamera.getParameters();
          p.setPreviewSize(w, h);
          mCamera.setParameters(p);
          try {
              mCamera.setPreviewDisplay(holder);
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          mCamera.startPreview();
          mPreviewRunning = true;
      }
  
      public void surfaceDestroyed(SurfaceHolder holder) {
          Log.e(TAG, "surfaceDestroyed");
          mCamera.stopPreview();
          mPreviewRunning = false;
          mCamera.release();
      }
  
      private SurfaceView mSurfaceView;
      private SurfaceHolder mSurfaceHolder;
  
      public void onClick(View arg0) {
  
          mCamera.takePicture(null, mPictureCallback, mPictureCallback);
  
      }
  
      public static boolean StoreByteImage(Context mContext, byte[] imageData,
              int quality, String expName) {
  
          File sdImageMainDirectory = new File( Environment.getExternalStorageDirectory() + "/Engagia");
          FileOutputStream fileOutputStream = null;
          String nameFile;
          try {
  
  
              BitmapFactory.Options options=new BitmapFactory.Options();
              options.inSampleSize = 1;
  
              Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0,
                      imageData.length,options);
  
  
              fileOutputStream = new FileOutputStream(
                      sdImageMainDirectory.toString() +"/image.jpg");
  
  
              BufferedOutputStream bos = new BufferedOutputStream(
                      fileOutputStream);
  
              myImage.compress(CompressFormat.JPEG, quality, bos);
  
              bos.flush();
              bos.close();
  
          } catch (FileNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
          return true;
      }
  
  }
  </code></pre>
  
  <p><strong>AndroidManifest.xml</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.pictures"
        android:versionCode="1"
        android:versionName="1.0"&gt;
      &lt;application android:icon="@drawable/icon" android:label="@string/app_name"&gt;
          &lt;activity android:name=".CamaraView"
                    android:label="@string/app_name"&gt;
              &lt;intent-filter&gt;
                  &lt;action android:name="android.intent.action.MAIN" /&gt;
                  &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
              &lt;/intent-filter&gt;
          &lt;/activity&gt;
  
      &lt;/application&gt;
  
      &lt;uses-permission android:name="android.permission.CAMERA"&gt;&lt;/uses-permission&gt;
      &lt;uses-feature android:name="android.hardware.camera" /&gt;
      &lt;uses-feature android:name="android.hardware.camera.autofocus" /&gt;
  
  &lt;/manifest&gt; 
  </code></pre>
  
  <p>main.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent" android:layout_height="fill_parent"
      android:orientation="vertical"&gt;
      &lt;SurfaceView android:id="@+id/surface_camera"
          android:layout_width="fill_parent" android:layout_height="10dip"
          android:layout_weight="1"&gt;      
      &lt;/SurfaceView&gt;  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>Anyone knows the solution for this? Many thanks for any help! :)</p>