- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个应用程序,使用 IsoDep 标签技术向支持 NFC 的卡发出 APDU 命令。
更新:所以下面看到的问题似乎与我使用的卡的功率要求有关,当我使用具有较低功率要求的不同卡时,以下症状不会经常出现。
我已明确遵循文档并成功地实现了该协议(protocol)。然而,我在 NFC 低级库中遇到了一些超出我的代码控制范围的问题。
我已经实现了以下内容:
问题是我注意到了几件事:
在 Nexus S 上,卡的位置取决于成功的通信流,如果它不在最佳位置,我将收到 IOException如果由于卡已移动或未留在 RF 场中而导致我收到太多 IOExceptions,我将开始看到以下异常(见下文)我想知道是否还有其他人看到过这些问题?在我的 onResume 方法中,我没有任何逻辑来防止多次调用该方法的 NFCAdapter 实例:enableForegroundDispatch,我应该这样做吗。
在此先感谢您的帮助。
06-16 12:08:43.351: ERROR/NFC(661): NFC service dead - attempting to recover
06-16 12:08:43.351: ERROR/NFC(661): android.os.DeadObjectException
06-16 12:08:43.351: ERROR/NFC(661): at android.os.BinderProxy.transact(Native Method)
06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.INfcAdapter$Stub$Proxy.enableForegroundDispatch(INfcAdapter.java:528)
06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:494)
06-16 12:08:43.351: ERROR/NFC(661): at myClass.onResume(MyClass.java:406)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.Activity.performResume(Activity.java:3832)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
06-16 12:08:43.351: ERROR/NFC(661): at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 12:08:43.351: ERROR/NFC(661): at android.os.Looper.loop(Looper.java:130)
06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-16 12:08:43.351: ERROR/NFC(661): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 12:08:43.351: ERROR/NFC(661): at java.lang.reflect.Method.invoke(Method.java:507)
06-16 12:08:43.351: ERROR/NFC(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-16 12:08:43.351: ERROR/NFC(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-16 12:08:43.351: ERROR/NFC(661): at dalvik.system.NativeStart.main(Native Method)
06-16 12:08:18.316: ERROR/MyClass(661): IOException in APDU commands: transceive failed
06-16 12:08:18.316: WARN/System.err(661): java.io.IOException: transceive failed
06-16 12:08:18.324: WARN/System.err(661): at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:144)
06-16 12:08:18.324: WARN/System.err(661): at android.nfc.tech.IsoDep.transceive(IsoDep.java:159)
06-16 12:08:18.328: WARN/System.err(661): at myClass.handleTagRead(MyClass.java:117)
06-16 12:08:18.328: WARN/System.err(661): at myClass.onNewIntent(MyClass.java:84)
06-16 12:08:18.332: WARN/System.err(661): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1119)
06-16 12:08:18.332: WARN/System.err(661): at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:1722)
06-16 12:08:18.335: WARN/System.err(661): at android.app.ActivityThread.performNewIntents(ActivityThread.java:1734)
06-16 12:08:18.335: WARN/System.err(661): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1742)
06-16 12:08:18.339: WARN/System.err(661): at android.app.ActivityThread.access$2300(ActivityThread.java:117)
06-16 12:08:18.343: WARN/System.err(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:978)
06-16 12:08:18.343: WARN/System.err(661): at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 12:08:18.347: WARN/System.err(661): at android.os.Looper.loop(Looper.java:130)
06-16 12:08:18.347: WARN/System.err(661): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-16 12:08:18.351: WARN/System.err(661): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 12:08:18.351: WARN/System.err(661): at java.lang.reflect.Method.invoke(Method.java:507)
06-16 12:08:18.355: WARN/System.err(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-16 12:08:18.355: WARN/System.err(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-16 12:08:18.359: WARN/System.err(661): at dalvik.system.NativeStart.main(Native Method)
06-16 12:08:18.359: DEBUG/MyClass(661): Setting up for ForegroundDispatch for NFC ISO DEP
06-16 12:08:18.492: DEBUG/NativeNfcTag(871): Tag lost, restarting polling loop
06-16 12:08:19.269: WARN/NfcService(871): Failed to connect to tag
06-16 12:08:23.980: ERROR/NFC JNI(871): phLibNfc_RemoteDev_Connect(RW) returned 0x00ff[NFCSTATUS_FAILED]
06-16 12:08:23.980: WARN/NfcService(871): Failed to connect to tag
06-16 12:08:23.980: ERROR/NFC JNI(871): doDisconnect() - Target already disconnected
06-16 12:08:15.468: DEBUG/MyClass(661): Recieved a TAG
06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieve d tag: android.nfc.tech.IsoDep
06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieved tag: android.nfc.tech.NfcA
06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieved tag: android.nfc.tech.MifareClassic
06-16 12:08:15.484: ERROR/MyClass(661): Failed to connect to aTag Reason: null
06-16 12:08:15.484: WARN/System.err(661): java.io.IOException
06-16 12:08:15.484: WARN/System.err(661): at android.nfc.tech.BasicTagTechnology.connect(BasicTagTechnology.java:81)
06-16 12:08:15.484: WARN/System.err(661): at android.nfc.tech.IsoDep.connect(IsoDep.java:39)
06-16 12:08:15.484: WARN/System.err(661): at myClass.handleTagRead(ConfirmPaymentScreen.java:107)
06-16 12:08:15.484: WARN/System.err(661): at myClass.onNewIntent(ConfirmPaymentScreen.java:84)
06-16 12:08:15.484: WARN/System.err(661): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1119)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:1722)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.performNewIntents(ActivityThread.java:1734)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1742)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.access$2300(ActivityThread.java:117)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:978)
06-16 12:08:15.484: WARN/System.err(661): at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 12:08:15.484: WARN/System.err(661): at android.os.Looper.loop(Looper.java:130)
06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-16 12:08:15.484: WARN/System.err(661): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 12:08:15.484: WARN/System.err(661): at java.lang.reflect.Method.invoke(Method.java:507)
06-16 12:08:15.484: WARN/System.err(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-16 12:08:15.484: WARN/System.err(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-16 12:08:15.484: WARN/System.err(661): at dalvik.system.NativeStart.main(Native Method)
06-16 12:08:15.484: DEBUG/MyClass(661): Failed to connect to tag
06-16 12:08:15.484: DEBUG/MyClass(661): Setting up for ForegroundDispatch for NFC ISO DEP
06-16 12:08:15.609: ERROR/NFC JNI(871): phLibNfc_RemoteDev_CheckPresence() returned 0x0095[NFCSTATUS_INVALID_HANDLE]
06-16 12:08:15.609: DEBUG/NativeNfcTag(871): Tag lost, restarting polling loop
06-16 12:08:15.609: ERROR/NFC JNI(871): phLibNfc_RemoteDev_Disconnect(294f58) returned 0x0095[NFCSTATUS_INVALID_HANDLE]
最佳答案
所以我知道是什么原因造成的,我尝试读取的一些 RFID 标签的功耗要求高于手机的功耗要求。令人沮丧的是,如果手机在一个不好的地方放置太久,它就会摔倒......
关于APDU 命令的 Android NFC 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432796/
嗨,我是 java 卡新手,我有以下数据 CLA '00' INS 'A2' nb not real value P1 '00' P2 '00' LC '08' Data In 'EF08' L
像这样将GPO命令定义为APDU命令: CLA INS P1 P2 Lc Data Le 80 A8 00 00 Lc Data 00 因此,缺少的部分是 Lc 和数据,我们必须根据PDOL的 P
我正在尝试手动生成 AC,我有一个生成 AC 的工具,但我想自己生成它以了解其算法。 我的计算对于 Discover 卡来说没问题,但对于 MasterCard 却失败了。据我了解,用于生成AC的数据
我需要通过芯片读取每张可能的卡的 PAN 码。在我的工作中,我只能使用 C,而且我没有可以帮助我完成这项无聊任务的例程。这就是我使用的 APDU 的步骤: 1) 选择 1PAY.SYS.DDF01 0
我正在编写 Java Applet。我需要使用 APDU 命令将预生成的 RSAPrivateCrtKey 上传到小程序。 我在我的电脑上生成 key 。接下来我在 privateKeyBuffer
我一直在使用有线智能卡读卡器 SDK,其中调用是同步的。最近一直在尝试蓝牙接口(interface),但 APDU 命令是异步的,因此我们无法解释为形成下一个 APDU 命令而发送的调用的响应。 任何
问题:假设有一个 Applet 的多个实例。当前选择了一个Applet 实例。是否可以将任何 APDU 命令从选定的 Applet 传递到另一个 Applet 实例?我在JavaCard API 3.
主机发送以下命令给小程序选择EF文件 00 A4 02 00 02 40 01 目的是选择 ID 为 40 01(在命令的数据字段中指定)的 EF 文件。 但是当我调试 process(APDU ap
我对符合 ISO7816-4 标准的首款行业间 APDU 感兴趣。这样的 APDU 可以/允许的最大长度是多少? 我能想到的最长的APDU应该是扩展长度的ISO case 4 APDU。这意味着我们有
我的新 javacard 上有一个小程序的 AID 列表。每个小程序的用途是什么?以及如何获得每个命令都支持的 APDU 命令列表?我需要小程序的 .cap 文件所用的 java 源代码吗?我的另一个
我创建了一个包(AID=0102030405),其中包含两个小程序。 这是第一个小程序 (AID=01020304050202020202) 的程序,它将 bArray 的内容存储到静态字段并在 pr
我正在尝试与显然是根据 EMV 规范实现的 SAM 进行通信。每当我问他们问题时,开发人员只会向我推荐 EMV 书籍。一瘸一拐地通过 EMV 卡和终端规范后,我终于设法一个接一个地发送命令,并使用 C
我正在使用javax.smartcardio通过CardChannel.transmit(CommandAPDU command)向智能卡发送APDU命令。 但是,似乎在某处定义了超时,因为当我没有收
我刚刚开始制作一个使用主机卡模拟 (HCE) 的应用程序,并且我已经完成了各种零碎工作。我需要该应用程序使手机表现得像一张卡,而另一部手机表现得像 NFC 读取器并扫描它,反之亦然,以便交换一小段信息
我正在尝试从智能卡中的文件中读取数据,我正在使用以下 APDU 命令 00 B0 00 02 00 但是我得到了这样的回应: A1 1B 4F 0C A0 00 00 00 77 02 08 05 0
我正在使用 JCard sim,java 卡版本 2.2.2,我想知道 .scr 文件如何与 .java 文件相关联。 (NetBeans IDE 上的 Java 卡模拟器。我没有使用实际的智能卡)。
我正在使用 javax.smartcardio 包来开发与智能卡相关的应用程序。我想发送伪 ADPU 命令来设置阅读器的 LED/LCD 状态。 我发现向读卡器/卡发送 APDU 命令的唯一方法是 C
如您所知,Gloabal Platform Card Specification定义了一个名为 Get Data 的命令来从智能卡中检索一些信息。 GlobalPlatformPro是与智能卡通信的流
哪个 APDU 命令获取卡 ID 的 7 个字节? 我使用带有 ISO14443 层的 T=CL (ISO7816) 协议(protocol)。在检测卡上,我只能看到卡 ID 的 4 个字节。 我发现
我想发送一个响应 APDU,其中包含响应数据字段以及非 0x9000 的状态字。考虑到我对 ISO 7816-4 的理解,这通常应该是可能的。 但是,每当我指定返回数据并尝试发送它时,我看不到任何显式
我是一名优秀的程序员,十分优秀!