【问题标题】:Implementing a dead reckoning application using Xamarin Forms使用 Xamarin Forms 实现航位推算应用程序
【发布时间】:2017-02-10 21:42:22
【问题描述】:
我需要使用 xamarin 实现航位推算应用程序。为此,我需要从 Android/ios 和 windows phone 访问计步器/加速度计。由于他们有自己的 API 可以调用,我相信方法是在 PCL 项目中创建一个接口,然后为每个平台提供本机实现。然后可以使用程序集使这些可见。除此之外,是否有任何方法可以在 PCL 项目本身中实现整个代码?没有每个平台的本机实现?
【问题讨论】:
标签:
xamarin
xamarin.ios
xamarin.android
xamarin.forms
cross-platform
【解决方案1】:
您的应用程序的逻辑可以在 PCL 中完成,但调用计步器或加速度计必须在本地完成。
基本方法是(只是一个例子)
public interface IPedometer
{
int GetSteps();
}
这个接口在你的 PCL 中。
在每个原生平台上创建一个类(例如 NativePedometer),实现此接口并原生代码以获取结果。
在每个原生平台上使用依赖注入,例如
DependencyService.Register<NativePedometer>();
然后在您的 PCL 中使用以下内容。
DependencyService.Get<IPedometer>() 并在您的 PCL 中执行业务逻辑。这允许您跨平台重用尽可能多的代码。
这是最好的方法,但你不能避免编写本机代码,我所说的本机代码是指传统/本机 Xamarin 项目中的 C#。