You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iot/projects/Demo/Demo.Android/Controls/CameraPreviewRenderer.cs

48 lines
1.6 KiB

using Android.Content;
using Android.Hardware;
using Demo.Droid.Controls;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;
[assembly: ExportRenderer(typeof(Demo.Controls.CameraPreview), typeof(CameraPreviewRenderer))]
namespace Demo.Droid.Controls
{
public class CameraPreviewRenderer : ViewRenderer<Demo.Controls.CameraPreview, Demo.Droid.Controls.CameraPreview>
{
private CameraPreview cameraPreview;
public CameraPreviewRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Demo.Controls.CameraPreview> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control == null)
{
cameraPreview = new CameraPreview(Context);
SetNativeControl(cameraPreview);
}
var camera = Camera.Open((int)e.NewElement.Camera);
var parameters = camera.GetParameters();
var width = parameters.PreviewSize.Width;
var height = parameters.PreviewSize.Height;
var format = parameters.PreviewFormat;
camera.SetPreviewCallback(new PreviewCallback(width, height, format));
Control.Preview = camera;
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
Control.Preview.Release();
}
base.Dispose(disposing);
}
}
}