Xamarin使用依赖服务表示如何拍照

时间:2016-07-01 04:19:00

标签: xamarin dependency-injection xamarin.android android-camera xamarin.forms

首先,我是Xamarin的新手,但我已经非常喜欢它在平台之间最大化代码共享的概念。

我按照本教程在一个空白的新Xamarin Forms(2.3)项目中成功实现了摄像头访问。简单而伟大的例子btw。

但是我不喜欢我依赖Android中的Activity类来完成它的方式。

我正在尝试使用依赖关系服务(就像这样:https://developer.xamarin.com/guides/xamarin-forms/dependency-service/text-to-speech/)以更优雅的方式重构代码,但没有成功。

它不起作用,因为在Xamarin指南中没有必要在Android界面实现中有一个Activity。

主要问题是:

  1. 创建服务接口(ICamera)后,当我尝试实现ShouldTakePicture方法时(在Android Camera服务上)我需要一个Activity来调用它:StartActivityForResult(intent, 0);

  2. 还可以在OnActivityResult()检索图像。有人可以在没有活动的情况下指出我这样做的方法(我只是在寻找一种方法来处理它而不依赖于活动)。

  3. 有办法实现吗?我的愿望是打电话给ICamera。 ShouldTakePicture()通过Xamarin.Forms在不同的地方,在Android Activitys上实现最少(或非)。

    谢谢你们!

1 个答案:

答案 0 :(得分:0)

我用Media Plugin拍照。在Nuget管理器中安装并在PCL中使用。

var file = await Plugin.Media.CrossMedia.Current.TakePhotoAsync(new StoreCameraMediaOptions
{
    Name = "IMG_1.jpg"
});