在 Xamarin.Forms 中使用 Android 绑定
Posted
技术标签:
【中文标题】在 Xamarin.Forms 中使用 Android 绑定【英文标题】:Use Android binding in Xamarin.Forms 【发布时间】:2020-09-30 03:37:39 【问题描述】:我正在尝试使用 Xamarin.Forms 构建应用程序。我想使用 Google ML Kit,所以我找到了 android 的绑定。
我能够将引用导入 Xamarin.Forms 解决方案的 Android 部分,并希望在 UI 后面的代码中使用它。
但是在in
项目中,当我执行using Xamarin.Firebase.ML.Vision;
时,当然会出错,因为引用在in.Android
项目中。我是否试图在 Xamarin 中做一些反模式的事情?
【问题讨论】:
使用自定义渲染器或 DependencyService 在 XF 中使用特定于平台的代码。两者都记录在 Xamarin 网站上 提醒您注意,Firebase.ML 和 Firebase ML Kit 是两个不同的库。在 github 上看到这个问题。简而言之,android 库仅涵盖 Firebase.ML(基于云的机器学习)而不是 ML Kit(用于设备机器学习)。见here。我在我的 ios 答案中链接的绑定库似乎是 ML Kit,但没有 android 等价物。 【参考方案1】:Xamarin.Firebase.ML.Vision
是一个 Xamarin.Android
特定的库。 Xamarin.Forms
不存在。如前所述,您需要使用DependencyService
来启动特定于平台的实现。在这种情况下,Activity
实现了您需要的 Xamarin.Firebase.ML.Vision
代码。
public interface IVisionImplementer
void StartActivity();
然后在您的Xamarin.Android
项目中。
[assembly: Dependency(typeof(VisionImplementer))]
public class VisionImplementer : IVisionImplementer
public void StartActivity()
///FirebaseActivity is where you will implement the actual vision code you're trying to implement.
var intent = new Intent(Android.App.Application.Context, typeof(FirebaseVisionActivity))
intent.SetFlags(ActivityFlags.NewTask);
Android.App.Application.Context.StartActivity(intent);
从Xamarin.Forms
使用:
var visionImplementer = DependencyService.Get<IVisionImplementer>();
visionImplementer.StartActivity();
就是这样。还有适用于 iOS 的 library,因此您可以为您的 iOS 项目做同样的事情。
【讨论】:
以上是关于在 Xamarin.Forms 中使用 Android 绑定的主要内容,如果未能解决你的问题,请参考以下文章
在 Xamarin.Forms 中使用 Android 绑定
在 iOS 上的 Xamarin.Forms.Maps 中使用 Xamarin.Essentials Geolocation 获取设备位置的奇怪问题
Xamarin.Forms:Forms.Context 已过时
如何使用 ScnViewGestures.Forms 在 Xamarin.Forms 中使用 TouchDown 和 TouchUp 事件创建视图