Я начинаю программировать JS в Angular, но теперь мне поручена эта задача: создайте библиотеку, которая обращается к GPS-модулю телефона, гироскопу и акселерометру (и, возможно, к компасу) для сбора ускорения, положения и некоторых других данных. На самом деле это не очень много кода. Теперь создание самой библиотеки на C# уже сделано коллегой, но мне нужно знать, есть ли способ включить объектный C и Java-код, а также в библиотеку, которая была бы специфичный для платформы iOS/droid. Результат буквально должен быть единственным файлом dll, и он должен использоваться в xamarin. Требовалось даже, чтобы библиотека работала с угловым, о котором я понятия не имею, даже если это возможно. Это было бы бонусом, если бы это было возможно. Какие у нас есть возможности для этого?Как создать кросс-платформенную библиотеку xamarin, которая использует GPS-модуль телефона?
ответ
Вам необходимо создать портативную библиотеку классов (PCL), предназначенную для всех платформ. В этом PCL у вас будет интерфейс, который необходимо реализовать на каждой платформе, используя код, специфичный для платформы. Скажем:
public interface IGps
{
int SomeFunc();
}
Каждый код, который управляет данными GPS, будет делать это в PCL, используя этот интерфейс.
На каждой платформе, на которую вы хотите настроить таргетинг, вам понадобится класс, который реализует этот интерфейс и внедряет его в PCL, используя инфраструктуру Injection Dependency. Таким образом, вы будете использовать определенную платформу из PCL, не зная деталей реализации для каждой платформы.
public class GPSWindowsPhone : IGPS
{
public int SomeFunc()
{
return 1;
}
}
Что касается использования нативного кода каждой платформы, это может быть сделано с помощью привязок для Obj-C и Java кода, а затем с помощью класса, который реализует интерфейс как простая обертка для кода, написанного на родном языке , Однако, если вы все еще не сделали никакого конкретного кодирования на платформе, я бы рекомендовал написать их на C# уже.
Что касается Угловой, вы можете взглянуть на некотором [языке] составитель JS, но я бы просто переписать его: P
Есть уже целый ряд библиотек платформы Креста в компонентной магазине.
Xlabs имеет один https://github.com/XLabs/Xamarin-Forms-Labs/wiki/Geolocator дает вам Lat, Long и заглавия в ведомой модели событий, то вы можете использовать, чтобы получить скорость направление ускорения и т.д. Работает в Xamarin на IOS Android и WP.
Спасибо, надеюсь, я смогу сделать это так. –