Android nfcA.connect (), nfcA.transceive (), nfcA.setTimeout () und nfcA.getMaxTransceiveLength ()

Ich habe eine Reihe von neuen NFCA-Fragen. Es scheint wenig Anleitung zu geben in der docs und anderswo im Web, daher hoffe ich, dass es niemanden stört, wenn ich hier ein paar grundlegende Fragen zusammenstelle ...

Ich benutze nfcA.transceive () fürschreibe Daten zu meinem NTAG213-Tag wie folgt:

    byte[] result = nfcA.transceive(new byte[] {
            (byte)0xA2,  // WRITE
            (byte)(pageNum & 0x0ff),
            myData[0], myData[1], myData[2], myData[3]
    });

1. Dasresultarray ist ein einzelnes Byte von Wert 10. Was bedeutet das und auf welche anderen Werte sollte ich achten?

Ich benutze auch die gleiche Methode, umlese Daten von meinen NTAG213-Tags:

    byte[] result = nfcA.transceive(new byte[] {
            (byte)0x30,  // READ
            (byte)(pageNum & 0x0ff)
    });

2. Ich habe erwartet, dass dies 4 Bytes Benutzerdaten zurückgibt (d. H. Die 4 Bytes, die meiner Seitennummer entsprechen), aber es wurden 16 Bytes zurückgegeben. Warum ist das so?

3 Ist es eine gute Praxis, @ zu überprüfnfcA.isConnected() bevor Sie @ anrufnfcA.connect() und wenn ja, gibt es dabei wahrscheinlich erhebliche Leistungseinbußen? (Ich frage, wie ich Codebeispiele aus seriösen Quellen von beiden gesehen habe.)

4. Ist es besser, @ anzurufnfcA.setTimeout() vorher oder nachhernfcA.connect()?

5. Für meine NTAG213-TagsnfcA.getMaxTransceiveLength() gibt 253 zurück. Bedeutet das wirklich, dass ich bis zu 251 Bytes Benutzerdaten (plus die 2 anderen Bytes) auf einmal schreiben kann, und wenn ja, ist das ratsam oder ist es besser, jede Seite (4 Bytes) separat zu schreibennfcA.transceive() Anrufe

Antworten auf die Frage(2)

Ihre Antwort auf die Frage