Esempio n. 1
0
        private void OpenCamera(CameraSelection cameraSelection)
        {
            CloseCamera();

            int cameraCount = 0;

            _cameraInfo = new Camera.CameraInfo();
            cameraCount = Camera.NumberOfCameras;
            for (int camIdx = 0; camIdx < cameraCount; camIdx++)
            {
                Camera.GetCameraInfo(camIdx, _cameraInfo);
                if (_cameraInfo.Facing == cameraSelection.ToCameraFacing())
                {
                    try
                    {
                        _camera = Camera.Open(camIdx);
                        //var size = new Camera.Size(_camera, 300, 300);
                        _cameraHardwareRotation = _cameraInfo.Orientation;

                        _selectedCamera  = cameraSelection;
                        _isCameraStarted = true;
                    }
                    catch (Exception e)
                    {
                        CloseCamera();
                        Log.Error("CustomCameraView OpenCamera", e.Message);
                    }
                }
            }
        }
Esempio n. 2
0
 public CameraInfo(CameraManager cameraManager, IWindowManager windowManager)
 {
     _cameraManager  = cameraManager;
     _windowManager  = windowManager;
     _info           = new Camera.CameraInfo();
     _fromFacingToID = DictionaryCameraFacing();
 }
        /// <summary>
        /// Opens the camera.
        /// </summary>
        internal void OpenCamera()
        {
            // get number of cameras
            int cameraCount = Camera.NumberOfCameras;
            // determines whether camera is found
            bool isCameraFound = false;

            Camera.CameraInfo camInfo = new Camera.CameraInfo();
            // for each camera
            for (int i = 0; i < cameraCount; i++)
            {
                // get camera information
                Camera.GetCameraInfo(i, camInfo);
                // if camera is back camera
                if (camInfo.Facing == CameraFacing.Back)
                {
                    // open camera
                    _camera = Camera.Open(i);
                    // indicate that camera is found
                    isCameraFound = true;
                    break;
                }
            }

            // if camera is not found
            if (!isCameraFound)
            {
                // open the first camera
                _camera = Camera.Open(0);
            }
        }
        public void SurfaceCreated(ISurfaceHolder holder)
        {
            Camera.SetPreviewDisplay(holder);
            Camera.CameraInfo camInfo = new Camera.CameraInfo();
            Camera.GetCameraInfo(0, camInfo);
            var rotation = _Context.WindowManager.DefaultDisplay.Rotation;
            int degrees  = 0;

            switch (rotation)
            {
            case
                SurfaceOrientation.Rotation0:
                degrees = 0; break;

            case SurfaceOrientation.Rotation90:
                degrees = 90; break;

            case SurfaceOrientation.Rotation180:
                degrees = 180; break;

            case SurfaceOrientation.Rotation270:
                degrees = 270; break;
            }
            RotataDegrees = (camInfo.Orientation - degrees + 360) % 360;
            Camera.SetDisplayOrientation(RotataDegrees);
            Camera.StartPreview();
        }
Esempio n. 5
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            // Hide the window title and go fullscreen.
            RequestWindowFeature(WindowFeatures.NoTitle);
            Window.AddFlags(WindowManagerFlags.Fullscreen);

            // Create our Preview view and set it as the content of our activity.
            mPreview = new Preview(this);
            SetContentView(mPreview);

            // Find the total number of cameras available
            numberOfCameras = Camera.NumberOfCameras;

            // Find the ID of the default camera
            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            for (int i = 0; i < numberOfCameras; i++)
            {
                Camera.GetCameraInfo(i, cameraInfo);
                if (cameraInfo.Facing == CameraFacing.Back)
                {
                    defaultCameraId = i;
                }
            }
        }
Esempio n. 6
0
        public static int GetCameraOrientation(Context context)
        {
            Camera.CameraInfo info = new Camera.CameraInfo();
            //0 - camera facing back
            Camera.GetCameraInfo(0, info);
            IWindowManager wm      = context.GetSystemService(Context.WindowService).JavaCast <IWindowManager>();
            Display        display = wm.DefaultDisplay;

            var rotation = display.Rotation;
            int degrees  = 0;

            switch (rotation)
            {
            case SurfaceOrientation.Rotation0:
                degrees = 0;
                break;

            case SurfaceOrientation.Rotation90:
                degrees = 90;
                break;

            case SurfaceOrientation.Rotation180:
                degrees = 180;
                break;

            case SurfaceOrientation.Rotation270:
                degrees = 270;
                break;
            }

            return((info.Orientation - degrees + 360) % 360);
        }
Esempio n. 7
0
        public static Camera GetCameraInstance()
        {
            Camera camera  = null;
            int    numCams = Camera.NumberOfCameras;

            if (numCams > 0)
            {
                Camera.CameraInfo info = new Camera.CameraInfo();
                try
                {
                    for (int i = 0; i < numCams; i++)
                    {
                        Camera.GetCameraInfo(i, info);
                        if (info.Facing == Camera.CameraInfo.CameraFacingBack)
                        {
                            camera = Camera.Open(i);
                            camera.SetDisplayOrientation(90);
                            // also set the camera's output orientation
                            Camera.Parameters param = camera.GetParameters();
                            param.SetRotation(90);
                            camera.SetParameters(param);
                            break;
                        }
                    }
                }
                catch (RuntimeException ex)
                {
                    ex.PrintStackTrace();
                }
            }

            return(camera);
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            // Open an instance of the first camera and retrieve its info.
            camera = GetCameraInstance(CAMERA_ID);
            Camera.CameraInfo cameraInfo = null;

            if (camera != null)
            {
                // Get camera info only if the camera is available
                cameraInfo = new Camera.CameraInfo();
                Camera.GetCameraInfo(CAMERA_ID, cameraInfo);
            }

            if (camera == null || cameraInfo == null)
            {
                Toast.MakeText(Activity, "Camera is not available.", ToastLength.Short).Show();
                return(inflater.Inflate(Resource.Layout.fragment_camera_unavailable, null));
            }

            View root = inflater.Inflate(Resource.Layout.fragment_camera, null);

            // Get the rotation of the screen to adjust the preview image accordingly.
            SurfaceOrientation displayRotation = Activity.WindowManager.DefaultDisplay.Rotation;

            // Create the Preview view and set it as the content of this Activity.
            cameraPreview = new CameraPreview(Activity, camera, cameraInfo, displayRotation);
            var preview = root.FindViewById <FrameLayout> (Resource.Id.camera_preview);

            preview.AddView(cameraPreview);

            return(root);
        }
 public void SurfaceCreated(ISurfaceHolder holder)
 {
     try {
         //Try to open front camera if exist...
         Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
         int cameraId     = 0;
         int camerasCount = Camera.NumberOfCameras;
         for (int camIndex = 0; camIndex < camerasCount; camIndex++)
         {
             Camera.GetCameraInfo(camIndex, cameraInfo);
             if (cameraInfo.Facing == CameraFacing.Front)
             {
                 cameraId = camIndex;
                 break;
             }
         }
         mCamera = Camera.Open(cameraId);
         mCamera.SetPreviewDisplay(holder);
     } catch (Exception exception) {
         Console.WriteLine("TrackingFlow === Surface Created Exception === " + exception.Message);
         if (mCamera == null)
         {
             return;
         }
         mCamera.Release();
         mCamera = null;
     }
 }
Esempio n. 10
0
 public CameraPreview(Context context, Camera camera, Camera.CameraInfo cameraInfo,
                      SurfaceOrientation displayOrientation) :
     base(context)
 {
     this.mCamera        = camera;
     this.mSurfaceHolder = this.Holder;
     this.mSurfaceHolder.AddCallback(this);
     this.mSurfaceHolder.SetType(SurfaceType.PushBuffers);
 }
        public override Dialog OnCreateDialog(Bundle savedInstanceState)
        {
            if (Listener == null)
            {
                Dismiss();
                return(null);
            }

            int numberOfCameras = Camera.NumberOfCameras;

            string[] cameraNames  = new string[numberOfCameras];
            int      checkedIndex = 0;

            for (int i = 0; i < numberOfCameras; i++)
            {
                Camera.CameraInfo info = new Camera.CameraInfo();
                Camera.GetCameraInfo(i, info);
                if (info.Facing == Camera.CameraInfo.CameraFacingFront)
                {
                    cameraNames[i] = "Front Facing";
                }
                else if (info.Facing == Camera.CameraInfo.CameraFacingBack)
                {
                    cameraNames[i] = "Rear Facing";
                }
                else
                {
                    cameraNames[i] = "Camera ID: " + i;
                }
                if (i == CameraId)
                {
                    checkedIndex = i;
                }
            }

            AlertDialog.Builder builder = new AlertDialog.Builder(Activity);
            // Set the dialog title
            builder.SetTitle(Resource.String.select_camera)
            // Specify the list array, the items to be selected by default (null for none),
            // and the listener through which to receive callbacks when items are selected
            .SetSingleChoiceItems(cameraNames, checkedIndex,
                                  (sender, args) => { CameraId = (int)args.Which; })
            // Set the action buttons
            .SetPositiveButton(Android.Resource.String.Ok,
                               (sender, args) => { if (Listener != null)
                                                   {
                                                       Listener.OnCameraSelected(CameraId);
                                                   }
                               })
            .SetNegativeButton(Android.Resource.String.Cancel,
                               (sender, args) => { });
            return(builder.Create());
        }
Esempio n. 12
0
            public static int GetCameraRotation()
            {
                int numCameras = Camera.NumberOfCameras;
                var cameraInfo = new Camera.CameraInfo();

                for (int i = numCameras - 1; i >= 0; i--)
                {
                    Camera.GetCameraInfo(i, cameraInfo);
                    if (cameraInfo.Facing == CameraFacing.Front)
                    {
                        break;
                    }
                }

                return(cameraInfo.Orientation);
            }
Esempio n. 13
0
            public static bool HasFrontCamera()
            {
                int numCameras = Camera.NumberOfCameras;
                var cameraInfo = new Camera.CameraInfo();

                for (int i = 0; i < numCameras; i++)
                {
                    Camera.GetCameraInfo(i, cameraInfo);
                    if (cameraInfo.Facing == CameraFacing.Front)
                    {
                        return(true);
                    }
                }

                return(false);
            }
Esempio n. 14
0
        private static Camera getDefaultCamera(int position)
        {
            // Find the total number of cameras available
            int mNumberOfCameras = Camera.NumberOfCameras;

            // Find the ID of the back-facing ("default") camera
            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            for (int i = 0; i < mNumberOfCameras; i++)
            {
                Camera.GetCameraInfo(i, cameraInfo);
                if (((int)cameraInfo.Facing) == position)
                {
                    return(Camera.Open(i));
                }
            }

            return(null);
        }
Esempio n. 15
0
        public static Tuple <int, Camera> GetFrontFacingCameraWithId()
        {
            Tuple <int, Camera> cameraKeyValue = null;
            //if (_cameraKeyValue != null)
            //    return _cameraKeyValue;
            var numberOfCameras = Camera.NumberOfCameras;
            var cameraInfo      = new Camera.CameraInfo();

            for (int i = 0; i < numberOfCameras; ++i)
            {
                Camera.GetCameraInfo(i, cameraInfo);
                if (cameraInfo.Facing == CameraFacing.Front)
                {
                    cameraKeyValue = new Tuple <int, Camera>(i, Camera.Open(i));
                    break;
                }
            }
            return(cameraKeyValue);
        }
Esempio n. 16
0
        public Camera getCameraInstance()
        {
            Camera c = null;

            try {
                c = Camera.Open((int)Android.Hardware.CameraFacing.Back);
                if (c != null)
                {
                    //toLargestSquare(c);
                    toLargestImage(c);
                    Camera.CameraInfo info = new Camera.CameraInfo();
                    Camera.GetCameraInfo(0, info);
                    System.Diagnostics.Debug.WriteLine("DHB:CameraServices_Droid:getCameraInstance info.Orientation:" + info.Orientation);
                    degreesToRotateCameraToNatural = info.Orientation;
                }
            } catch (Exception e) {
            }
            return(c);
        }
Esempio n. 17
0
        public CameraPreview(Context context, Camera camera, Camera.CameraInfo cameraInfo,
                             SurfaceOrientation displayOrientation) :
            base(context)
        {
            // Do not initialize if no camera has been set
            if (camera == null || cameraInfo == null)
            {
                return;
            }

            this.camera             = camera;
            this.cameraInfo         = cameraInfo;
            this.displayOrientation = displayOrientation;

            // Install a SurfaceHolder.Callback so we get notified when the
            // underlying surface is created and destroyed.
            holder = Holder;
            holder.AddCallback(this);
        }
Esempio n. 18
0
        public static int GetCameraDisplayOrientation(int cameraID)
        {
            //return 270;
            var info = new Camera.CameraInfo();

            Camera.GetCameraInfo(cameraID, info);
            var rotation = ((Activity)Forms.Context).WindowManager.DefaultDisplay.Rotation;
            int degrees  = 0;

            switch (rotation)
            {
            case SurfaceOrientation.Rotation0:
                degrees = 0;
                break;

            case SurfaceOrientation.Rotation90:
                degrees = 90;
                break;

            case SurfaceOrientation.Rotation180:
                degrees = 180;
                break;

            case SurfaceOrientation.Rotation270:
                degrees = 270;
                break;
            }

            int result;

            if (info.Facing == CameraFacing.Front)
            {
                result = (info.Orientation + degrees) % 360;
                result = (360 - result) % 360;  // compensate the mirror
            }
            else
            {  // back-facing
                result = (info.Orientation - degrees + 360) % 360;
            }
            return(result);
        }
        /*
         * Switching between cameras if there are multiple cameras on the device.
         */
        public virtual void swapCamera(int index)
        {
            bool wasStarted = this.isCaptureStarted;

            if (mCamera != null)
            {
                stopCapture();
                mCamera.release();
                mCamera = null;
            }

            this.mCameraIndex       = index;
            this.mCamera            = Camera.open(index);
            this.mCurrentDeviceInfo = new Camera.CameraInfo();
            Camera.getCameraInfo(index, mCurrentDeviceInfo);

            if (wasStarted)
            {
                startCapture();
            }
        }
Esempio n. 20
0
        private bool CreateCamera(int cameraIndex)
        {
#if !DEBUG
            try
#endif
            {
                StopCamera();
                _camera = Camera.Open(cameraIndex);
                _camera.SetPreviewDisplay(_surfaceHolder);
                if (OnCameraCreated != null)
                {
                    if (_cameraInfo == null)
                    {
                        _cameraInfo = new Android.Hardware.Camera.CameraInfo();
                    }

                    Camera.GetCameraInfo(cameraIndex, _cameraInfo);
                    OnCameraCreated(this, new CameraInfoEventArgs(_camera, _cameraInfo));
                }
            }
#if !DEBUG
            catch (Exception excpt)
            {
                _camera.Release();
                _camera = null;

                while (excpt.InnerException != null)
                {
                    excpt = excpt.InnerException;
                }

                Report.Error(Context.PackageName, String.Format("Unable to create camera: {0}", excpt.Message));

                return(false);
                // TODO: add more exception handling logic here
            }
#endif

            return(true);
        }
Esempio n. 21
0
        /**
         * Calculate the correct orientation for a {@link Camera} preview that is displayed on screen.
         *
         * Implementation is based on the sample code provided in
         * {@link Camera#setDisplayOrientation(int)}.
         */
        public static int CalculatePreviewOrientation(Camera.CameraInfo info, SurfaceOrientation rotation)
        {
            int degrees = 0;

            switch (rotation)
            {
            case SurfaceOrientation.Rotation0:
                degrees = 0;
                break;

            case SurfaceOrientation.Rotation90:
                degrees = 90;
                break;

            case SurfaceOrientation.Rotation180:
                degrees = 180;
                break;

            case SurfaceOrientation.Rotation270:
                degrees = 270;
                break;
            }

            int result;

            if (info.Facing == CameraFacing.Front)
            {
                result = (info.Orientation + degrees) % 360;
                result = (360 - result) % 360; // compensate the mirror
            }
            else                               // back-facing
            {
                result = (info.Orientation - degrees + 360) % 360;
            }

            return(result);
        }
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);


            // Create a RelativeLayout container that will hold a SurfaceView,
            // and set it as the content of our activity.
            mPreview = new Preview(this.Activity);

            // Find the total number of cameras available
            mNumberOfCameras = Camera.NumberOfCameras;

            // Find the ID of the default camera
            Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
            for (int i = 0; i < mNumberOfCameras; i++)
            {
                Camera.GetCameraInfo(i, cameraInfo);
                if (cameraInfo.Facing == Camera.CameraInfo.CameraFacingBack)
                {
                    mDefaultCameraId = i;
                }
            }
            SetHasOptionsMenu(mNumberOfCameras > 1);
        }
Esempio n. 23
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            SetContentView(Resource.Layout.CameraSurface);

            FindInstance();
            gthrow.Visibility = ViewStates.Invisible;
            gedit.Visibility  = ViewStates.Invisible;
            gedit.Enabled     = false;
            pic_taken         = 0;


            ///#############################  switch cam_function to be implemented from this prototype
            gswitch_cam.Click += delegate
            {
                if (gNr_of_cam == 1) ///am doar o camera
                {
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.SetMessage("Alert")
                    .SetNeutralButton("Close", (Android.Content.IDialogInterfaceOnClickListener)null);
                    AlertDialog alert = builder.Create();
                    alert.Show();
                }
                else
                {
                    if (gCam != null)
                    {
                        gCam.StopPreview();
                        gprew_cam.PrewCam = null;
                        gCam.Release();
                        gCam = null;
                    }

                    gCam     = Camera.Open((gcur_cam + 1) % gNr_of_cam);
                    gcur_cam = (gcur_cam + 1) % gNr_of_cam;

                    gprew_cam.Switch_cam(gCam);

                    gparam = gCam.GetParameters();
                    gCam.SetParameters(gparam);

                    gCam.StartPreview();

                    //rezolv treaba cu butoanele de jos
                    gthrow.Visibility = ViewStates.Gone;
                }
            };/// ###################   end switch cam



            ///##take pic function in main

            gtake_pic.Click += delegate
            {
                img_container = new the_image();

                create_folder();

                gCam.TakePicture(null, null, this);


                //rezolv treaba cu butoanele
                gthrow.Visibility    = ViewStates.Visible;
                gthrow.Enabled       = true;
                gtake_pic.Visibility = ViewStates.Invisible;
                gtake_pic.Enabled    = false;
                gedit.SetWidth(gtake_pic.Width);
                gedit.Visibility       = ViewStates.Visible;
                gedit.Enabled          = true;
                gswitch_cam.Visibility = ViewStates.Invisible;
                gswitch_cam.Enabled    = false;
                pic_taken = 1;



                //Intent intent = new Intent(this, typeof(PhotoView));
                //intent.PutExtra("img_pack", JsonConvert.SerializeObject(img_container.bitma_pic));

                //StartActivity(intent);

                //Finish();
            };
            ///## end here


            //if throw button is pressed delete picture
            delete_pic_if_needed();
            //if Edit button is pressed
            edit_pic();



            gNr_of_cam = Camera.NumberOfCameras;   ///daca nr de cam =1 atunci va fi nevoie sa dam disable la butonu de switch cam, care trebe si ala facut

            CameraInfo cam_info = new Camera.CameraInfo();

            for (int i = 0; i < gNr_of_cam; i++)
            {
                Camera.GetCameraInfo(i, cam_info);
                if (cam_info.Facing == CameraFacing.Front)
                {
                    gDef_front_cam = i;
                }
            }

            gCam = Camera.Open(gDef_front_cam);

            //if(gCam == null)
            //{
            //    gtake_pic.Text = "NULL";
            //} // am verificat daca am camera, sigur am



            gcur_cam = gDef_front_cam;

            gparam = gCam.GetParameters();

            if (gparam.FocusMode.Contains(Camera.Parameters.FocusModeAuto))
            {
                gparam.FocusMode = Camera.Parameters.FocusModeAuto;
            }

            gCam.SetParameters(gparam);

            gprew_cam = new Preview(this, gsurf_view);


            gCam.StartPreview();
        }
		/*
		 * Switching between cameras if there are multiple cameras on the device.
		 */
		public virtual void swapCamera(int index)
		{
			bool wasStarted = this.isCaptureStarted;

			if (mCamera != null)
			{
				stopCapture();
				mCamera.release();
				mCamera = null;
			}

			this.mCameraIndex = index;
			this.mCamera = Camera.open(index);
			this.mCurrentDeviceInfo = new Camera.CameraInfo();
			Camera.getCameraInfo(index, mCurrentDeviceInfo);

			if (wasStarted)
			{
				startCapture();
			}
		}
        protected override void OnLayout(bool changed, int left, int top, int right, int bottom)
        {
            if (!changed)
            {
                return;
            }

            int width         = right - left;
            int height        = bottom - top;
            int previewWidth  = width;
            int previewHeight = height;
            int degrees       = 0;

            if (mPreviewSize != null)
            {
                Display display = mContext.GetSystemService(Context.WindowService).JavaCast <IWindowManager>().DefaultDisplay;

                switch (display.Rotation)
                {
                case SurfaceOrientation.Rotation0:
                    previewWidth  = mPreviewSize.Height;
                    previewHeight = mPreviewSize.Width;
                    mCamera.SetDisplayOrientation(90);
                    degrees = 0;
                    break;

                case SurfaceOrientation.Rotation90:
                    previewWidth  = mPreviewSize.Width;
                    previewHeight = mPreviewSize.Height;
                    degrees       = 90;
                    break;

                case SurfaceOrientation.Rotation180:
                    previewWidth  = mPreviewSize.Height;
                    previewHeight = mPreviewSize.Width;
                    degrees       = 180;
                    break;

                case SurfaceOrientation.Rotation270:
                    previewWidth  = mPreviewSize.Width;
                    previewHeight = mPreviewSize.Height;
                    mCamera.SetDisplayOrientation(180);
                    degrees = 270;
                    break;
                }
            }

            int scaledChildHeight = previewHeight * width / previewWidth;

            //adjust to make explicitally 16:9
            //height = (int)(width * (1080f / 1920));

            //Console.WriteLine("Scaled to " + width + " : " + scaledChildHeight);

            mCameraView.Layout(0, (height - scaledChildHeight) / 2, width, scaledChildHeight + ((height - scaledChildHeight) / 2));

            Camera.CameraInfo info = new Camera.CameraInfo();
            Camera.GetCameraInfo(0, info);

            int rotate = (info.Orientation - degrees + 360) % 360;

            Camera.Parameters camParams = mCamera.GetParameters();
            camParams.SetRotation(rotate);
            mCamera.SetParameters(camParams);
        }
		public override void init()
		{
			mCamera = Camera.open(mCameraIndex);
			mCurrentDeviceInfo = new Camera.CameraInfo();
			Camera.getCameraInfo(mCameraIndex, mCurrentDeviceInfo);

		}
 public override void init()
 {
     mCamera            = Camera.open(mCameraIndex);
     mCurrentDeviceInfo = new Camera.CameraInfo();
     Camera.getCameraInfo(mCameraIndex, mCurrentDeviceInfo);
 }
 public CameraInfo(CameraManager cameraManager)
 {
     _cameraManager = cameraManager;
     _info          = new Camera.CameraInfo();
 }
Esempio n. 29
0
 public CameraInfoEventArgs(Camera camera, Camera.CameraInfo cameraInfo)
 {
     _camera     = camera;
     _cameraInfo = cameraInfo;
 }