Автоматическое связывание с jar не создает дженерики

Мы создаем навигационное приложение, используя Indoor Atlas SDK, у которого есть карта в верхних 30% экрана и 2 списка в нижних 70% экрана, и чтобы сохранить кросс-платформенный код, я создал его с помощью Xamarin Forms Portable Class Библиотека и использование Dependency Injection для кода, специфичного для платформы.

Я создал библиотеку привязок, как описано в этом учебном пособии, и хотя это было сложно в начале, потому что, как только я загружал приложение в эмулятор, оно вылетало из-за ошибки Unspecified Link Error, которая оказалась из-за того факта, что мой эмулятор по умолчанию был на архитектуре x86, тогда как собственные библиотеки IndoorAtlas присутствуют только для armabi-v7a и arm64-v8a, и запуск приложения на таком устройстве не выдал ошибку, но я не могу заставить его работать, как при обнаружении текущего местоположения и получении текущего плана этажа хотя я могу заставить его работать совсем наоборот.

Чтобы показать точный код - это не работает, когда BackgroundListener.Currentlocation имеет тип Android.Locations.Location

mIALocationManager = IALocationManager.Create(this);
IALocation currentLocation = IALocation.From(BackgroundListener.Currentlocation);
mIALocationManager.SetLocation(currentLocation);

но это делает

string floorPlanID = "b11a5c2b-6f9b-4865-b52e-lastidpart";
IALocation FLOOR_PLAN_ID = IALocation.From(IARegion.FloorPlan(floorPlanID));
mIALocationManager.SetLocation(FLOOR_PLAN_ID);

Под "не работает" я подразумеваю, что он не способен обнаружить регион, который в значительной степени интуитивно понятен. Я проверил документы и нашел этот код для получения FloorPlan

private void fetchFloorPlan(String id) {
    // Cancel pending operation, if any
    if (mPendingAsyncResult != null && !mPendingAsyncResult.isCancelled()) {
        mPendingAsyncResult.cancel();
    }

    mPendingAsyncResult = mResourceManager.fetchFloorPlanWithId(id);
    if (mPendingAsyncResult != null) {
        mPendingAsyncResult.setCallback(new IAResultCallback<IAFloorPlan>()     {
        @Override
        public void onResult(IAResult<IAFloorPlan> result) {
            Logger.d(TAG, "onResult: %s", result);

            if (result.isSuccess()) {
                handleFloorPlanChange(result.getResult());
            } else {
                // do something with error
                Toast.makeText(FloorPlanManagerActivity.this,
                    "loading floor plan failed: " + result.getError(), Toast.LENGTH_LONG)
                    .show();
            }
        }
     }, Looper.getMainLooper()); // deliver callbacks in main thread
  }
}

Сейчас я потратил 3 дня на поиски решения, но на момент написания документации IndoorAtlas не очень подробный (или, возможно, я просто привык к подробным видам MSDN). У меня есть кое-какие знания Java (так как я изучал их в колледже, но не был знанием), и это было основной причиной, по которой я перешел на Xamarin. Поскольку C# является моим основным языком знаний, я могу завершить большую часть приложения с помощью Xamarin всего за 3 недели, тогда как я не смог закончить даже половину с Java за последние 6 месяцев (что исключает любые предложения по работе приложения в Native Android).).

Теперь запросы

  • fetchFloorPlan требует floorPlanID в качестве параметра, как я могу получить это автоматически.
  • В Java мы можем создать интерфейс, чего нет в C#, так как мне получить план этажа?
  • Автоматические привязки JAR в Xamarin создают IATask и другие интерфейсы (неуниверсальные), в то время как функция ожидает обобщенных элементов, я могу создавать свои собственные задачи, но другие функции ожидают этих входных данных, поэтому никакой выгоды.
  • Я подозреваю, что мы можем воссоздать все шаги в C#, но у меня нет такого большого опыта в Java
  • Я также подозреваю, что анонимные методы могли бы решить такое решение, если бы код был полностью на C#, но я не мог понять путь здесь.

Поэтому мне нужна помощь и руководство в поиске пути к решению.

Другие моменты, которые, хотя и дают причины, по которым возникает проблема непатентованных средств, я ищу решение этой проблемы.

Примечание. Если вы считаете, что я являюсь вампиром-помощником для получения бесплатной помощи, мы можем подключиться и передать на внешний ресурс какой-то раздел приложения, поскольку я уже разместил запрос на Upwork, и в любом случае я опубликую решение для сообщества для будущих читателей.

0 ответов

Другие вопросы по тегам