示例#1
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);
            }
        }
示例#2
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;
            }
        }
示例#3
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);
            }
        }