Exemplo n.º 1
0
        public void SurfaceCreated(ISurfaceHolder holder)
        {
            try
            {
                if (!(Context.GetSystemService(Class.FromType(typeof(CameraManager))) is CameraManager manager))
                {
                    return;
                }

                string frontCameraId = manager.GetCameraIdList().FirstOrDefault(id => IsFrontFacingCamera(manager, id));
                CameraCharacteristics frontCamera = manager.GetCameraCharacteristics(frontCameraId);

                if (!(frontCamera?.Get(CameraCharacteristics.ScalerStreamConfigurationMap) is StreamConfigurationMap map))
                {
                    return;
                }

                Size[] outputSizes = map.GetOutputSizes(Class.FromType(holder.GetType()));
                Size   firstSmall  = outputSizes
                                     .Where(size => (double)size.Width / size.Height == 16d / 9)
                                     .First(size => size.Height < 900 && size.Width < 900);

                holder.SetFixedSize(firstSmall.Width, firstSmall.Height);

                CameraDevice.StateCallback stateCallback = new MyCameraCallback(holder.Surface, Element);
                manager.OpenCamera(frontCameraId, stateCallback, new Handler(msg => { }));
            }
            catch (Java.IO.IOException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }