Сообщение NDEF с HCE Android

Я хочу эмулировать хост-карту с функцией HCE от Android. Для этого я расширяю класс обслуживания HostApduService и перезаписываю следующий метод:

 public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
    if (Arrays.equals(SELECT_APDU, commandApdu)) {
        NdefMessage message = new NdefMessage(new NdefRecord  [] {NdefRecord.createTextRecord("en", "test"});
       return message.toByteArray();
    } else {
        return UNKNOWN_CMD_SW;
    }
}

Со вторым устройством можно получать данные из службы HCE. Проблема в том, что я всегда получаю тег "Тип A", но мне нужно сообщение NDEF.

Кто-нибудь может мне помочь?

1 ответ

Для тех, кто застрял в этой проблеме, я прочитал NFCForum-TS-Type-4-Tag, предложенный @Michael Roland. Вся идея верна. Все, что вам нужно, это смоделировать команды процесса SEND и RECEIVED для преобразования байтового массива в сообщение NDEF. Я создал два репозитория, один завершает весь пакет о преобразовании строки в сообщение NDEF, а другой - тег NDEF iOS Reader для проверки правильности Android HCE или нет.

Удачи!

Эмуляция тега, который определяется как тег NDEF с помощью Android HCE, не так проста, как отправка сообщения NDEF в ответ на запрос SELECT APDU. Вам нужно будет реализовать спецификацию работы с тегами типа 4 форума NFC. Вы можете получить эту спецификацию на веб-сайте NFC Forum.

В основном вам нужно будет зарегистрировать службу HCE для AID D2760000850101 который реализует пару команд APDU, которые сторона чтения использует для доступа к тегу типа 4:

  • ВЫБЕРИТЕ приложение тега NDEF

    00 A4 04 00 07 D2760000850101 [00]
    
  • Контейнер SELECT

    00 A4 04 0C 02 E103
    
  • ВЫБЕРИТЕ файл данных NDEF

    00 A4 04 0C 02 xxyy
    

    куда xxyy является идентификатором файла данных NDEF, как указано в контейнере возможностей.

  • READ BINARY (для чтения данных из контейнера возможностей или файла данных NDEF, в зависимости от того, что выбрано в данный момент)

    00 B0 xx yy zz
    

    куда xx yy это смещение для чтения в и zz количество байтов для чтения.

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