вчера я смотрел Google IO Talk о NFC, и сегодня я пытаюсь сделать с ним забавные вещи.Android NFC не работает с ICS
В настоящий момент у меня есть Galaxy Nexus (ICS 4.0.2) и Nexus S (ICS 4.0.3). Я установил пример приложения этого разговора: http://nfc.android.com/StickyNotes.zip
Я также после этого как-для того, чтобы понять поток с некоторыми комментариями: http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/
Что я пытаюсь сделать, это отправьте сообщение p2p с телефона на другой и измените содержимое edittext (как пример должен сделать!).
Я думаю, что сообщение NFC выходит, но другой телефон не захватывает его ... Кто-то знает почему?
Это LogCat от одного телефона (если эти 2 телефона в контактирующих друг с другом):
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte d0
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte a6
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte 42
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte 1
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte fc
03-03 15:37:47.842: W/NFC-LLC(446): bad LLC length byte c1
03-03 15:37:48.264: D/NFC JNI(446): Discovered P2P Target
03-03 15:37:48.264: D/NfcService(446): LLCP Activation message
03-03 15:37:48.264: D/NfcService(446): NativeP2pDevice.MODE_P2P_TARGET
03-03 15:37:48.296: I/NFC JNI(446): LLCP Link activated (LTO=150, MIU=128, OPTION=0x00, WKS=0x01)
03-03 15:37:48.296: D/NfcService(446): Initiator Activate LLCP OK
03-03 15:37:48.296: I/NfcP2pLinkManager(446): LLCP activated
03-03 15:37:48.296: D/NfcP2pLinkManager(446): onP2pInRange()
03-03 15:37:48.467: D/dalvikvm(446): GC_FOR_ALLOC freed 3192K, 18% free 17750K/21575K, paused 19ms
03-03 15:37:48.467: I/dalvikvm-heap(446): Grow heap (frag case) to 20.515MB for 3265936-byte allocation
03-03 15:37:48.514: D/dalvikvm(446): GC_CONCURRENT freed <1K, 3% free 20939K/21575K, paused 4ms+3ms
03-03 15:37:51.264: I/NFC JNI(446): LLCP Link deactivated
03-03 15:37:51.264: D/NfcService(446): LLCP Link Deactivated message. Restart polling loop.
03-03 15:37:51.264: D/NfcService(446): disconnecting from target
03-03 15:37:51.264: I/NfcP2pLinkManager(446): LLCP deactivated.
03-03 15:37:52.022: D/NfcP2pLinkManager(446): Debounce timeout
03-03 15:37:52.022: D/NfcP2pLinkManager(446): onP2pOutOfRange()
UPDATE
Я сделал некоторые изменения по умолчанию Sticky Notes код чтобы обновить его для поддержки API ICS NFC. Infact, если вы переходите к документации, вы можете увидеть это: http://developer.android.com/reference/android/nfc/NfcAdapter.html#enableForegroundNdefPush%28android.app.Activity,%20android.nfc.NdefMessage%29
Этот метод устарел. использование setNdefPushMessage (NdefMessage, активность, активность ...) вместо
Настоятельно рекомендуем использовать новую setNdefPushMessage (NdefMessage, активность, активность ...) вместо: он автоматически перехватывает в свою деятельности жизненного цикла , поэтому вам не нужно вызывать включение/выключение в onResume/onPause.
Также я прочитал это: Для NDEF нажмите, чтобы нормально функционировать другой NFC устройства должны поддерживать либо NFC Форума SNEP (Простой протокол ЦНК Exchange), или «com.android.npp» Андроида (Ndef Push Protocol). Это было необязательно для устройств Android NFC на уровне Gingerbread, но SNEP является обязательным для Ice-Cream-Sandwich и за пределами.
Я не понимаю, если с помощью setNdefPushMessage он будет автоматически поддерживать протокол SNEP, если мне нужно внести другие изменения. В тот момент, когда я сказал, что использую Galaxy Nexus (4.0.2) и Nexus S (4.0.3), и у меня нет других устройств для проведения тестов.
Я также внедрил onNdefPushComplete для адаптера, который отправляет сообщения, и за то, что я вижу, его никогда не вызывали. Я не понимаю, является ли это проблемой для APIS, Devices или моего кода. Так что я не понимаю: если все работает нормально, когда я меняю текст текста редактирования Sticky Note, и я связываю 2 устройства с NFC, текст будет отправлен на другое устройство? Это пример?
Действительно странно, что я не могу найти примеры о том, как сделать NFC с ICS и официальной документации не объясняет это так хорошо ...
Кто-то знает, как решить?
Я делал большую ошибку. Я уверен, что включение NFC и отключение функции Beam все равно заставит NFC работать. Я узнал, что включение NFC позволяет считывать часть тегов, позволяя Beam в ICS включить запись. Так что в заключение мои устройства могли читать, но не писать :) Теперь все работает отлично :) – StErMi