Эмуляция карты на основе хоста, какие-нибудь рекомендации, пожалуйста?

Я новичок в этой области, у меня Nexus S (CyanogenMod11 = Android Kitkat 4.4.2). И мне нужно использовать режим HCE (Host-Based Card Emulation), чтобы эмулировать бесконтактную карту.

Любое руководство по шагам и советы, которым я должен следовать, чтобы выполнить это? (- Нужно ли программировать смоделированный элемент безопасности? Поместить его в облако?)

P.S. Мне также нужно использовать новый режим чтения, потому что мое приложение будет читаться другим телефоном Android с поддержкой NfC, а не устройством чтения NFC.

Спасибо.


person rick_mo    schedule 07.06.2014    source источник


Ответы (1)


До CyanogenMod 11 CyanogenMod поддерживал собственную функцию эмуляции карты на основе хоста. Вы можете зарегистрировать отправку переднего плана. для технологии android.nfc.tech.IsoPcdA, а затем может эмулировать смарт-карту с помощью метода IsoPcdA.transceive(). См. запись в блоге Николая Еленкова о том, как использовать этот API.

Однако при просмотре источника CyanogenMod 11 (в частности, службы NFC) кажется, что эта функциональность была удалена в версии 11 в пользу официального API HCE Android 4.4.

Официальный API Android 4.4 HCE позволяет приложениям эмулировать бесконтактную смарт-карту (APDU ISO 14443-4 + ISO 7816-4) в службе Android. Эта служба будет обрабатывать все входящие командные APDU для приложения и генерировать правильные ответные APDU. Дополнительную информацию о том, как зарегистрируйте такую ​​службу HCE и этот ответ о том, как обрабатывать входящие командные APDU в вашей службе HCE.

К сожалению, этот API недоступен на устройствах, использующих libnfc-nxp в качестве низкоуровневого стека NFC (см. пустую реализацию routeAid() и enableRoutingToHost() в исходном коде CyanogenMod 11).

Подводя итог, можно сказать, что в настоящее время невозможно выполнить эмуляцию карты на основе хоста на Nexus S с CM 11.

person Michael Roland    schedule 11.06.2014
comment
Большое спасибо за подробный ответ. Итак, судя по комментариям в блоге Николая Еленкова, его метод работает на Nexus S с CM9/CM10. И, видимо, это мое единственное решение? Еще вопрос, можно ли по методу Николая Еленкова использовать другое Android-устройство с поддержкой NFC вместо NFC-ридера (как в режиме New Reader Mode)? Еще раз спасибо, я был бы признателен, если бы вы ответили мне в ближайшее время, это действительно срочно ;) ^_^ И - person rick_mo; 12.06.2014
comment
@rick_mo Правильно, если вы используете CM9 (на самом деле, я думаю, CM9.1) или CM10 на Nexus S, вы можете использовать эти расширения CyanogenMod HCE. Что касается доступа с другого устройства Android NFC, применяются те же ограничения, что и для официального Android HCE (т. е. вам необходимо отключить одноранговую связь с помощью API режима чтения). - person Michael Roland; 12.06.2014
comment
Извините, если я не очень хорошо понимаю, вы имеете в виду, что невозможно выполнить чтение с другого устройства CM9.1/CM10 NFC? - person rick_mo; 13.06.2014
comment
Нет, это не так, поскольку такое устройство попытается подключиться в одноранговом режиме, а не в режиме чтения/записи. - person Michael Roland; 13.06.2014
comment
И есть ли учебник, чтобы показать мне, как это сделать в деталях? спасибо :D - person rick_mo; 13.06.2014
comment
Кроме того, что уже связано выше: не то, чтобы я знал. - person Michael Roland; 13.06.2014