Comment découvrir n'importe quelle technologie NFC (pas seulement des balises) en utilisant Android?

StackOverflow https://stackoverflow.com/questions/9399383

  •  29-10-2019
  •  | 
  •  

Question

Je code en java pour mon appareil Android 2.3 Nexus S. Je rencontre un problème en essayant de découvrir un lecteur / graveur NFC que j'ai récemment acheté. Dans mon fichier manifeste, j'utilise

<intent-filter>
     <action android:name="android.nfc.action.TECH_DISCOVERED"/>
     <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
     <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
            android:resource="@xml/nfc_tech_filter" />

Tout ce que j'essaie de faire, c'est de découvrir qu'une sorte de technologie NFC est disponible / disponible. Lorsque j'approche mon téléphone du lecteur / graveur NFC, je peux voir le journal enregistre une sorte d'événement avec les balises "dalvikm" et "AudioHardware". Mais pour une raison quelconque, l'intention ne démarre pas mon activité. Mon application est la seule application avec des fonctions NFC - j'ai vérifié mes paramètres par défaut, etc. pour m'en assurer. Dans mon activité, j'utilise simplement avec une mise en page de base et la méthode onCreate:

@Override
public void onNewIntent(Intent intent) {
    // TODO
Toast.makeText(this, "NFC TECH DISCOVERED!", Toast.LENGTH_LONG).show();
}

Je m'attends au moins à ce que l'activité soit lancée. Des idées pourquoi ce n'est pas? Peut-être parce que j'ai agité cela sur un lecteur NFC et non sur un tag NFC réel que j'ai réussi à trouver. Je ne sais pas pourquoi l'application ne reconnaîtra pas au moins la présence d'un appareil compatible NFC.

Le fichier de ressources contient:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
    <tech>android.nfc.tech.NfcA</tech>        
    <tech>android.nfc.tech.Ndef</tech>
    <tech>android.nfc.tech.MifareUltralight</tech>
    <tech>android.nfc.tech.NfcA</tech>        
    <tech>android.nfc.tech.IsoDep</tech>
    <tech>android.nfc.tech.NdefFormatable</tech>
</tech-list>
 </resources>
Était-ce utile?

La solution

Dans "android.nfc.action.TECH_DISCOVERED", le TECH ne signifie pas les appareils NFC, il fait référence à la technologie sur une balise NFC, c'est-à-dire.MifareClassic, UltraLight etc. Donc, il ne reconnaîtra pas votre lecteur / écrivain car ce n'est pas une balise.

Je pense que vous allez avoir beaucoup de mal à essayer de faire communiquer un lecteur / graveur NFC de bureau avec le Nexus car le Nexus ne peut pas agir comme une balise sans installer une ROM personnalisée dessus, donc ce n'est paspeuvent être lus ou écrits, et la plupart des lecteurs de bureau ne peuvent pas non plus agir comme des balises, il n'y a donc ni lecture ni écriture.Vous pourriez peut-être faire de la communication p2p, mais je pense toujours que cela nécessitera beaucoup de travail.

Quel lecteur / graveur NFC possédez-vous?

Autres conseils

Il y a aussi une erreur dans votre fichier nfc_tech_filter.Au moins une de vos listes de technologies doit être un sous-ensemble de technologies prises en charge par des balises, avec lesquelles vous souhaitez communiquer.Vous devriez utiliser plus de listes de technologies avec moins de technologies.Le principe AND et OR est implémenté de cette façon.

Cependant, dans votre cas avec un lecteur de carte, la réponse de Peanut est le problème principal.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top