我正在为android设备开发一个nfc库。在一些安卓设备上,发送的数据工作正常,我得到了健康的响应(比如lg手机),但在其他一些设备上(比如oppo手机)则不起作用。
它适用于符合国际民航组织标准的护照和身份证阅读器。
我以十六进制发送的命令示例:0082000028523a9ae020bf2b637771344671e7a444dabde99bbe84835f5b1552963d69623b3dd77d609a3a22e628
它返回一个+0x9000的数据作为结果。
在发送此命令之前,我有几个步骤:
0x00、0xa4、0x04、0x0c、0x07、0xa0、0x00、0x00、0x02、0x47、0x10、0x01
0x00,0x84,0x00,0x00,0x08
第三步是命令导致错误
在oppo电话上,我收到0x6a88作为错误代码。
我查过oppo的日志
2021-07-26 15:11:51.982 994-4950/? D/NxpTml: PN54X - Write requested.....
2021-07-26 15:11:51.982 994-4950/? D/NxpTml: PN54X - Invoking I2C Write.....
2021-07-26 15:11:51.985 994-4949/? D/NxpTml: PN54X - I2C Read successful.....
2021-07-26 15:11:51.985 994-4949/? D/NxpTml: Delay Read if write thread is busy
2021-07-26 15:11:51.985 994-4950/? D/NxpNciX: len = 49 > 00002E0082000028523A9AE020BF2B637771344671E7A444DABDE99BBE84835F5B1552963D69623B3DD77D609A3A22E628
2021-07-26 15:11:51.985 994-4950/? D/NxpTml: PN54X - I2C Write successful.....
2021-07-26 15:11:51.985 994-4950/? D/NxpTml: PN54X - Posting Fresh Write message.....
2021-07-26 15:11:51.985 994-4950/? D/NxpTml: PN54X - Tml Writer Thread Running................
我使用了两个不同设备的相同android版本,一切正常。
事实上,我不知道如何找出我遗漏的要点。我完全接受任何建议(比如,它与我发送的数据的大小有关吗?我是否应该向清单中添加一组规则?)
谢谢
编辑:我已添加我的nfcadapter设置
val adapter = NfcAdapter.getDefaultAdapter(this)
if (adapter != null) {
val intent = Intent(applicationContext, this.javaClass)
intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
val pendingIntent =
PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val filter = arrayOf(arrayOf("android.nfc.tech.IsoDep"))
adapter.enableForegroundDispatch(this, pendingIntent, null, filter)
}
现在我正在尝试向适配器添加enablereadermode。添加时,当前无法发现我的标记。我会尽快更新我的状态。
暂无答案!
目前还没有任何答案,快来回答吧!