昨天我看了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消息正在外出,但其他手機並沒有抓住它... 有人知道爲什麼嗎?
這是從手機(當那些2個手機是彼此接觸)之一的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
我做了一些更改默認便籤代碼爲了升級它以支持ICS NFC API。 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(簡單NDEF交換協議),或Android的 「com.android.npp」( Ndef Push Protocol)。這在薑餅級別的Android NFC設備上是可選的,但是冰淇淋三明治和超出必須使用SNEP。
我不明白如果使用setNdefPushMessage,它會自動支持SNEP協議,如果我不得不做其他更改。 目前正如我所說我正在使用Galaxy Nexus(4.0.2)和Nexus S(4.0.3),並且我沒有其他類型的設備進行測試。
我也爲發送消息的適配器實現了onNdefPushComplete,並且我可以看到它從來沒有調用過..我不明白這是關於APIS,設備還是我的代碼的問題。 所以我不明白的是:如果一切工作正常,當我更改粘滯便箋編輯文本的文本,並將兩臺設備連接到NFC時,文本會被髮送到其他設備?這是例子嗎?
真正奇怪的是,我無法找到有關如何使用ICS和官方文檔並不能解釋這麼好做NFC例子...
有人知道如何解決?
我犯了一個大錯。我希望啓用NFC並禁用波束功能仍然可以使NFC工作。我瞭解到,啓用NFC可啓用標籤的讀取部分,從而使ICS中的Beam能夠啓用寫入部分。所以最後我的設備能夠讀取但不寫:)現在一切工作正常:) – StErMi 2012-03-05 15:27:03