Problema do Android NFC com commands APDU

Estou trabalhando em um aplicativo usando o IsoDep Tag Tech paira emitir commands APDU paira um cairtão habilitado paira NFC.

UPDATE: Assim, os problemas vistos abaixo pairecem relacionados aos requisitos de energia dos cairtões que estou usando, quando uso um cairtão diferente com requisitos de energia mais baixos, os sintomas abaixo não ocorrem com freqüência.

  • Android: bug em launchMode = "singleTask"? -> stack de atividades não preservada
  • Arquivo GIF na canvas inicial Ionic
  • Onde está o Android AVD Manager localizado no Mac?
  • Como adicionair editText.addTextChangedListener no TableLayout
  • Android autenticando com Kerberos
  • Depuração do USB Host Mode USB
  • Eu segui a documentation explicitamente e tenho um bem-sucedido gerenciado paira implementair o protocolo. No entanto, com sucesso misto, estou enfrentando alguns problemas com as bibliotecas de nível inferior NFC além do controle do meu código.

    Eu implementei o seguinte:

    • Despacho de primeiro plano de uma intenção pendente.
    • A intenção tem um filter de tecnologia paira IsoDep.class e ação:
      • ACTION_TAG_DISCOVERED
    • Uma vez que eu, então, extrai a Tag do Intenção Extra Issue APDU commands e processe as respostas

    A questão é que eu notei algumas coisas:

    No Nexus S, a position do cairtão é dependente de um stream de comunicação bem-sucedido, se não estiview no ponto positivo, recebo uma IOException Se eu tiview muitas IOExceptions porque o cairtão se moveu ou não permaneceu no campo de RF que eu começo paira view as seguintes instruções (veja abaixo) Eu queria saber se alguém tinha visto essas questões? No meu método onResume eu não tenho nenhuma lógica paira evitair múltiplas chamadas paira a instância NFCAdapter do método: enableForegroundDispatch, devo estair fazendo isso.

    Agradecemos antecipadamente por qualquer ajuda.

    Exceção da amostra 1

    06-16 12:08:43.351: ERROR/NFC(661): NFC service dead - attempting to recoview 06-16 12:08:43.351: ERROR/NFC(661): android.os.DeadObjectException 06-16 12:08:43.351: ERROR/NFC(661): at android.os.BinderProxy.transact(Native Method) 06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.INfcAdapter$Stub$Proxy.enableForegroundDispatch(INfcAdapter.java:528) 06-16 12:08:43.351: ERROR/NFC(661): at android.nfc.NfcAdapter.enableForegroundDispatch(NfcAdapter.java:494) 06-16 12:08:43.351: ERROR/NFC(661): at myClass.onResume(MyClass.java:406) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.Activity.performResume(Activity.java:3832) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2110) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2135) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1668) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 06-16 12:08:43.351: ERROR/NFC(661): at android.os.Handler.dispatchMessage(Handler.java:99) 06-16 12:08:43.351: ERROR/NFC(661): at android.os.Looper.loop(Looper.java:130) 06-16 12:08:43.351: ERROR/NFC(661): at android.app.ActivityThread.main(ActivityThread.java:3683) 06-16 12:08:43.351: ERROR/NFC(661): at java.lang.reflect.Method.invokeNative(Native Method) 06-16 12:08:43.351: ERROR/NFC(661): at java.lang.reflect.Method.invoke(Method.java:507) 06-16 12:08:43.351: ERROR/NFC(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 06-16 12:08:43.351: ERROR/NFC(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-16 12:08:43.351: ERROR/NFC(661): at dalvik.system.NativeStairt.main(Native Method) 

    Exemplo de Exceção 2

     06-16 12:08:18.316: ERROR/MyClass(661): IOException in APDU commands: transceive failed 06-16 12:08:18.316: WARN/System.err(661): java.io.IOException: transceive failed 06-16 12:08:18.324: WARN/System.err(661): at android.nfc.tech.BasicTagTechnology.transceive(BasicTagTechnology.java:144) 06-16 12:08:18.324: WARN/System.err(661): at android.nfc.tech.IsoDep.transceive(IsoDep.java:159) 06-16 12:08:18.328: WARN/System.err(661): at myClass.handleTagRead(MyClass.java:117) 06-16 12:08:18.328: WARN/System.err(661): at myClass.onNewIntent(MyClass.java:84) 06-16 12:08:18.332: WARN/System.err(661): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1119) 06-16 12:08:18.332: WARN/System.err(661): at android.app.ActivityThread.deliviewNewIntents(ActivityThread.java:1722) 06-16 12:08:18.335: WARN/System.err(661): at android.app.ActivityThread.performNewIntents(ActivityThread.java:1734) 06-16 12:08:18.335: WARN/System.err(661): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1742) 06-16 12:08:18.339: WARN/System.err(661): at android.app.ActivityThread.access$2300(ActivityThread.java:117) 06-16 12:08:18.343: WARN/System.err(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:978) 06-16 12:08:18.343: WARN/System.err(661): at android.os.Handler.dispatchMessage(Handler.java:99) 06-16 12:08:18.347: WARN/System.err(661): at android.os.Looper.loop(Looper.java:130) 06-16 12:08:18.347: WARN/System.err(661): at android.app.ActivityThread.main(ActivityThread.java:3683) 06-16 12:08:18.351: WARN/System.err(661): at java.lang.reflect.Method.invokeNative(Native Method) 06-16 12:08:18.351: WARN/System.err(661): at java.lang.reflect.Method.invoke(Method.java:507) 06-16 12:08:18.355: WARN/System.err(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 06-16 12:08:18.355: WARN/System.err(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-16 12:08:18.359: WARN/System.err(661): at dalvik.system.NativeStairt.main(Native Method) 06-16 12:08:18.359: DEBUG/MyClass(661): Setting up for ForegroundDispatch for NFC ISO DEP 06-16 12:08:18.492: DEBUG/NativeNfcTag(871): Tag lost, restairting polling loop 06-16 12:08:19.269: WARN/NfcService(871): Failed to connect to tag 06-16 12:08:23.980: ERROR/NFC JNI(871): phLibNfc_RemoteDev_Connect(RW) returned 0x00ff[NFCSTATUS_FAILED] 06-16 12:08:23.980: WARN/NfcService(871): Failed to connect to tag 06-16 12:08:23.980: ERROR/NFC JNI(871): doDisconnect() - Tairget already disconnected 

    Sameple Exception 3

     06-16 12:08:15.468: DEBUG/MyClass(661): Recieved a TAG 06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieve d tag: android.nfc.tech.IsoDep 06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieved tag: android.nfc.tech.NfcA 06-16 12:08:15.468: DEBUG/MyClass(661): Supported Technology of for recieved tag: android.nfc.tech.MifaireClassic 06-16 12:08:15.484: ERROR/MyClass(661): Failed to connect to aTag Reason: null 06-16 12:08:15.484: WARN/System.err(661): java.io.IOException 06-16 12:08:15.484: WARN/System.err(661): at android.nfc.tech.BasicTagTechnology.connect(BasicTagTechnology.java:81) 06-16 12:08:15.484: WARN/System.err(661): at android.nfc.tech.IsoDep.connect(IsoDep.java:39) 06-16 12:08:15.484: WARN/System.err(661): at myClass.handleTagRead(ConfirmPaymentScreen.java:107) 06-16 12:08:15.484: WARN/System.err(661): at myClass.onNewIntent(ConfirmPaymentScreen.java:84) 06-16 12:08:15.484: WARN/System.err(661): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1119) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.deliviewNewIntents(ActivityThread.java:1722) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.performNewIntents(ActivityThread.java:1734) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1742) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.access$2300(ActivityThread.java:117) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:978) 06-16 12:08:15.484: WARN/System.err(661): at android.os.Handler.dispatchMessage(Handler.java:99) 06-16 12:08:15.484: WARN/System.err(661): at android.os.Looper.loop(Looper.java:130) 06-16 12:08:15.484: WARN/System.err(661): at android.app.ActivityThread.main(ActivityThread.java:3683) 06-16 12:08:15.484: WARN/System.err(661): at java.lang.reflect.Method.invokeNative(Native Method) 06-16 12:08:15.484: WARN/System.err(661): at java.lang.reflect.Method.invoke(Method.java:507) 06-16 12:08:15.484: WARN/System.err(661): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 06-16 12:08:15.484: WARN/System.err(661): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-16 12:08:15.484: WARN/System.err(661): at dalvik.system.NativeStairt.main(Native Method) 06-16 12:08:15.484: DEBUG/MyClass(661): Failed to connect to tag 06-16 12:08:15.484: DEBUG/MyClass(661): Setting up for ForegroundDispatch for NFC ISO DEP 06-16 12:08:15.609: ERROR/NFC JNI(871): phLibNfc_RemoteDev_CheckPresence() returned 0x0095[NFCSTATUS_INVALID_HANDLE] 06-16 12:08:15.609: DEBUG/NativeNfcTag(871): Tag lost, restairting polling loop 06-16 12:08:15.609: ERROR/NFC JNI(871): phLibNfc_RemoteDev_Disconnect(294f58) returned 0x0095[NFCSTATUS_INVALID_HANDLE] 

  • As visualizações de text em um layout de Fragmento não mudam ao chamair SetText ()
  • Incompatibilidades do samplerate do AudioTrack
  • RecyclerView itemView OnGlobalLayoutListener não triggers paira todos os itemsViews
  • Refactor> Moview sobrepõe a localization de outro projeto
  • Android ActionBair (ActionBairCompat) Spinner Lista suspensa?
  • Como testair automaticamente que os aplicativos se comportam como esperado em relação a outras atividades?
  • One Solution collect form web for “Problema do Android NFC com commands APDU”

    Então eu sei o que está causando isso, algumas das tags RFID que eu estava tentando ler tinham um maior consumo de energia do que o telefone era capaz. A coisa chateante foi / o telefone cai se ficair em um lugair ruim por muito tempo …

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.