Как подключить внешнее устройство чтения карт NFC к планшету - PullRequest
7 голосов
/ 26 февраля 2012

Сейчас у меня планшет с ОС Android 2.3.3 вместо телефона NFC, поэтому мне нужно подключить внешний планшетный ридер к планшету. Скажите, пожалуйста, какой кардридер мне лучше выбрать и какой драйвер нужен для подключения кард-ридера к планшету,Встроенные библиотеки NFC поддерживают этот ридер или нет?заранее спасибо.

Ответы [ 8 ]

10 голосов
/ 30 марта 2013

Я нашел ответ, ACS теперь предоставляет библиотеку Android и пример приложения для своих читателей. Вы можете найти библиотеку здесь и некоторая информационная и видео демонстрация поддерживаемых Android-ридеров здесь .

Единственная проблема в том, что библиотека ACS для Android поддерживает только Android 3.1 и выше. надеюсь, это поможет вам.

Если у вас все еще есть вопросы, не стесняйтесь спрашивать ..

7 голосов
/ 27 февраля 2012

Встроенная библиотека NFC в Android 2.3 и 4.0 поддерживает только чип NFC PN544 от NXP Semiconductors.Я не думаю, что есть какие-либо устройства для чтения карт памяти, которые используют его, так как этот чип специально разработан для использования в мобильных устройствах.Возможно, вам удастся найти альтернативные реализации API NFC Android, которые поддерживают другие чипы NFC.

Другая проблема может заключаться в том, что на вашем планшете, скорее всего, не установлены необходимые библиотеки NFC, включая необходимую системную службу(NfcManager).В конце концов, ваш планшет не поддерживает NFC, поэтому ему не нужны эти программные компоненты.Таким образом, для вашего планшета должен быть создан новый образ системы ПЗУ, включающий эти программные компоненты.

Использование одного из многих распространенных настольных ридеров, вероятно, неосуществимо.Создание всего необходимого программного обеспечения для его интеграции в Android не является тривиальной задачей.Может быть проще просто купить телефон Android с NFC или подождать, если выйдет планшет Android с NFC.

2 голосов
/ 14 марта 2012

Привет, сахин, так как на твоем устройстве нет NFC, оно не будет иметь радио NFC и, следовательно, не сможет подключиться (прочитать или записать) к карте NFC.Согласно библиотеке NFC, когда вы пытаетесь получить NFCAdapter, он всегда возвращает нуль.поэтому для любого эксперимента вам нужно, по крайней мере, устройство с поддержкой nfc.

В моем проекте мы использовали устройство чтения смарт-карт ACR122, которое будет подключаться к ПК, а не к устройству Android.Android-устройство с поддержкой nfc будет действовать как тег nfc в режиме эмуляции карт.

Теперь следующая часть вопроса «Встроенные библиотеки NFC поддерживают этот ридер или нет».

, поэтому этот кард-ридерможет прочитать значение карты.

2 голосов
/ 14 марта 2012

Ни Froyo 2.3 (минимальная версия SDK с поддержкой NFC), ни Ice Cream Sandwich 4.0 не совместимы с широким спектром чипов.

Когда производитель запускает новый телефон с другой микросхемой NFC, это связано с тем, что кто-то создал драйверы для использования таких микросхем и интерфейса с классами NFC Android, в частности классом NfcManager и классом NfcAdapter, который представляет локальный адаптер NFC.

В лучшем случае вы могли бы использовать Android NDK для создания низкоуровневых классов C / C ++, чтобы каким-либо образом взаимодействовать с устройством для чтения внешних NFC-карт с Android, а затем выполнять больше пользовательских программ с помощью NDK, чтобы NfcAdapter на SDK обнаруживал его. ... и нет никаких гарантий, что вы добьетесь успеха.

И ... если вы думаете о том, чтобы перейти на http://www.alibaba.com и импортировать планшет с NFC-ридером, подумайте дважды, потому что они могут не позволить вам делать все то, что делает чип NXP Semiconductors с Android Beam. (TM), такие как чтение / запись и поддержка различных операций ввода-вывода с NFC-A, B, F, V или ISO-DEP.

Ради вашего времени (и потому что время является самым ценным активом для всех в наши дни). Я думаю, что ваш лучший вариант - получить пару телефонов NFC, таких как Galaxy Nexus S, DROID Razr, Xperia S, HTC Incredible и т. Д., Которые будут работать сразу после установки, вот что мы делаем.

1 голос
/ 23 декабря 2015

С помощью считывателя ACS NFC возможно:

Здесь вы можете найти документацию для библиотек и пример кода. Однако, похоже, нет возможности записать данные. Если вы хотите выполнить запись в считыватель NFC, используйте функцию передачи для отправки байтовых массивов.

private static final byte READ = (byte) 0x30;
private static final byte WRITE = (byte) 0xA2;

Эти байты являются байтами чтения и записи по умолчанию для функции передачи. Полную документацию по протоколу NFC по умолчанию можно найти здесь

пример:

    byte[] response = new byte[300];
        int responseLength;
        try {
            responseLength = mReader.transmit(slotNum, command, command.length, response, response.length);
        } catch (ReaderException e) {
            e.printStackTrace();
            return "executeCommand: error: " + e.getMessage();
        }

Slotnum - номер читателя, который вы хотите использовать. Если я прав, это всегда 0, если вы используете один ридер / usbdevice.

пример команды:

new byte[] command {(byte) WRITE, 0x04, 0x06, 0x0a, 0x00, 0x21}

ВТОРОЙ БАЙТ - ЭТО СТРАНИЦА, НАПИСАННАЯ ДЛЯ ПИСАНИЯ. Страница 4 - 15 доступны для записи (страницы 0 и 1 - это идентификаторы, страницы 2 - это байты блокировки, а страница 3 - это OTP. Все они предназначены только для чтения).

Функция чтения работает так же, как функция WRITE, отправляя только 3 раза 0x00 в массиве для правильных настроек чтения:

new byte[] command {(byte) READ, 0x04, 0x00, 0x00, 0x00}

ВТОРОЙ БАЙТ - ЭТО СТРАНИЦА, ЧТОБЫ ПРОЧИТАТЬ.

0 голосов
/ 13 августа 2015

Немного поздно, чтобы ответить здесь, но на самом деле я пытался реализовать внешний считыватель NFC как можно ближе к нативному NFC.

Можно добавить дополнительную услугу, но обычная инициализация NFC (NfcAdapter и т. Д.) Не будет знать об этой услуге, поэтому ее придется дополнительно инициализировать.

Результатом стало то, что технически невозможно заменить или добавить встроенную службу NFC на стандартном ПЗУ - «в пути замены».

Возможно повторное использование некоторых собственных классов NFC, таких как Tag и IsoDep.

Однако, как разработчик приложения NFC, вы действительно не хотите использовать ту же функциональность от внешнего сервиса, что и встроенная. Внешний ридер, вероятно, обладает большей функциональностью, и как минимум вы хотите знать, подключен ли ридер или нет.

См. Внешний NFC API для получения дополнительной информации (примечание: это не полностью открытый продукт).

0 голосов
/ 23 мая 2015

Это хорошая тема. Я разделяю озабоченность RacZo по поводу поддержки библиотеки NFC в планшетах Alibaba. Поскольку наборы микросхем NFC в устройствах различаются, а некоторые из них имеют сомнительную поддержку или вообще не поддерживают некоторые операции, вам необходимо быть осторожным и предварительно протестировать свое приложение на них.

Устройство чтения ACS может быть экономически эффективным решением, и есть несколько зрелых и хорошо поддерживаемых библиотек и SDK, которые поддерживают его интеграцию с Android. Недостатком внешнего считывателя ACS является срок службы батареи. Поскольку он монополизирует порт USB, а планшеты Android не позволяют заряжать через порт USB, когда к нему подключено периферийное устройство. Поэтому, если ваше приложение представляет собой приложение для киоска или самообслуживания, это может быть проблемой.

Здесь есть хороший пост здесь о ваших различных вариантах решения этой проблемы. Не зная больше о вашем приложении, трудно рекомендовать так или иначе.

0 голосов
/ 12 марта 2012

Является ли это видео ответом на вашу проблему: http://www.youtube.com/watch?v=6Xe7Ux0cTuI «Недорогой, простой, без драйверов - считыватель EM4100 или Mifare RFID для Ipad, Android и Windows»

PS: я не работаю с этой компанией и никогда не пробую их решение.

...