Чтение типов тегов NFC "android.nfc.tech.NfcV" и "android.nfc.tech.NdefFormatable" с помощью React Native - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь читать с Bloodsugar Meter, используя NFC, сейчас на Android, еще не пробовал iOS (у меня нет телефона с NFC).

Я использую act-native-nfc-manager в качестве библиотеки и пример, который поставляется с ней: https://github.com/whitedogg13/react-native-nfc-manager

Я получаю этот тег:

{ "techTypes":["android.nfc.tech.NfcV","android.nfc.tech.NdefFormatable"], "id":"87C5280D002602E0"}

Я вижу, что NfcV включен в эту библиотеку, но как мне прочитать его как этот тип?

Я следую примеру, поэтому я ничего не установил ни в своем манифесте, ни в своем build.gradle. Я связал это, и это работает, но я пропускаю последнюю часть, кажется.

Следуя примеру, похоже, что я должен использовать такой метод:

_parseText = (tag) => {
    try {
        if (Ndef.isType(tag.ndefMessage[0], Ndef.TNF_WELL_KNOWN, Ndef.RTD_TEXT)) {
            return Ndef.text.decodePayload(tag.ndefMessage[0].payload);
        }
    } catch (e) {
        console.log(e);
    }
    return null;
}

Но у моего тега нет ndefMessage[0].

1 Ответ

0 голосов
/ 14 января 2019

Поскольку ваш тег не содержит Ndef в своем списке techTypes, он не содержит сообщения NDEF. Следовательно, вы не сможете прочитать любое такое сообщение. Поскольку ваш «тег» является индикатором уровня сахара в крови, я предполагаю, что он даже не должен содержать сообщения NDEF.

Вместо этого вам нужно будет выяснить, какие команды фактически поддерживает измеритель сахара в крови (возможно, он будет поддерживать команду READ SINGLE BLOCK ISO / IEC 15693 (см. здесь ). Чтобы отправить такой низкий уровень Команды высокого уровня, вам нужно будет использовать Generic NfcTech API , запрашивая технологию тегов:

NfcManager.requestTechnology(NfcTech.NfcV)

Затем вы можете использовать метод transceive для обмена произвольными командами:

NfcManager.transceive(...)
...