我需要使用xamarin实现一个航位推算应用程序 . 为了做到这一点,我需要从Android / ios和Windows手机访问计步器/加速度计 . 由于他们有自己的API被调用,我相信这种方法是在PCL项目中创建一个接口,然后为每个平台提供本机实现 . 然后可以使用组件使这些可见 . 除此之外,是否有任何方法可以在PCL项目本身中实现整个代码?没有每个平台的本机实现?
您的应用程序的逻辑可以在PCL中完成,但调用计步器或加速计必须本地完成 .
基本方法是(只是一个例子)
public interface IPedometer { int GetSteps(); }
这个界面在你的PCL中 .
在每个本机平台上创建一个类(例如NativePedometer),实现此接口并本机编码以获得结果 .
在每个本机平台上使用依赖注入,例如
DependencyService.Register<NativePedometer>();
然后在PCL中使用以下内容 .
DependencyService.Get<IPedometer>() 并在您的PCL中执行业务逻辑 . 这允许您跨平台重用尽可能多的代码 .
DependencyService.Get<IPedometer>()
这是最好的方法,但你不能避免编写本机代码,而本地代码我指的是传统/本机Xamarin项目中的C# .
1 回答
您的应用程序的逻辑可以在PCL中完成,但调用计步器或加速计必须本地完成 .
基本方法是(只是一个例子)
这个界面在你的PCL中 .
在每个本机平台上创建一个类(例如NativePedometer),实现此接口并本机编码以获得结果 .
在每个本机平台上使用依赖注入,例如
然后在PCL中使用以下内容 .
DependencyService.Get<IPedometer>()
并在您的PCL中执行业务逻辑 . 这允许您跨平台重用尽可能多的代码 .这是最好的方法,但你不能避免编写本机代码,而本地代码我指的是传统/本机Xamarin项目中的C# .