Xamarin设置相机分辨率

时间:2017-03-22 03:56:56

标签: c# android xamarin camera xamarin.android

我在Xamarin Visual Studio中完成了一个自定义相机应用程序,它以非常低的分辨率拍摄照片,所以我添加了这段代码。

public void OnSurfaceTextureAvailable(Android.Graphics.SurfaceTexture surface, int w, int h)
        {
            _camera = Android.Hardware.Camera.Open();
            Android.Hardware.Camera.Parameters param = _camera.GetParameters();
            IList<Android.Hardware.Camera.Size> supportedSizes = param.SupportedPictureSizes;
            Android.Hardware.Camera.Size sizePicture = supportedSizes[0];
            param.SetPictureSize(sizePicture.Height, sizePicture.Width);
            _camera.SetParameters(param);

            var previewSize = _camera.GetParameters().PreviewSize;
            _textureView.LayoutParameters = 
                new FrameLayout.LayoutParams(h, w, GravityFlags.Center);
            try
            {
                _camera.SetPreviewTexture(surface);
                _camera.StartPreview();
            }
            catch (Java.IO.IOException ex)
            {
                Console.WriteLine(ex.Message);
            }
            _textureView.Rotation = 90.0f;
        }

在第一行中,我得到了相机参数,然后我得到了支持的图片大小,之后我选择了第一个([0]),最后我设置了图片大小,

Android.Hardware.Camera.Parameters param = _camera.GetParameters();
            IList<Android.Hardware.Camera.Size> supportedSizes = param.SupportedPictureSizes;
            Android.Hardware.Camera.Size sizePicture = supportedSizes[0];
            param.SetPictureSize(sizePicture.Height, sizePicture.Width);
            _camera.SetParameters(param);

但是当我运行代码时,此消息显示出来:

  

未处理的例外:

     

Java.Lang.RuntimeException:setParameters failed

这里有什么问题?我无法设置函数返回的任何支持的大小?我如何选择其中任何一个,例如第一个?我还需要考虑其他因素吗?

1 个答案:

答案 0 :(得分:3)

您调换了widthheight个参数,从而提供了无效(不支持)的图片尺寸。

param.SetPictureSize(sizePicture.Width, sizePicture.Height);
  

void setPictureSize(int width,int height)

re:https://developer.android.com/reference/android/hardware/Camera.Parameters.html

相关问题