Перейти к содержанию
Fire Monkey от А до Я

mazayhin

Пользователи
  • Постов

    163
  • Зарегистрирован

  • Посещение

  • Победитель дней

    19

Весь контент mazayhin

  1. После получения матрицы, определяете поворот устройства через IFMXScreenService.GetScreenOrientation к примеру, или опять же, напрямую через api. Получаете углы (var x, y: integer; OutMatrix: TJavaArray<single>(16)): 0: ничего не делаем, в т.ч. ремап 90: X := TJSensorManager.JavaClass.AXIS_Y; Y := TJSensorManager.JavaClass.AXIS_MINUS_X; 180: X := TJSensorManager.JavaClass.AXIS_X; Y := TJSensorManager.JavaClass.AXIS_MINUS_Y; 270: X := TJSensorManager.JavaClass.AXIS_MINUS_Y; Y := TJSensorManager.JavaClass.AXIS_X; TJSensorManager.JavaClass.remapCoordinateSystem(FMatrix(изначальная матрица), x, y, OutMatrix) TJSensorManager.JavaClass.getOrientation(OutMatrix, FOrientation)
  2. Наверное можно, если смогу - подскажу. Ну и по итогам, хорошо, если б вы все привели это в нормальный вид, и выложили готовое решение на форум.
  3. Все на скорую руку. Никаких проверок не делал. Вообще, за основу брал статью с хабра https://habr.com/ru/post/137820/ Так же учтите, что необходимо проверить наличие магнитного датчика, т.к. без него getRotationMatrix всегда будет возвращать false, т.о. не получится определить положение устройства. Так же, еще, getOrientation вернет неправильные значения при повороте телефона, для этого надо определять текущую ориентацию экрана, и на основании этого делать remapCoordinateSystem, и только после этого уже определять положение. Смотрите, принцип понятен. Обертки взял от FMXExpress, немного подчистил, что бы не тянуть лишнего. Если будете брать сами, то обратите внимание: android.hardware.SensorManager: надо изменить JavaSignature на [JavaSignature('android/hardware/SensorManager')] для интерфейса JSensorManager (убрать $ и что после него, иначе, EJNIFatal) android.hardware.SensorEventListener: неправильно унаследованы интерфейсы (от JObject), а так как SensorEventListener это интерфейс, наследуемся от IJavaClass и IJavaInstance соответственно. SensorManager.zip
  4. Не успел сегодня. В общем, необходимо создать обертку для андроидовского system.hardware.SensorManager. и через нее уже работать. Получить интерфейс JSensorManager, вызвать registerListner для обоих сенсоров (листнер надо описать как клас ... = class (IJavaLocsl, JSensorEventListner), вроде так, пишу с телефона), его процедура по событию системы и будет вызываться. Ну а там, собственно уже, TJavaSensorManager.JavaClass.getRotationMatrix(R, nil, A, G) .getOrientation(R, O) Все переменные это TJavaArray<single>, размер у R: 16, остальные 3 В общем, работы совсем ничего. Хотите-попробуйте посмотреть и разобраться, ну или завтра будет пример с простейшей оберткой, на нем и посмотрите.
  5. А в чем проблема использовать getOrientationMatrix SensorManager'a? Обертки есть от FMXExpress к примеру, или самому можно перевести. Может если время сегодня хватит - набросаю проект и скину
  6. Описать BroadcastReceiver в приложении, а из сервиса слать сообщение (интент) с необходимыми данными. На форуме есть пример даже с сервисом
  7. Сервисы появились, если не изменяет память, с Сиэтла..
  8. mazayhin

    Serial port

    Но все же, думаю лучше, скомпилировать JAR и к нему уже делать обертку. Т.к. в противном случае, придется с собой очень много чего тащить в проект (java.*, javax.* и прочие, смотрите, сколько там зависимостей), что можно сказать, равнозначно почти собирать в студии половину android-api
  9. mazayhin

    Serial port

    Можно создать обертку для java-классов, которые есть в исходниках Android с помощью Java2OP, или же руками, посмотрев как раз исходники. Исходники %sdk_path%\sources\android-nn\android\hardware\usb android-nn - версия API И уже эти файлы подключать. Либо взять готовые от FMXExpress
  10. "Перевод" с java самостоятельно придется делать..
  11. Можно из API портировать то что нужно (написать обертку) для работы с USB. Либо, самый лучший вариант, использовать https://github.com/mik3y/usb-serial-for-android Здесь вся низкая работа с USB уже проделана, как пишет автор, поддерживает много чего, но не трудно добавить в device_filter свои VID&PID. Да, в этом варианте придется подключать jar и делать для него обертку
  12. Потому что API-Level 26 он будет стоять автоматически. Как впрочем и практически все остальные, запрошенные в манифесте. Так же, не плохо было бы добавить в манифест <uses-feature android:name="android.hardware.camera" /> Начиная с 26 необходимо разрешения, помимо указания в манифесте, должны явно запрашиваться у пользователя. Почитайте https://developer.android.com/guide/topics/permissions/overview Ну а для Delphi подключайте KastiFree https://github.com/DelphiWorlds/KastriFree Там есть пример использования https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidDangerousPermissions и в добавок https://github.com/DelphiWorlds/KastriFree/tree/master/Demos/AndroidAPI26 тут как раз работа с камерой
  13. Ну скорее всего у себя вы указали в коннекшене символическое имя для подключения, оно сохраняется в FDConnectionDefs.ini (вроде правильно), а у пользователя его нет. Задайте параметры подключения вручную, явно
  14. А, ну если в StartCommand (как и закомментировано) не по экшену StartService происходит создание то да.
  15. Не надо использовать START_STICKY если экшен в интенте был не пустой, т.к. при выгрузке службы и повторной попытке ее запуска системой (мы ж отметили что служба очень важная), придет пустой экшен. Стартуйте с START_REDELIVER_INTENT, что бы система отправила тот же интент, с которым служба запускалась до выгрузки. Ну наверное в справке к FMX и не должно расписываться взаимодействие со всеми API целевых платформ. В качестве примера и для понимания принципов, как работать с ними, можно просто открыть исходники и сопоставить с доками того же гугла
  16. В сам сервис что-ли добавляете? Зачем оно там? А так в настройках проекта (для хоста) включите MapService и корректный api-key (получать в Гугле, по форуму или интернету ищите)
  17. Вот здесь, когда оборачиваете в PendingIntent, присваиваете ему уникальный номер (в примере выше это 1), этот номер где-то храните. PendingIntent := TJPendingIntent.JavaClass.getBroadcast (TAndroidHelper.Context, _ТУТ НОМЕР_, intent, 0); Потом, что бы отменить, создаете идентичный PendingIntent, с номером, с которым запускали, и TAndroidHelper.AlarmManager.cancel(PendingIntent);
  18. Достойно сделано! Только есть пара моментов на моем телефоне (Honor 5X): - значок со сплеша немного "наползает" за статусбар - некорректно браузер отрабатывает интент на запуск навигатора, сам яндекс.навигатор установлен - при тапе на иконку, заполняется только часть всего контура (но может это так и надо)
  19. Если говорить относительно ресурсов, то сам Android дает указать имя только латиницей в нижнем регистре. Возможно, это работает и для активов
  20. Поставщик SDK передал вообще jar - файл? Что в этих исходниках? Примеры работы, или исходники их SDK? Если исходники - то вообще все странно становится. Нельзя так. На то они и проходят сертификацию своего решения, что бы быть уверенным, что оно соответствует стандарту, и данные карты никуда не утекут, их никто у себя (как в случае с вашим прежним решением). Работать то так очень рискованно и для клиента (вас) и для шлюза. МПС, не факт, что с вами разбираться будут, пойдут к вышестоящему эквайеру, а тот, к вам. А штрафы, на минутку, у MC не шуточные - от 15 000 евро, вроде, за нарушение
  21. Вот он и пишет, что то, что ему туда суете, не является zip-архивом. jar - это и есть архив со скомпилированными классами (.java .class) и + еще немного. Не путайте исходники и по-сути исполняемый файл
  22. Ну а лог то что пишет? Вот хелп например пишет, что Generate all classes from java source code, to specified unit Java2OP -source myproject/src -unit Androidapi.JNI.CustomName Если это все-таки jar, то надо при вызове -jar [].java дописать .jar?
  23. И прави И правильно делают! PCI DSS еще никто не отменял, а наоборот развивают. Хорошо, что об ваших со шлюзом махинациях в мпс не знают А по существу: Берете их sdk, прогоняете через java2op, подключаете к проекту, правите немного манифест (добавляете в него их активности), и вызываете, обрабатываете результаты. Результат оплаты возвращается в интенте.
×
×
  • Создать...