安卓NFC手机能否充当NFC标签?

126

据我目前的理解,NFC手机将充当NFC读取器,从NFC标签读取数据。那么我的问题是,我们能否反过来做?我们能否使Android NFC手机表现为一个标签,供NFC读取器获取数据吗?

感谢您的帮助。


请使用这个手机应用程序:https://play.google.com/store/apps/details?id=com.secodek.nfcemulator - undefined
14个回答

36

目前来说,我会回答“不行”或“难度较大”,但随着 Android NFC API 的发展,这种情况可能会改变。

NFC互动有三种模式:

  1. 读写模式: 手机读取标签并写入它们。它不是模拟卡片而是NFC读写设备。因此,在此模式下无法模拟标签。

  2. 点对点模式: 手机可以读取并返回ndef消息。如果标签阅读器支持点对点模式,则手机可能可以充当标签。然而,我不确定android是否在LLCP协议(NFC逻辑链路协议)之上使用自己的协议,这将防止大多数读卡器将手机视为NFC标签。

  3. 卡片模拟模式:手机使用安全元件来模拟智能卡或其他非接触式设备。我不确定这是否已经推出,但可能效果很好。但是,使用安全元件可能需要硬件供应商或其他人验证您的应用程序/授权其访问安全元件。这不像创建常规NFC android应用程序那样简单。

更多细节请参见: http://www.mail-archive.com/android-developers@googlegroups.com/msg152222.html

一个真正的问题是:为什么您要模拟一个简单的旧NFC标签?我没有考虑到的应用吗?通常,您需要模拟像交通卡、访问密钥或信用卡这样的东西,这将需要使用安全元件(我想是这样,但不确定)。


好的。Google今天刚宣布了google.com/wallet。在这种情况下,手机不就充当标签了吗? - Joshua Partogi
2
正如@erich-douglass在上面指出的那样:不一定。如果读者终端是点对点的,它就不需要充当标签。 - denbec
我希望它能作为标签,可以代替通行证等任何身份识别方法。 - Sharjeel Ahmed
13
这已经过时了。Android 4.4 具有基于主机的卡模拟功能,可以实现这一点:http://developer.android.com/guide/topics/connectivity/nfc/hce.html - Trevor Johns
我在Play Store上找到的应用程序可以实现这一点。https://play.google.com/store/apps/details?id=com.secodek.nfcemulator - undefined
显示剩余3条评论

19

我们能否将安卓NFC设备作为标签,供其他NFC读取器获取数据?

Nexus S支持点对点模式,正如其名称所示,它使一部手机充当标签,另一部手机可以读取。今年有一个非常好的Google I/O会议关于NFC的讲座。如果您对NFC感兴趣,我建议观看它。


谢谢,这让我明白了。但是一个NFC读卡器可以从手机上读取吗? - Joshua Partogi
@jpartogi 我不是完全确定,但我认为读者必须明确支持点对点模式才能使其工作。 - Erich Douglass
点对点模式是指两台手机或设备都充当读取器。信息不仅仅是被读取,而是来回推送(写入)。 - Ben Ward
@ErichDouglass 视频链接无法使用,我认为这是你想要的链接 https://www.youtube.com/watch?v=49L7z3rxz4Q - Ahmed Hegazy

11

10

6

可以使Android设备模拟NFC标签,这种行为被称为卡片模拟

  • 卡片模拟可以基于主机(HCE)或安全元件(CE)实现。
  • 在HCE中,运行在Android主处理器上的应用程序响应读写器。因此,手机需要开启状态。
  • 在CE中,驻留在安全元件中的应用程序响应读写器。在这里,只需将NFC控制器供电,其余设备处于挂起状态即可。
  • 其中一种或两种方法可以同时激活。
    路由表指示NFC控制器将读写器的命令路由到何处。

4
可以提供一些参考或使用案例吗? - AbhinayMe
1
有没有已知的 Android 应用程序可以读取访问卡,然后从手机本身模拟它? - nl-x
@nl-x 是的,Android 上有这样的应用程序可供使用。看看这个:https://play.google.com/store/apps/details?id=com.maxsoft.ndeftagemulator&gl=DE - Kuvonchbek Yakubov
目前还没有一款单一的应用程序可以读取访问卡,并在手机上模拟相同的卡片。 - Padmanabha V

3

阅读此处:http://groups.google.com/group/android-developers/browse_thread/thread/d5fc35a9f16aa467/dec4843abd73d9e9%3Flnk%3Dgst%26q%3Dsecure%2Belement%2Bdiff%2527s%23dec4843abd73d9e9?pli=1

我自己没有验证过,但看起来人们成功将隐藏的代码再次包含到Android中。 他们似乎能够模拟Mifare Classic卡(iso-14443)。 我很快会亲自测试这个,它看起来非常有趣。

如果你想为商业或免费应用程序做这件事,你会遇到困难,因为你的用户不会喜欢更改内核以支持你的应用程序。

更新: 有一个简单的技巧可以让你的手机模拟一张票:
你可以获得一个NFC贴纸并将其放在手机上或内部。这样,你就能在任何时候读写它,其他设备也可以读写它。
这只是我想到的一个主意,当然从来没有见过有人使用过 ;)


我们尝试了使用iCarte在iPhone上模拟NFC标签的技巧。这可能有效...但我们决定取消它,因为那真的是不可用的... - STeN

3

是的,请查看NFCManager中的NDEF Push - 在Android 4中,您甚至可以创建NDEFMessage来推送到交互发生时的活动设备。


1
这是点对点模式,不是NFC论坛规定的标签仿真。 - STeN

2
在关于NFC的谷歌IO会议中,有一个问题是这样的:

卡模拟? 没有卡模拟的API支持 在进行卡模拟时没有一致的用户体验和吸引人的故事


再说一遍 - 卡模拟“不允许”的原因通常是需要使用安全元素,但 NFC 标签没有任何安全性(事实上它们不能有任何安全性)。这消除了安全元素的需求,可能可以通过应用程序代码进行模拟。 - STeN

1

如果您想让一个带电的NFC设备假装成被动设备(例如标签)...不确定它的效果如何,但安卓应用程序NFCClassic声称可以记录标签内容,然后允许激活标签并出现为复制的标签对于NFC读取器。创建了一个记录标签的库。


0

对于 NFC 技术来说很简单。但是对于谷歌来说,它不支持它作为 Google 钱包。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接