我想开始为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,但都无济于事。我看不到日志。此外,我还试图在运行防火墙时完全禁用它,这样它就不会被意外阻止。
顺便提一下,在启动仿真器之前,我已经启动了连接管理器。
有没有人有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发布于 2011-08-05 00:20:57
@nikhil:感谢您提供的TCP Echo Server链接。在运行echo服务器之后,我让我的OpenNFC堆栈正常工作。为了让其他用户也能从本练习中受益,这里总结了如何使用OpenNFC控制器(NFCC)模拟器设置NFC堆栈。
--堆栈(带有NFCC模拟器)仅在Windows主机上受支持,因为连接中心和NFCC模拟器都是Windows应用程序。
--需要下载所有3个包
具有连接中心和NFCC模拟器应用程序的
的
--安装SDK插件,使用SDK插件创建AVD。
--启动连接中心(运行"Connection Center.exe")并将其配置为接受来自其他机器的客户端连接。
--启动NFCC模拟器(运行"NfcSimulator.exe")。
--使用命令: echo工具/p tcp /s 7启动echo服务器(在端口7上)
--使用刚刚创建的AVD启动Android模拟器。
--从模拟器中,选择设置->无线和网络->NFC设置
--在IP连接中心输入10.0.2.2
--选择用于NFC HAL实施的模拟器
--现在单击NFC开关(复选框)以启动NFC堆栈!
发布于 2011-07-22 04:30:39
我也遇到过类似的问题。原来文档中提到的Connection Center是一个Windows应用程序。这是来自Inside的开发人员:“Connection Center是一个针对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回应服务器,以便在端口7上应答”。我不确定它是如何完成的,以及需要什么。
我建议您在Windows主机上尝试相同的设置,这也是我要做的。
发布于 2011-11-03 21:57:28
使用新版本的NFC核心,SDK,连接中心,NFC模拟器和Android附加组件的新镜像是可能的。我已经测试过了,它是有效的。只要查看Open NFC Project的页面并下载这些东西的新版本即可。
https://stackoverflow.com/questions/6770774
复制相似问题