Начало работы с эмулятором Open NFC - PullRequest
13 голосов
/ 20 июля 2011

Я хотел бы начать разработку приложений NFC для Android.Я недавно начал с Android, и я считаю, что это очень интересная платформа для разработки.Прежде чем я выйду и куплю устройство Android со встроенным считывателем NFC и куплю теги, я хотел бы получить представление о том, как на самом деле пишет код для них.

Я нашел OpenЭмулятор Android NFC и, похоже, это то, что я ищу.Я скачал: 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 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 ]

13 голосов
/ 04 августа 2011

@ nikhil: Спасибо за ссылку на TCP Echo Server.После запуска эхо-сервера мой стек OpenNFC заработал.Чтобы другие пользователи могли извлечь выгоду из этого упражнения, вот краткое изложение того, что нужно сделать для настройки стека OpenNFC с помощью симулятора контроллера NFC (NFCC).

- Стек (с симулятором NFCC) поддерживается на Только для хоста Windows , так как и Центр соединений, и симулятор NFCC являются приложениями для Windows.

- необходимо загрузить все 3 пакета :

  1. OpenNFC Android SDK addon
  2. OpenNFCCore Edition , в котором есть Центр соединений и приложения-симулятор NFCC.
  3. Эхо-сервер: EchoTool

- Установите SDK-дополнение,и создайте AVD с помощью SDK Addon.

- запустите Connection Center (запустите «Connection Center.exe») и настройте его для приема клиентских подключений от других машин.

- запустите NFCCсимулятор (запустите "NfcSimulator.exe").

- запустить эхо-сервер (на порту 7), используя cmd: echotool / p tcp / s 7

- запустить эмулятор Android с помощьютолько что созданный AVD.

- в эмуляторе выберите Настройки-> Беспроводная связь и сети-> Настройки NFC

- введите 10.0.2.2 в IP Connection Center

- выберите Simulator для реализации NFC HAL

- теперь щелкните переключатель NFC (флажок), чтобы запустить стек NFC!

1 голос
/ 03 ноября 2011

с новыми версиями NFC Core, SDK, Connection Center, NFC Emulator и новым образом надстройки Android.Я проверил, и это работает ... Просто просмотрите страницу Open NFC Project и загрузите новые версии этих вещей.

1 голос
/ 22 июля 2011

У меня были похожие проблемы.Оказывается, что Центр соединений, упомянутый в документе, является приложением Windows.Это от разработчика из Inside: «Центр соединений - это инструмент, выпущенный в двоичном виде для Windows. Вы можете найти его, а также симулятор NFC в Core Edition Open NFC».Моя среда сборки (Eclipse) работает на хосте Ubuntu.Так что мне не повезло с этим.Вы также используете хост Linux?

Для работы симулятора контроллера NFC должен быть запущен Центр соединений, как указано в документе: «Перед запуском AVD Центр соединений должен быть запущен и настроен напринимать клиентские подключения с других машин ".

В любом случае, после запуска logcat, и из сообщений отладки ясно, что Simulator не может подключиться к центру соединений.Следующие выходные данные logcat собираются после нажатия кнопки переключения NFC:

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, что я и собираюсь сделать.

...