Android nfcA.connect (), nfcA.transceive (), nfcA.setTimeout () и nfcA.getMaxTransceiveLength ()
У меня есть ряд вопросов новичка NfcA. Похоже, что вдокументы и в других местах в Интернете, поэтому я надеюсь, что никто не возражает против того, чтобы я связал здесь несколько основных вопросов ...
Я использую nfcA.transceive () длязаписывать данные в мой тег NTAG213, как это:
byte[] result = nfcA.transceive(new byte[] {
(byte)0xA2, // WRITE
(byte)(pageNum & 0x0ff),
myData[0], myData[1], myData[2], myData[3]
});
1. result
массив - это один байт значения 10. Что это означает и какие другие значения мне следует искать?
Я также использую тот же метод длячитать данные из моих тегов NTAG213:
byte[] result = nfcA.transceive(new byte[] {
(byte)0x30, // READ
(byte)(pageNum & 0x0ff)
});
2. Я ожидал, что это вернет 4 байта пользовательских данных (то есть 4 байта, которые соответствуют моему pageNum), но он вернул 16 байтов. Почему это так?
3. Это хорошая практика, чтобы проверитьnfcA.isConnected()
перед звонкомnfcA.connect()
и, если да, то может ли быть существенное снижение производительности при этом? (Я спрашиваю, поскольку я видел примеры кода из надежных источников обоих.)
4. Лучше позвонитьnfcA.setTimeout()
до или послеnfcA.connect()
?
5. Для моих тегов NTAG213nfcA.getMaxTransceiveLength()
возвращает 253. Означает ли это, что я действительно могу записать до 251 байта пользовательских данных (плюс 2 других байта) за один раз и, если да, то это целесообразно или лучше написать каждую страницу (4 байта) с отдельнымиnfcA.transceive()
звонки?