Ошибка Android «Тег был потерян» только в XIAOMIAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ошибка Android «Тег был потерян» только в XIAOMI

Сообщение Anonymous »

Я разрабатываю приложение с NFC и NFC TAG (ST25). При отправке командой nfcV.transceive() более 13 байт получаю ошибку "ТЕГ БЫЛ ПОТЕРЯН", но это происходит только на смартфоне XIAOMI, на остальных работает корректно.

Код: Выделить всё

    private fun readTag(intent: Intent) {

if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action
|| NfcAdapter.ACTION_TECH_DISCOVERED == intent.action
|| NfcAdapter.ACTION_TAG_DISCOVERED == intent.action) {
val tag: Tag? = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG, Tag::class.java)

if (tag != null)  {
val st25 = ST25DVTag.get(tag)
st25?.connect()
val stringToConvert = etDataToWrite.text.toString()
val messageBytes = stringToConvert.toByteArray(Charset.forName("UTF-8"))
try {
st25.WriteMB(messageBytes.size - 1, messageBytes)
} catch (e: IOException) {
e.printStackTrace()
Toast.makeText(this, "ERROR Write tag NFC: $e",Toast.LENGTH_SHORT).show()
Log.e("NFC ERROR","OK write tag NFC: $e")
} finally {
try {
st25.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}

fun WriteMB(size: Int , data:ByteArray): ByteArray {
val writecommandLength = 4 + data.size // Calculate total length including data
val writecommand = ByteArray(writecommandLength)
// Copy ST25DV_REQUEST_HEADER, 0xCA, IC_MFG_CODE, and size
System.arraycopy(byteArrayOf(ST25DV_REQUEST_HEADER,0xAA.toByte(),IC_MFG_CODE,size.toByte()),0, writecommand, 0, 4)
// Copy the data to the end of writecommand
System.arraycopy(data, 0, writecommand, 4, data.size)
var lenmax = tag.maxTransceiveLength
return safeTransceive(writecommand)
}

private fun safeTransceive(command: ByteArray): ByteArray {
var nTry = 0
var errorCode = COMMAND_OK
do {
val response = tag.transceive(command)
errorCode = response[0]
Log.d("Transceive","ErrorCode:"+errorCode)
if (errorCode == COMMAND_OK)
return response.copyOfRange(1,response.size)
else {
nTry++
Thread.sleep(COMMAND_DELAY)
}
} while (nTry < COMMAND_RETRY)
throw ST25DVException("IOError: code " + errorCode)
}
Когда «messageBytes.size» превышает 13 байт, возникает ошибка.
Возможна ли аппаратная проблема XIAOMI? Как я могу решить эту проблему?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... iaomi-only
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»