Пример #1
0
        /**
         * Attempts to find a preview size that matches the provided width and height (which
         * specify the dimensions of the encoded video).  If it fails to find a match it just
         * uses the default preview size.
         * <p>
         * TODO: should do a best-fit match.
         */
        private void choosePreviewSize(Camera.Parameters parms, int width, int height)
        {
            // We should make sure that the requested MPEG size is less than the preferred
            // size, and has the same aspect ratio.
            Camera.Size ppsfv = parms.PreferredPreviewSizeForVideo;
            if (AppSettings.Logging.SendToConsole && ppsfv != null)
            {
                Log.Debug(TAG, "Camera preferred preview size for video is " +
                          ppsfv.Width + "x" + ppsfv.Height);
            }

            foreach (Camera.Size size in parms.SupportedPreviewSizes)
            {
                if (size.Width == width && size.Height == height)
                {
                    parms.SetPreviewSize(width, height);
                    return;
                }
            }

            Log.Warn(TAG, "Unable to set preview size to " + width + "x" + height);
            if (ppsfv != null)
            {
                parms.SetPreviewSize(ppsfv.Width, ppsfv.Height);
            }
        }
Пример #2
0
        private void UpdateCameraAspect()
        {
            try
            {
                Camera.Parameters camParams = camera.GetParameters();
                Camera.CameraInfo info      = new Camera.CameraInfo();
                Camera.GetCameraInfo((int)Android.Hardware.CameraFacing.Back, info);

                Camera.Size size = GetOptimalPreviewSize(camParams.SupportedPreviewSizes, width, height);

                camParams.SetPreviewSize(size.Width, size.Height);

                int rotation = (info.Orientation + 360) % 360;

                camParams.SetRotation(rotation);

                if (camParams.SupportedFocusModes.Contains(Camera.Parameters.FocusModeContinuousPicture))
                {
                    camParams.FocusMode = Camera.Parameters.FocusModeContinuousPicture;
                }

                camera.SetParameters(camParams);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }
Пример #3
0
        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
        {
            if (_holder.Surface == null)
            {
                return;
            }
            try
            {
                _camera.StopPreview();
            }
            catch (Exception ex)
            {
                string message = ex.Message;
            }
            if (_previewSize != null)
            {
                try
                {
                    Android.Hardware.Camera.Parameters parameters = _camera.GetParameters();
                    parameters.SetPreviewSize(_previewSize.Width, _previewSize.Height);
                    parameters.SetPictureSize(_picSize.Width, _picSize.Height);
                    _camera.SetParameters(parameters);
                    _camera.SetPreviewDisplay(_holder);
                }
                catch (Exception ex)
                {
                    throw;
                }
            }

            Android.App.Activity activity = _context as Android.App.Activity;
            if (activity != null)
            {
                int orientation = CameraHelper.GetCameraDisplayOrientation(activity, _cameraId, displayRotation);
                _camera.SetDisplayOrientation(orientation);
            }

            try
            {
                Parameters parameters = _camera.GetParameters();

                foreach (var previewSize in  _camera.GetParameters().SupportedPreviewSizes)
                {
                    // if the size is suitable for you, use it and exit the loop.
                    parameters.SetPreviewSize(previewSize.Width, previewSize.Height);
                    break;
                }

                _camera.SetParameters(parameters);
                _camera.SetPreviewDisplay(_holder);
                _camera.StartPreview();
            }
            catch (Exception ex)
            {
                Log.Debug(Tag.ToString(), "Error starting camera preview: " + ex.Message);
            }
        }
Пример #4
0
        public void SurfaceChanged(ISurfaceHolder holder, Android.Graphics.Format format, int w, int h)
        {
            // Now that the size is known, set up the camera parameters and begin
            // the preview.
            Camera.Parameters parameters = mCamera.GetParameters();
            parameters.SetPreviewSize(mPreviewSize.Width, mPreviewSize.Height);
            RequestLayout();

            mCamera.SetParameters(parameters);
            mCamera.StartPreview();
        }
Пример #5
0
        public void SwitchCamera(Camera camera)
        {
            SetCamera(camera);
            try {
                camera.SetPreviewDisplay(mHolder);
            } catch (IOException exception) {
                Log.Error(TAG, "IOException caused by setPreviewDisplay()", exception);
            }
            Camera.Parameters parameters = camera.GetParameters();
            parameters.SetPreviewSize(mPreviewSize.Width, mPreviewSize.Height);
            RequestLayout();

            camera.SetParameters(parameters);
        }
Пример #6
0
        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
        {
            Camera.Parameters parameters = Parent.camera.GetParameters();
            Camera.Size size = Parent.GetBestPreviewSize(width, height,
            parameters);

            if (size != null)
            {
                parameters.SetPreviewSize(size.Width, size.Height);
                parameters.SetPictureSize(size.Width, size.Height);
                parameters.SetRotation(90);
                parameters.FocusMode = Camera.Parameters.FocusModeContinuousPicture;
                Parent.camera.SetParameters(parameters);
                Parent.camera.StartPreview();
                Parent.inPreview = true;
            }
        }
Пример #7
0
        public void SurfaceChanged(ISurfaceHolder holder, Format format, int w, int h)
        {
            // Now that the size is known, set up the camera parameters and begin
            // the preview.
            Camera.Parameters parameters = camera.GetParameters();

            IList <Camera.Size> sizes = parameters.SupportedPreviewSizes;

            Camera.Size optimalSize = GetOptimalPreviewSize(sizes, w, h);

            parameters.SetPreviewSize(optimalSize.Width, optimalSize.Height);

            camera.SetDisplayOrientation(90);
            camera.SetParameters(parameters);
            int dataBufferSize = (int)(optimalSize.Width * optimalSize.Height *
                                       (ImageFormat.GetBitsPerPixel(camera.GetParameters().PreviewFormat) / 8.0));

            _reader = new QRCodeReader();
            camera.StartPreview();
        }
Пример #8
0
        public void SurfaceChanged(ISurfaceHolder holder, [GeneratedEnum] Format format, int width, int height)
        {
            if (holder.Surface == null)
            {
                return;
            }

            try
            {
                camera.StopPreview();
            }
            catch (Exception e)
            {
                Log.Debug("Exception", e.Message);
                return;
            }

            try
            {
                //FrameLayout layout = (FrameLayout)FindViewById(Resource.Id.frame);
                //ViewGroup.LayoutParams parms = layout.LayoutParameters;
                //parms.Height = 960;
                //parms.Width = 1280;

                //parms.Height = 1440;
                //parms.Width = 1920;
                //layout.LayoutParameters = parms;

                Display display = WindowManager.DefaultDisplay;
                Point   size    = new Point();
                display.GetSize(size);
                int displayWidth  = size.X;
                int displayHeight = size.Y;


                // resolution of desktop viewer is 640x480
                scaleX = Convert.ToInt32(displayWidth / 640);
                scaleY = Convert.ToInt32(displayHeight / 480);

                //Configration Camera Parameter(full-size)
                Android.Hardware.Camera.Parameters parameters      = camera.GetParameters();
                Android.Hardware.Camera.Size       bestPreviewSize = GetBestPreviewSize(width, height, parameters);

                parameters.SetPictureSize(320, 240);
                //parameters.SetPreviewSize(bestPreviewSize.Width, bestPreviewSize.Height);
                parameters.SetPreviewSize(320, 240);

                parameters.PreviewFormat = Android.Graphics.ImageFormatType.Nv21;// ImageFormat.Nv21;
                parameters.FocusMode     = Android.Hardware.Camera.Parameters.FocusModeContinuousPicture;


                camera.SetParameters(parameters);
                camera.SetPreviewDisplay(holder);
                camera.SetPreviewCallback(this);
                camera.StartPreview();
            }
            catch (Exception e)
            {
                Log.Debug("Exception", e.Message);
            }
        }