Начало работы с открытым эмулятором NFC
Я хотел бы начать работу над разработкой приложений NFC для Android. Недавно я начал работу с Android, и я нашел для него очень интересную платформу для разработки. Прежде чем я выйду и инвестирую в устройство Android, которое имеет встроенный считыватель NFC и теги для покупок, я хотел бы получить представление о том, как он на самом деле пишет для них код.
Я нашел Open NFC Android emulator, и, похоже, это то, что я ищу. Я скачал:
1. Open NFC для Android
2. Open NFC core Edition
После создания avd, который для Open NFC, я выполнил инструкции.
Теперь проблема, с которой я сталкиваюсь, заключается в том, что в эмуляторе, когда я перехожу к настройкам беспроводной сети, а затем я включаю NFC, он говорит, что произошла ошибка. Я попытался установить IP-адрес 10.0.2.2, а также IP-адрес, который я получаю из ipconfig, но безрезультатно. Там нет журнала, который я вижу.
Также я попытался полностью отключить брандмауэр во время его запуска, чтобы он случайно не блокировался.
В качестве примечания я хотел бы упомянуть, что перед запуском эмулятора у меня появился диспетчер подключений.
Есть ли у кого-нибудь опыт работы с Open NFC для Android, если кто-то может указать мне на лучший набор инструкций, я был бы очень благодарен в качестве альтернативы. Если кто-то мог предложить другой симулятор, с помощью которого я могу попробовать какой-нибудь примерный код и получить лучшее понимание NFC.
Результат логарифма adb
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: [email protected]
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.
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
Ответы
Ответ 1
@nikhil:
Спасибо за ссылку на TCP Echo Server. Я получил свой стек OpenNFC для работы после запуска эхо-сервера. Так что другие пользователи могут извлечь выгоду из этого упражнения, вот сводка о том, что делать, чтобы настроить стек OpenNFC с помощью симулятора NFC-контроллера (NFCC).
- Стек (с симулятором NFCC) поддерживается только только для хоста Windows, поскольку как Центр подключения, так и симулятор NFCC являются приложениями Windows.
- необходимо загрузить все 3 пакета:
- Установите аддон SDK и создайте AVD с помощью SDK Addon.
- запустите Центр соединений (запустите "Connection Center.exe" ) и настройте его для приема клиентских подключений с других компьютеров.
- запустить симулятор NFCC (запустить "NfcSimulator.exe" ).
- запустить эхо-сервер (на порту 7), используя команду cmd: echotool/p tcp/s 7
- запустить эмулятор Android с помощью только что созданного AVD.
- из эмулятора выберите "Настройки" → "Беспроводная связь" и "Сети" - "Настройки NFC"
- введите 10.0.2.2 в центр IP-соединения
- выберите Simulator для реализации NFC HAL
- теперь щелкните переключатель NFC (флажок), чтобы запустить стек NFC!
Ответ 2
У меня возникли аналогичные проблемы. Оказывается, что Центр связи, упомянутый в документе, - это приложение Windows. Это от разработчика в Inside: "Центр соединений - это инструмент, выпущенный в двоичной форме для Windows. Вы можете найти его, а также симулятор NFC в Core Edition Open NFC". У меня есть среда сборки (Eclipse), запущенная на узле Ubuntu. Поэтому мне не повезло с этим. Вы также находитесь на хосте Linux?
Для работы симулятора контроллера NFC должен быть запущен Центр соединений, как указано в документе:
"Перед запуском AVD необходимо запустить и сконфигурировать центр подключения
клиентские соединения с других машин ".
В любом случае, после отключения logcat, и из сообщений отладки ясно, что Симулятор не может подключиться к центру соединения. После того, как нажата кнопка переключения NFC, следующий вывод logcat будет собран:
[email protected]:/ # 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, что и я буду делать.
Ответ 3
с новыми версиями NFC Core, SDK, Connection Center, NFC Emulator и новым изображением дополнения Android. Я тестировал, и он работает... Просто просмотрите страницу Open NFC Project и загрузите новые версии этих вещей.