Open NFC仿真器入门

时间:2011-07-20 03:31:35

标签: android emulation nfc open-nfc

我想开始为Android开发NFC应用程序。我最近开始使用android,我发现它是一个非常有趣的开发平台。在我出去投资购买内置NFC阅读器和购买标签的Android设备之前,我想了解一下如何为他们编写代码。

我找到了Open NFC Android emulator,它似乎正是我正在寻找的。我已下载: 1.适用于Android的Open NFC 2. Open NFC核心版

创建了用于Open NFC的avd后,我按照说明进行操作。

现在我面临的问题是,在模拟器中,当我进入无线设置然后我启用NFC时,它表示存在错误。我已经尝试将IP设置为10.0.2.2以及我从ipconfig获得的IP但无济于事。没有我能看到的日志。 此外,我试图在运行防火墙时完全禁用防火墙,以免意外阻塞。

作为旁注,我想提一下,在启动模拟器之前,我已经启动了Connection Manager。

有没有人有使用Open NFC for Android的经验,如果有人可以给我指出更好的指令,我会非常感激,或者如果有人可以提出另一个模拟器,我可以尝试一些示例代码并获得更好的关于NFC的理解。

adb logcat的输出是

W/KeyCharacterMap(  165): No keyboard for id 0
W/KeyCharacterMap(  165): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_cc_ip
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 10.0.2.2
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_CC_IP: 10.0.2.2
D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_hal_mode_list
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 1
D/NfcSettings(  165): onPreferenceChange: Setting NFC mPreferenceNfcHalMode: SIMULATOR:1
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_HAL_MODE: 1
W/InputManagerService(   68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@406df430
D/NfcEnabler(  165): Setting NFC enabled state to: true
D/OpenNFCService(  250): Enabling NFC.  previous =false
D/OpenNFCService(  250): mIsNfcEnabled NFC =false
D/OpenNFCService(  250): _enable =true
D/OpenNFCService(  250): IOpenNFCService:setNFCEnabled(true)
D/OpenNFCService(  250): Invalid IP address
D/OpenNFCService(  250): can't create configuration !
D/OpenNFCService(  250): updateNfcOnSetting: false
D/OpenNFCService(  250): NFC success of _enabletrue) is false
D/OpenNFCService(  250): $$$NFC$$$ Will connect ! $$$NFC$$$
W/NfcEnabler(  165): Error setting NFC enabled state to true

当我将IP更改为使用ipconfig获得的IP时,我收到同样的错误。

D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_cc_ip
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 114.31.179.86
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_CC_IP: 114.31.179.86
D/NfcEnabler(  165): Setting NFC enabled state to: true
D/OpenNFCService(  250): Enabling NFC.  previous =false
D/OpenNFCService(  250): mIsNfcEnabled NFC =false
D/OpenNFCService(  250): _enable =true
D/OpenNFCService(  250): IOpenNFCService:setNFCEnabled(true)
D/OpenNFCService(  250): Invalid IP address
D/OpenNFCService(  250): can't create configuration !
D/OpenNFCService(  250): updateNfcOnSetting: false
D/OpenNFCService(  250): NFC success of _enabletrue) is false
D/OpenNFCService(  250): $$$NFC$$$ Will connect ! $$$NFC$$$
W/NfcEnabler(  165): Error setting NFC enabled state to true

3 个答案:

答案 0 :(得分:13)

@nikhil: 感谢TCP Echo Server的链接。运行echo服务器后,我的OpenNFC堆栈工作正常。因此,其他用户可以从此练习中受益,这里是使用NFC控制器(NFCC)模拟器设置OpenNFC堆栈的操作的摘要。

- 仅限Windows主机支持堆栈(使用NFCC模拟器),因为Connection Center和NFCC模拟器都是Windows应用程序。

- 需要下载所有3个套餐

  1. OpenNFC Android SDK addon
  2. OpenNFC core Edition,其中包含连接中心和NFCC模拟器应用程序。
  3. echo服务器:EchoTool
  4. - 安装SDK插件,并使用SDK Addon创建AVD。

    - 启动Connection Center(运行“Connection Center.exe”)并将其配置为接受来自其他计算机的客户端连接。

    - 启动NFCC模拟器(运行“NfcSimulator.exe”)。

    - 启动echo服务器(在端口7上),使用cmd:echotool / p tcp / s 7

    - 使用刚刚创建的AVD启动Android模拟器。

    - 从模拟器中选择设置 - >无线& networks-> NFC设置

    - 在IP连接中心输入10.0.2.2

    - 选择用于NFC HAL实施的模拟器

    - 现在点击NFC切换(复选框)以启动NFC堆栈!

答案 1 :(得分:1)

我遇到过类似的问题。事实证明,文档中提到的连接中心是一个Windows应用程序。这是来自Inside的开发人员:“连接中心是一个以Windows二进制形式发布的工具。您可以在Open NFC的核心版中找到它,以及NFC模拟器”。我的构建环境(Eclipse)在Ubuntu主机上运行。所以我对这个不太好运。你也在Linux主机上吗?

连接中心需要运行才能使NFC控制器模拟器正常工作,如文档中所示: “在启动AVD之前,必须启动并配置连接中心以接受 来自其他机器的客户端连接“。

无论如何,在关闭logcat之后,从调试消息中可以清楚地看到模拟器无法连接到连接中心。单击NFC切换按钮后,将收集以下logcat输出:

root@android:/ # logcat
D/NfcEnabler(  170): Setting NFC enabled state to: true
D/OpenNFCService(  273): Enabling NFC.  previous =false
D/OpenNFCService(  273): mIsNfcEnabled NFC =false
D/OpenNFCService(  273): _enable =true
D/OpenNFCService(  273): IOpenNFCService:setNFCEnabled(true)
D/NFCService(  273): Java_org_opennfc_service_Interface_OpenNFCServerStart
D/NFCService(  273): Java_org_opennfc_service_Interface_OpenNFCServerStart : Simulator has been selected
D/Microread(  273): static_nfcc_device_open
D/Microread(  273): static_nfcc_device_get_binding
E/SIMULATOR(  273): 00071 ERROR HAL   : GetNALBinding
E/CCCLIENT(  273): static_CCClientCreateSocket / connect() failed 111 
E/SIMULATOR(  273): 00072 WARN  HAL   : =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
E/SIMULATOR(  273): 
E/SIMULATOR(  273): 00073 WARN  HAL   : CANNOT CONNECT TO THE CONNECTION CENTER.
E/SIMULATOR(  273): 
E/SIMULATOR(  273): 00074 WARN  HAL   : SYMPTOM: Impossible to connect to the Connection Center
E/SIMULATOR(  273): 
E/SIMULATOR(  273): 00075 WARN  HAL   : DIAGNOSTIC: Connection Center not started, firewall, ...
E/SIMULATOR(  273):            Check Connection Center and your network configuration.
E/SIMULATOR(  273): 
D/SIMULATOR(  273): 00076 TRACE HAL   : =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
D/SIMULATOR(  273): 
E/SIMULATOR(  273): 00077 ERROR SIM   : static_NALBindingCreateFunction: Cannot create the com port
E/OPENNFC_SERVER(  273): 00031 ERROR NFC_HAL PNALServiceCreate: Error returned by the initialization of the NFC HAL
E/OPENNFC_SERVER(  273): 00032 ERROR EVENT : static_PContextCreate: Cannot create the NFC HAL Service
E/OPENNFC_SERVER(  273): 00033 ERROR STARTUP  BootNFCC : PDriverCreate() failed
E/NFCService(  273): Java_org_opennfc_service_Interface_OpenNFCServerStart: StartNFCC failed
E/OpenNFCService(  273): OpenNFCServerStart failed
D/OpenNFCService(  273): updateNfcOnSetting: false
D/OpenNFCService(  273): NFC success of _enabletrue) is false
D/OpenNFCService(  273): $$$NFC$$$ Will connect ! $$$NFC$$$
W/NfcEnabler(  170): Error setting NFC enabled state to true

开发人员表示,为了在Linux主机上工作,“你可能必须与机器上的连接中心并行设置TCP echo服务器,以便在端口7上应答”。我不确定它是如何完成的以及需要什么。

我建议您在Windows主机上尝试相同的设置,这就是我要做的事情。

答案 2 :(得分:1)

可以使用新版本的NFC Core,SDK,连接中心,NFC模拟器和Android附加组件的新图像。我已经测试过并且有效......只需打开Open NFC Project的页面并下载这些东西的新版本。