вчера я смотрел Google IO Talk о NFC, а сегодня я пытаюсь сделать с ним несколько забавных вещей.
На данный момент у меня есть 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 способом сообщение с телефона на другой и изменить содержимое текста редактирования (как это должен делать пример!).
Я думаю, что сообщение NFC выходит, но другой телефон не захватывает его ...
Кто-то знает почему?
Это logcat с одного из телефонов (когда эти два телефона связываются друг с другом):
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.
На самом деле, если вы перейдете к документации, вы можете увидеть это: http://developer.android.com/reference/android/nfc/NfcAdapter.html#enableForegroundNdefPush%28android.app.Activity,%20android.nfc.NdefMessage%29
Этот метод устарел.
использовать вместо этого setNdefPushMessage (NdefMessage, Activity, Activity ...)
Настоятельно рекомендуем использовать новый setNdefPushMessage (NdefMessage,
Активность, Активность ...) вместо этого: он автоматически подключается к вашему
жизненный цикл активности, поэтому вам не нужно звонить включить / отключить в вашем
onResume / OnPause.
Также я читаю это: для правильной работы NDEF push другое NFC-устройство должно поддерживать либо SNEP (простой протокол обмена Ndef) NFC Forum, либо Android * com .android.npp"(протокол Ndef Push). Это было необязательным для устройств NFC уровня Gingerbread Android, но SNEP является обязательным для Ice-Cream-Sandwich и выше .
Я не понимаю, если при использовании setNdefPushMessage он будет автоматически поддерживать протокол SNEP, если мне придется вносить другие изменения.
На данный момент, как я уже сказал, я использую Galaxy Nexus (4.0.2) и Nexus S (4.0.3), и у меня нет других устройств для тестирования.
Я также реализовал onNdefPushComplete для адаптера, который отправляет сообщения, и для того, что, как я вижу, его никогда не вызывали. Я не понимаю, если это проблема с APIS, устройствами или моим кодом.
Так что я не понимаю, что: если все работает нормально, когда я изменяю текст редактируемого текста Sticky Note и связываю 2 устройства с NFC, текст будет отправлен на другое устройство? Это пример?
Действительно странная вещь в том, что я не могу найти примеры того, как сделать NFC с ICS, а официальная документация не так хорошо это объясняет ...
Кто-то знает, как решить?