0. leobrn 169 14.04.18 15:54 Сейчас в теме

Взаимодействие с NFC через мобильную платформу 1С

Цель была научиться взаимодействовать с внешними приложениями из приложения на мобильной платформе 1С. Для данной цели выбрал тему чтение/запись NFC меток. Было разработано: 1) приложение в android studio, которое взаимодействует с NFC 2) приложение на мобильное платформе 1с, которое взаимодействует с разработанным приложением в android studio.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. saa@kuzov.org 15.04.18 12:00 Сейчас в теме
Здравствуйте!
Идея, безусловно, полезная, но взаимодействие мобильной платформы с нативными приложениями через Intent здесь давно описана с примерами и опробована.
Если Вы владеете и 1С и Java, очень прошу Вас написать внешнюю компоненту для мобильного приложения, делающую то же самое.
Технология описана на сайте ИТС.

Я не смог найти ни одного примера с исходниками, а так хочется иметь "печку", чтобы начать танцевать.
2. leobrn 169 15.04.18 12:12 Сейчас в теме
(1) в идеале я и хотел видеть этот функционал через внешнюю компоненту , но пока не удалось полностью разобраться с этим
3. CyberCerber 275 15.04.18 12:19 Сейчас в теме
4. PloAl 135 15.04.18 14:18 Сейчас в теме
В android, NFC тесно связан с текущей activity и получение данных в фоне неактивным activity невозможно.
Вышеописанное скорее всего сделано для безопасности приложений бесконтактной оплаты.
Из ВК, невозможно создать полноценную activity, с которым будет работать NFC.
IgorKissil; +1 Ответить
6. user808274 28.05.18 21:52 Сейчас в теме
Я так же пытался сделать внешнюю компоненты для мобильной платформы, которая бы читала и писала nfc метки mifareclassic с возможностью установки ключей. Затык у меня произошёл из-за того, что мне не удавалось вызвать Activity, получающую Intent от NFC адаптера. У меня сложилось впечатление, что где-то происходит обращение к локальному указателю (в терминах jni), которые уже утратил актуальность.
Получить Intent то NFC адаптера каким-нибудь другим классом, обрабатывющим Intent-ы ( типа Service или BroadcastReceiver) и не имеющим проблем с вызовом из внешней компоненты, как у Activity, у меня не получилось.
Получать Intent то NFC могло только Actyvity, указанное адаптеру через enableForegroundDispatch.
Примечательно, что если компоненту не пересобирать, а оставить в виде Android приложение, то обработка nfc таким приложением происходила как надо.
Так же стоит указать, что действия с меткой должны происходить не по нажатию кнопки на форме, а по внесению метки в поле, а программа должна быть в состоянии готовности к определённым действиям.
Свою неудачу считаю лишь следствие недостаточности знаний, т.к., например, эти: www.rightscan.ru создать такую библиотеку удалось (не сочтите за рекламу) и её даже можно скачать с примером конфигурации для 1С.
7. IgorKissil 194 31.05.18 11:55 Сейчас в теме
(6) Ключевое слово, которое позволяет rightscan делать такие вещи - SafeDroid. Они изменили ядро ОС. В обычном андроиде ни работа с nfc без activity, на перехват клавиатуры невозможен (см здесь)
8. user808274 31.05.18 17:28 Сейчас в теме
(7)Не думаю, что они в ядре что-то меняли. Их компонента, работала, как на специализированном сканере, правда у них же купленном, так и на банальном Самсунге с NFC считывателем, и на гражданских телефонах корректно лесом слало (в отдельно открытом Activity), что нет NFC адаптера. Сейчас конечно уже всё итерации не упомню, в сентябре 2017 задачу бросил. С другой стороны, если бы в специализированном сканере было пропатченное ядро, то и мои усилия бы поди увенчались успехом - в основном тестил-то я на нём.
А про изменение ядра это они сами Вам рассказали, или догадка ?
9. IgorKissil 194 01.06.18 07:49 Сейчас в теме
(8) А как она работает с nfc, в отдельном окне или прямо из формы 1С? Если второе, то они либо используют какие-то недокументированные возможности андроид либо, что более вероятно, возможности технологии внешних компонент. Получить nfc адаптер в андроиде можно только в главном потоке приложения и только с привязкой к foreground activity. А внешняя компонента работает в отдельном потоке и не дает возможности получить текущее окно. NDK возможностей для работы с nfc не имеет.
Интересно, работает ли их компонента на других устройствах с физической клавиатурой? Эту тему я копал глубже и с гораздо большей вероятностью утверждаю, что с помощью ТВК перехватить нажатие клавиш невозможно, если только не использовать андроид под root.
10. user808274 01.06.18 12:18 Сейчас в теме
(9) В отдельном чёрном окне. Внизу по центру пишет "приложите метку", "адаптер не найден" или "адаптер выключен".
Пробовал обмануть, вызвав промежуточный класс уже из которого вызывать свою Activity. Т.е. что бы не средствами JNI на C++ на писать типа jenv->CallVoidMethod(activity_glob, runOnUiThread, runObject);
а на Яве, в среде Android, штатно, как белый человек. Безрезультатно. Промежуточный класс вызывается, работает, а с Activity облом
13. IgorKissil 194 03.07.18 11:26 Сейчас в теме
(6) После нашего обсуждения я нашел метод как открывать свои окна из ВК, думаю прикрутить к ним nfc со временем. Небольшая подсказка куда копать: https://developer.android.com/reference/android/app/Dialog
11. PloAl 135 02.07.18 15:35 Сейчас в теме
В jni предупреждают, не стоит использовать для всего подряд, так как встроенные функции в большинстве случаев будут быстрее.
В теории можно сделать foreground activity которая будет вызываться из ВК и взаимодействовать с nfc.
Но обмен данными с этим activity будет происходить через intent
моб. 1с -> jni -> activity nfc
моб. 1с <- jni <- activity nfc

логично что быстрее, передавать сразу intent без ВК
моб. 1с -> activity nfc
моб. 1с <- activity nfc
12. IgorKissil 194 03.07.18 11:21 Сейчас в теме
(11) А где эта activity будет задекларирована? Если в ВК, то ее открыть невозможно, activity должны быть включены в манифест главного приложения. Если писать отдельный apk, то для серьезной разработки это плохое решение
14. PloAl 135 03.07.18 13:41 Сейчас в теме
(12) Читайте внимательней, в (11) речь именно про плохое решение

Не суть важно где activity будет, суть в том что с ВК не уйти от передачи intent.
Т.к. даже разные activity одного приложения, передают информацию друг другу через intent.
15. IgorKissil 194 03.07.18 13:55 Сейчас в теме
(11) Как планируете принимать интент из 1С без ВК? Платформа умеет их только отправлять
16. PloAl 135 03.07.18 15:33 Сейчас в теме
Не планирую.
Годом ранее делал публикацию про NFC, intent возвращается также как в этой статье.

Но и без ЗапускПриложениеМобильногоУстройства и можно получить intent внутри моб. 1с, где то здесь были описаны решения, но можно просто посмотреть манифест внутри архива с платформой.
17. TPID 26.02.19 14:20 Сейчас в теме
А существуют ли опубликованные в google play приложения, которые позволили бы делать то же самое?
18. leobrn 169 26.02.19 14:23 Сейчас в теме
(17) не нашел приложение в маркете с которым можно было сделать взаимодействие на чтение/запись nfc поэтому пришлось изобретать . На gitе можно поискать разработки .
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Работа от Инфостарт
Санкт-Петербург
Временный (на проект)

Программист 1С
Новосибирск
зарплата от 80 000 руб.
Полный день

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист - консультант 1С
Москва
Полный день