Xamarin或Phonegap - 用集成摄像头拍照

时间:2014-08-12 00:10:34

标签: cordova xamarin

我想我可能知道答案,但是:

我正在构建一个需要用户拍照的应用。客户希望从应用程序界面中拍摄照片,这样他们的品牌就会保留,他们可以使用自定义快门图标等。

我正在评估PhoneGap和Xamarin,但到目前为止,我只能找到如何启动设备默认相机应用程序并从那里取回照片。

使用deault相机应用程序查看很多应用程序,所以我猜测我正在寻找的可能超出这些框架,如Xamarin和Phone Gap。

如果我们不是本地建设,那么还有办法做客户想要的吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

Xamarin应用程序是一个原生应用程序,你可以从ObjC做什么,你可以用C#和Xamarin做。将视频捕获附加到UIView非常简单,一种方法是使用AVCaptureVideoPreviewLayer

创建一个新项目并将其复制到视图控制器ViewDidLoad方法,你应该得到一个带有按钮的视频覆盖:

public override void ViewDidLoad()
{
    base.ViewDidLoad();

    // Perform any additional setup after loading the view, typically from a nib.

    var captureSession = new MonoTouch.AVFoundation.AVCaptureSession();
    var previewLayer = new MonoTouch.AVFoundation.AVCaptureVideoPreviewLayer(captureSession)
    {
            LayerVideoGravity = MonoTouch.AVFoundation.AVLayerVideoGravity.ResizeAspectFill,
            Frame = this.View.Bounds
    };
    var device = MonoTouch.AVFoundation.AVCaptureDevice.DefaultDeviceWithMediaType(
                     MonoTouch.AVFoundation.AVMediaType.Video);

    NSError error;

    var input = new MonoTouch.AVFoundation.AVCaptureDeviceInput(device, out error);

    captureSession.AddInput(input);

    this.View.Layer.AddSublayer(previewLayer);

    var button = new UIButton(new RectangleF(0, 0, this.View.Bounds.Width, 100));

    button.SetTitle("My button", UIControlState.Normal);

    button.TouchUpInside += (sender, e) => 
        {
            System.Diagnostics.Debug.WriteLine("Take a still picture here");
        };

    this.View.Add(button);

    captureSession.StartRunning();
}

答案 1 :(得分:0)

Xamarin不使用"默认相机应用"拍照 - 你可以留在你的应用程序中 - 但默认情况下它使用标准的iOS Camera控件。如果你想自定义它们,你可以。来自Xamarin的这个sample使用自定义叠加层(我还没有尝试过,我依赖于评论)