milad.coder

سوال : گرفتن عکس بدون پیش نمایش

2 ارسال در این موضوع قرار دارد

با سلام و عرض ادب. 

آیا میشود از دوربین جلوی گوشی بدون این که در برنامه باشیم به صورت خودکار عکس گرفته شود . و بدون نیاز به پیش نمایش باشد !!!

برنامه به صورت سرویس هست .

ممنون میم من رو توی انجام این کار راهنمایی کنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار میتوانید بدین صورت عمل کنید :

[shcode=java]

public class TakePicture extends Activity implements SurfaceHolder.Callback

{

   //a variable to store a reference to the Image View at the main.xml file

   private ImageView iv_image;

   //a variable to store a reference to the Surface View at the main.xml file

   private SurfaceView sv;

   //a bitmap to display the captured image

   private Bitmap bmp;

   //Camera variables

   //a surface holder

   private SurfaceHolder sHolder;

   //a variable to control the camera

   private Camera mCamera;

   //the camera parameters

   private Parameters parameters;

   /** Called when the activity is first created. */

   @Override

   public void onCreate(Bundle savedInstanceState)

   {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       //get the Image View at the main.xml file

       iv_image = (ImageView) findViewById(R.id.imageView);

       //get the Surface View at the main.xml file

       sv = (SurfaceView) findViewById(R.id.surfaceView);

       //Get a surface

       sHolder = sv.getHolder();

       //add the callback interface methods defined below as the Surface View callbacks

       sHolder.addCallback(this);

       //tells Android that this surface will have its data constantly replaced

       sHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

   }

   @Override

   public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)

   {

        //get camera parameters

        parameters = mCamera.getParameters();

        //set camera parameters

        mCamera.setParameters(parameters);

        mCamera.startPreview();

        //sets what code should be executed after the picture is taken

        Camera.PictureCallback mCall = new Camera.PictureCallback()

        {

            @Override

            public void onPictureTaken(byte[] data, Camera camera)

            {

                //decode the data obtained by the camera into a Bitmap

                bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

                //set the iv_image

                iv_image.setImageBitmap(bmp);

            }

        };

        mCamera.takePicture(null, null, mCall);

   }

   @Override

   public void surfaceCreated(SurfaceHolder holder)

   {

       // The Surface has been created, acquire the camera and tell it where

       // to draw the preview.

       mCamera = Camera.open();

       try {

          mCamera.setPreviewDisplay(holder);

       } catch (IOException exception) {

           mCamera.release();

           mCamera = null;

       }

   }

   @Override

   public void surfaceDestroyed(SurfaceHolder holder)

   {

       //stop the preview

       mCamera.stopPreview();

       //release the camera

       mCamera.release();

       //unbind the camera from this object

       mCamera = null;

   }

}

[/shcode]

فقط نکته ای که لازمه باید سایز surfaceview را 0  در نظر بگیرید تا نمایش داده نشود

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری