Как подключить внешнее устройство чтения карт NFC к планшету

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

8 ответов

Решение

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

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

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

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

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

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

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

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

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

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

Ни 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 и т. Д., Которые будут работать прямо из коробки, это то, что мы делаем.

С помощью считывателя 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}

ВТОРОЙ БАЙТ - СТРАНИЦА, ОБРАЩАЕТСЯ К ЧТЕНИЮ.

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

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

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

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

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

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

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

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

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

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

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

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