/** * 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); } }
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); } }
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); } }
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(); }
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); }
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; } }
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(); }
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); } }