java mifare_如何正确写入MifareUltralight NFC标签?

正确的使用方法是什么

MifareUltralight.writePage()

方法?

查询

getMaxTransceiveLength()

方法返回253字节。然而

tag

以888字节的速度公布。是

transceive()

因此

writePage()

应该被多次调用?正在写入的有效负载的大小为457字节。

val jsonString = Gson().toJson(casualty)

val casualtyBytes = toBlob(casualty)

var currentPage = PAGE_OFFSET

val pageBytes = ByteArray(MifareUltralight.PAGE_SIZE)

var byteIndex = 0

for(i in 0 until casualtyBytes.size){

pageBytes[byteIndex] = casualtyBytes[i]

byteIndex++

if(byteIndex == 4 || i == (casualtyBytes.size-1)) {

tag.writePage(currentPage, pageBytes)

currentPage++

byteIndex = 0

}

}

fun toBlob(item : Any) : ByteArray{

val bos = ByteArrayOutputStream()

val gzip = GZIPOutputStream(bos) //compress

val oos = ObjectOutputStream(gzip)

oos.writeObject(item)

oos.close()

return bos.toByteArray()

}

例外情况

java.io.IOException: Transceive failed

at android.nfc.TransceiveResult.getResponseOrThrow(TransceiveResult.java:52)

at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:151)

at android.nfc.tech.MifareUltralight.writePage(MifareUltralight.java:193)

at some.package.nfc.NfcCasualtyPublisher.writeToTag(NfcCasualtyPublisher.kt:42)

at some.package.nfc.NfcCasualtyPublisher.access$writeToTag(NfcCasualtyPublisher.kt:11)

at some.package.nfc.NfcCasualtyPublisher$publishCasualty$1.run(NfcCasualtyPublisher.kt:21)

at java.lang.Thread.run(Thread.java:818)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值