如何创建使用手机GPS模块的跨平台xamarin库?

时间:2015-10-02 13:06:23

标签: xamarin gps cross-platform accelerometer gyroscope

我是一个开始在Angular开发的JS程序员,但现在我被分配了这个任务:创建一个访问手机GPS模块,陀螺仪和加速度计(可能还有指南针)的库来收集加速度,位置和其他一些数据。真的不是很多代码。现在,用C#创建库本身已经由同事完成但我需要知道是否有方法将Objective-C和java代码包含在库中,这将是分别针对ios / droid的平台特定代码。 结果字面上必须是一个单独的dll文件,它必须在xamarin中可用。要求甚至是图书馆使用角度,我不知道是否可能。如果可以的话,这将是一个奖励。 我们有什么选择来实现这个目标?

2 个答案:

答案 0 :(得分:0)

您需要创建一个面向所需平台的可移植类库(PCL)。在此PCL中,您将需要使用特定于平台的代码在每个平台中实现一个接口。说:

public interface IGps
{
    int SomeFunc();
}

操作GPS信息的每个代码都将在PCL中使用此界面执行此操作。

在您要定位的每个平台中,您需要一个实现此接口的类,并使用依赖注入框架将其注入PCL。这样您就可以在不知道每个平台的实现细节的情况下使用PCL中的特定平台。

public class GPSWindowsPhone : IGPS
{
    public int SomeFunc() 
    {
        return 1;
    }
}

至于使用每个平台的本机代码,可以使用Obj-CJava代码的绑定,然后使用实现接口的类作为代码的简单包装器来完成用母语写的。但是,如果您还没有完成任何特定于平台的编码,我建议您使用C#编写它们。

关于Angular,您可以查看JS编译器的一些[语言],但我只是重写它:P

答案 1 :(得分:0)

组件商店中已有许多跨平台库。

Xlabs有一个 https://github.com/XLabs/Xamarin-Forms-Labs/wiki/Geolocator 在事件驱动模型中为您提供Lat,Long和Heading,然后您可以使用它来获得速度方向加速等。在IOS Android和WP上使用Xamarin。