Интеграция Android ACR122U NFC

См. APDU для чтения NFC SELECT (по AID) не направляется на устройство Android при отладке и возможных результатах. TL;DR читатель может просто не существовать.


У меня есть считыватель ACR122U, подключенный к моему устройству Android. Моя конечная цель — использовать другое устройство Android в режиме HCE, чтобы обеспечить передачу данных между устройствами.

В настоящее время у меня проблема с интеграцией со считывателем ACR122U. Я использую поставщика lib acssmc-1.1.1.jar. Это код, который у меня сейчас есть (без примера кода открытия ридера).

mReader.power(slotNum, Reader.CARD_WARM_RESET);
mReader.setProtocol(slotNum, Reader.PROTOCOL_T0 | Reader.PROTOCOL_T1);

//FF 00 00 00 04 D4 4A 01 00 00 - Polling for the ISO14443-4 A ??
byte[] w = new byte[255];
int len = mReader.transmit(0, new byte[] { (byte)0xFF, 0x00, 0x00, 0x00, 0x04,(byte)0xD4, 0x4A, 0x01, 0x00}, 9, w, w.length);
Log.e("Response", "r: " + NfcUtils.convertBinToASCII(w, 0, len));

//00 A4 04 00 07 F0 01 02 03 04 05 07 00 - Select AID APDU
w = new byte[255];
mReader.transmit(0, new byte[] {0x00, (byte) 0xA4, 0x04, 0x00, 7,
    (byte)0xF0, 0x01, 0x02, 0x03, 0x04, (byte) 0x05, 0x07, 0}, 13, w, w.length);
Log.e("Response", "r: " + Arrays.toString (recvBuffer));

Если я прикоснусь меткой к считывателю NFC, это результат, который я получаю

r: D54B0101440004048853606A9000
r: lots of zeroes

Когда я касаюсь устройства Android, это ответ:

r: D54B6300
r: lots of zeroes

в основном это не удается на этапе опроса (?). На устройстве Android у меня есть базовая реализация HostAdpuService:

public class MyHostApduService extends HostApduService {

    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("APDU", "APDU service was created.");
    }

    @Override
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) {
       Log.e("APDU", "command apdu: " + Arrays.toString(apdu));
       return new byte[2];
    }
    @Override
    public void onDeactivated(int reason) {
       Log.e("APDU", "ON DEACTIVATED.");
    }
}

processCommandApdu так и не позвонили. Просматривая журналы устройства Android, я не могу найти ничего актуального в тот момент, когда я касаюсь устройства.

Я просмотрел несколько примеров в Интернете и не смог заставить его работать на других (не Android) платформах (Windows, OSX).


person cliffroot    schedule 11.05.2018    source источник
comment
Вы включили NFC, верно?   -  person Hack5    schedule 19.05.2018
comment
Да, NFC включен, и эта служба фактически запускается, когда я подношу ее к другому устройству Android, которое отправляет select aid APDU, поэтому я считаю, что это не проблема службы hce.   -  person cliffroot    schedule 19.05.2018