如何在Xamarin拍照?

时间:2016-01-27 19:43:02

标签: c# android .net xamarin xamarin.android

我正在尝试使用Android.Hardware中的Camera类拍照。我正在获取饲料,相机正在自动填充。问题是我不知道如何拍照。

_camera = Camera.Open();
Camera.Parameters param = _camera.GetParameters();
param.FocusMode = Camera.Parameters.FocusModeContinuousPicture;
_camera.SetParameters(param);


var previewSize = _camera.GetParameters().PreviewSize;
_textureView.LayoutParameters =
    new FrameLayout.LayoutParams(previewSize.Width,
        previewSize.Height, GravityFlags.Center);

try
{
    _camera.SetPreviewTexture(surface);
    _camera.StartPreview();
}
catch (Java.IO.IOException ex)
{
    System.Console.WriteLine(ex.Message);
}

// this is the sort of thing TextureView enables
_textureView.Rotation = 90.0f;

2 个答案:

答案 0 :(得分:4)

此链接可以帮助您https://developer.xamarin.com/recipes/android/other_ux/camera_intent/take_a_picture_and_save_using_camera_app/

但您可以使用此代码拍照(TakeAPicture)。

private void TakeAPicture (object sender, EventArgs eventArgs)
{
    Intent intent = new Intent (MediaStore.ActionImageCapture);
    App._file = new File (App._dir, String.Format("myPhoto_{0}.jpg", Guid.NewGuid()));
    intent.PutExtra (MediaStore.ExtraOutput, Uri.FromFile (App._file));
    StartActivityForResult (intent, 0);
}

快乐的编码! :)

答案 1 :(得分:1)

TakePicture方法是您正在寻找的方法。要使用它,您需要实现一些接口。特别是IPictureCallback在OnPictureTaken中接收图片。

示例实现如下所示:

public void OnPictureTaken(byte[] data, Android.Hardware.Camera camera)
{
    camera.StopPreview();
    Toast.MakeText(this, "Cheese", ToastLength.Short).Show();
    camera.StartPreview();
}

为防止应用程序挂起,您需要停止预览并重新启动它。