如何在Android手机上模拟nfc-tag

时间:2012-05-31 10:41:23

标签: android nfc

我有一个Android手机(nexus s,sdk v15),它将通过使用标签仿真将字符串发送到以nfc-reader / writer-mode运行的开发板。我知道android没有正式支持,所以我可以通过直接访问驱动程序(?)本机地完成它。

有没有任何人之前做过这个的例子或者做过这个的应用程序(最好是开源的?)

我在google上发现了一些东西,通常建议不要这样做,或者人们谈论它是如何可能的或者他们如何(非常普遍地)完成它,但我找不到任何代码或准确的建议。

我不想访问安全元素或做任何需要供应商/提供商批准的智能卡。我只是想转移字符串。我也知道这可以通过p2p的android api方法来完成,但是这对于电路板不起作用,所以我试试这个方法。

3 个答案:

答案 0 :(得分:14)

对于运行库存KitKat 4.4的设备

使用Android KitKat 4.4手机充当NFC 的能力为built into the operating system,因此您不再需要依赖Cyanogenmod或自定义ROM。它本身不会让手机充当Mifare Classic标签,但是我的手机与ACR122 reader进行通信的效果非常好所以如果你的手机可以获得4.4,我肯定会推荐这个选项。设备

如果您想要低于4.4并且愿意使用Cyanogenmod

load applications onto your device可以让他们非常轻松地通过NFC与读者沟通,但是你必须运行Cyanogenmod,此功能为present from CM 9.1

想要在Gingerbread上运行 (旧答案)

是的,这是可能的,并且已经有2.3.4的补丁用于启用它,我将发布一些链接供您阅读。

他们确实要求将2.3.4 Gingerbread ROM闪存到您的设备以及其他一些补丁以启用卡仿真功能,因此如果您不愿意这样做,那么它们将没有多大用处,我知道这是让它运转的唯一方法。我自己没有亲自测试过,但用户评论表明它有效。

以下是描述整个过程的博客链接:http://techshek4u.blogspot.co.uk/2012/01/applying-card-emulation-patch-to_03.html

以下是原始论坛帖子的链接,其中包含2.3.4的补丁以启用它:
http://forum.xda-developers.com/showthread.php?t=1281946

这是原始讨论的链接,各种开发人员都试图让它工作,这取决于您对Android和NFC的技术知识,这可能或多或少有趣:https://groups.google.com/forum/#!msg/android-developers/1fw1qfFqpGc/6dlzvTqExN4J

警告:根据NFCGuy的回答“如果运行ICS,请不要将手机降级为GB。您无法降级NFC固件以便再次与GB兼容,因此如果您闪存,NFC将无法正常工作您的设备使用GB。“

答案 1 :(得分:3)

如果您使设备root,则可以创建一个打开卡仿真模式的应用程序。这不是太困难,参见例如https://stackoverflow.com/a/10506299/1202968

但是,卡片仿真完全由安全元素处理。您的应用无法访问正在传输的数据。获得控制权的唯一方法是在Secure Element上创建和安装Java Card applet。但是,为了能够这样做,您需要访问仅为Google知道的秘密身份验证密钥。

PS:如果正在运行ICS,请不要将手机降级为GB。您无法将NFC固件降级为与GB再次兼容,因此如果使用GB刷新设备,NFC将无法正常工作。

答案 2 :(得分:2)

根据http://developer.android.com/guide/topics/connectivity/nfc/hce.html

,Android正式支持主机卡模拟