Android NFC Gingerbread для ICS NDEF Push не работает - PullRequest
2 голосов
/ 30 января 2012

В настоящее время я пишу приложение, которое использует NFC для отправки текста между двумя устройствами.У меня есть два телефона Nexus S, один работает со стандартным Ice Cream Sandwich, а другой - с Gingerbread 2.3.6.

Программа выдвигает сообщение NDEF, правильно сформированное с помощью примера кода Google, на передний план, ожидая, чтобы его поднялиэтот небольшой фрагмент кода находится здесь:

/**
  * Push an NDEF to the foreground with the given text.
  * @param message The text to be put in the message that will be pushed.
  * 
  */
public void pushNDEFwithText(String text)
{
  NdefRecord ndefRec = createTextRecord(text, Locale.ENGLISH, true);
  NdefMessage message = new NdefMessage(new NdefRecord[]{ ndefRec });  
  nfcAdapter.enableForegroundNdefPush(this, message);
  Log.i("NDEF", "Pushed an NDEF message containing the text: "+text);
}

Программа работает нормально, когда у меня Gingerbread Nexus выдвигает тег на передний план, ICS поднимает его, и я в настоящее время использую NFCTagInfo для его чтения.

ПРОБЛЕМА: Когда у меня ICS Nexus, нажмите метку вперед, пряник, кажется, не поднимает ее.Я думаю, что столкнулся с небольшой проблемой из-за того, что ICS использует SNEP, а Gingerbread использует NPP, есть ли способ заставить ICS использовать NPP?Или, если кто-то думает, что это не проблема, что это может быть?

NB.В идеале я бы просто хотел использовать исключительно ICS, но Google прекратил выпускать его по беспроводной связи из-за ошибок, и, поскольку обновление ICS нарушило отладку USB на Nexus, мне пришлось устанавливать тестовые приложения через Интернет и отлаживать, глядя наЛоги на устройстве не идеальны, поэтому я просто разрабатываю для Gingerbread.По этой же причине я не могу опубликовать журнал из ICS, но вот Gingerbread, когда NDEF находится на переднем плане ICS и Gingerbread получает (где он не работает):

01-30 16:09:59.343: D/NFC JNI(197): Discovered P2P Target  
01-30 16:09:59.343: D/NfcService(197): LLCP Activation message  
01-30 16:09:59.394: I/NFC JNI(197): LLCP Link activated (LTO=150, MIU=128, OPTION=0x00, WKS=0x01)  
01-30 16:09:59.414: D/NdefPushClient(197): LLCP connection up and running  
01-30 16:09:59.417: D/NdefPushClient(197): no tags set, bailing  
01-30 16:10:00.160: I/NFC JNI(197): LLCP Link deactivated  
01-30 16:10:00.160: D/NfcService(197): LLCP Link Deactivated message. Restart polling loop.  
01-30 16:10:00.230: D/NFC JNI(197): Discovered P2P Target  
01-30 16:10:00.230: D/NfcService(197): LLCP Activation message  
01-30 16:10:00.304: I/NFC JNI(197): LLCP Link activated (LTO=150, MIU=128, OPTION=0x00, WKS=0x01)  
01-30 16:10:00.320: D/NdefPushClient(197): LLCP connection up and running  
01-30 16:10:00.324: D/NdefPushClient(197): no tags set, bailing  
01-30 16:10:05.621: I/NFC JNI(197): LLCP Link deactivated  

Ивот откуда он находится на переднем плане Gingerbread и ICS получает (это работает):

01-30 16:18:54.058: I/ActivityManager(109): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.terminal/.TerminalActivity bnds=[5,231][115,349] } from pid 200  
01-30 16:18:54.093: I/NDEF(1314): Pushed an NDEF message containing the text: This is an example message!  
01-30 16:18:54.175: V/RenderScript_jni(200): surfaceDestroyed  
01-30 16:18:54.445: I/ActivityManager(109): Displayed com.terminal/.TerminalActivity: +360ms  
01-30 16:18:57.015: D/NfcService(197): NFC-EE routing OFF  
01-30 16:18:57.023: D/NfcService(197): NFC-C discovery ON  
01-30 16:18:57.375: D/NFC JNI(197): Discovered P2P Target  
01-30 16:18:57.375: D/NfcService(197): LLCP Activation message  
01-30 16:18:57.425: I/NFC JNI(197): LLCP Link activated (LTO=150, MIU=128, OPTION=0x00, WKS=0x01)  
01-30 16:18:57.445: D/NdefPushClient(197): LLCP connection up and running  
01-30 16:18:57.445: D/NdefPushClient(197): sending foreground  
01-30 16:18:57.449: D/NdefPushClient(197): about to create socket  
01-30 16:18:57.464: D/NdefPushClient(197): about to connect to service com.android.npp  
01-30 16:18:58.398: D/NdefPushClient(197): about to send a 44 byte message  
01-30 16:18:58.398: D/NdefPushClient(197): about to send a 44 byte packet  
01-30 16:18:58.476: D/NdefPushClient(197): about to close  
01-30 16:19:03.812: I/NFC JNI(197): LLCP Link deactivated  
01-30 16:19:03.812: D/NfcService(197): LLCP Link Deactivated message. Restart polling loop.

1 Ответ

0 голосов
/ 05 марта 2012

Вы используете луч?Я использовал nfcAdapter.setNdefPushMessageCallback (), чтобы выдвинуть мои сообщения, и это, кажется, работает хорошо.Я был в состоянии передать это к читателю ACR122, и я могу также получить сообщение.Я уверен, что вы видели учебники для разработчиков, но пример, который я использую, находится внизу:

http://developer.android.com/guide/topics/nfc/nfc.html

...