Начало работы с Open NFC emulator
Я хотел бы начать работу с разработкой приложений NFC для android. Я недавно начал с android, и я нахожу его очень интересной платформой для разработки. Прежде чем я выйду и инвестирую в Android-устройство со встроенным считывателем NFC и тегами покупки, я хотел бы почувствовать, как на самом деле пишется код для них.
нашел открыть NFC Android эмулятор и, похоже, это то, что я ищу. Я скачал : 1. Открытый NFC для Андроид 2. Открытое NFC core Edition
после создания avd, который для Open NFC, я следовал инструкциям.
теперь проблема, с которой я сталкиваюсь, заключается в том, что в эмуляторе, когда я иду в настройки беспроводной связи, а затем включаю NFC, он говорит, что произошла ошибка. Я попытался установить IP на 10.0.2.2, а также IP, который я получаю от ipconfig, но безрезультатно. Я не вижу никакого бревна. Также я попытался полностью отключить брандмауэр во время его запуска, чтобы он не блокируется случайно.
в качестве примечания, я хотел бы упомянуть, что у меня есть диспетчер соединений, прежде чем запускать эмулятор.
у кого-нибудь есть опыт работы с Open NFC для Android, Если кто-то может указать мне лучший набор инструкций, я был бы очень благодарен, если бы кто-то мог предложить другой симулятор, с помощью которого я могу попробовать пример кода и получить лучшее представление о NFC.
вывод АБР 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.
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 ответов
@nikhil: Спасибо за ссылку на TCP Echo Server. Я получил свой стек OpenNFC для работы после запуска сервера echo. Чтобы другие пользователи могли воспользоваться этим упражнением, вот краткое описание того, что нужно сделать, чтобы настроить стек OpenNFC с помощью симулятора NFC controller (NFCC).
--стек (с симулятором NFCC) поддерживается на только хост Windows, поскольку и Центр подключения, и симулятор NFCC являются приложениями Windows.
--нужно скачать все 3 упаковки:
- opennfc Android SDK аддон
- opennfc core Edition, который имеет центр подключения и приложения nfcc simulator.
- Эхо-сервера: EchoTool
--установите аддон SDK и создайте AVD с помощью аддона SDK.
--start Connection Center (запустить "Центр подключения.exe") и настроить его для приема клиентских подключений от других машины.
--запустить nfcc simulator (запустить " NfcSimulator.исполняемый.)"
--запустите echo server (на Порту 7), используя cmd: echotool /p tcp /s 7
--запустите эмулятор Android, используя только что созданный AVD.
--в эмуляторе выберите Настройки->Беспроводные сети - >настройки NFC
--введите 10.0.2.2 в IP Connection Center
--выберите симулятор для реализации NFC HAL
--теперь нажмите переключатель NFC (флажок) чтобы запустить стек NFC!
Я испытал аналогичные проблемы. Оказывается, центр подключения, упомянутый в документе, является приложением Windows. Это от разработчика внутри: "центр подключения-это инструмент, выпущенный в двоичной форме для Windows. Вы можете найти его, а также симулятор NFC, в основной версии Open 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, что и я собираюсь сделать.
с новыми версиями NFC Core, SDK, Connection Center, NFC эмулятор и новый образ Android дополнения возможно. Я проверил и это работает... Просто проверьте страницу открытого проекта NFC и загрузите новые версии этих вещей.