web-dev-qa-db-fra.com

Comment émuler une balise nfc sur un Android

J'ai un Android (nexus s, sdk v15) qui doit envoyer une chaîne à une carte de développement fonctionnant en nfc-reader/writer-mode en utilisant l'émulation de balises. Je sais que ce n'est pas officiellement pris en charge par Android, je pouvais donc le faire en natif en accédant directement au pilote (?).

Y a-t-il un exemple où quelqu'un l'a déjà fait ou une application qui le fait (et de préférence est open source?)

J'ai trouvé des choses sur google où il est généralement conseillé de ne pas le faire, ou où les gens parlent de la façon dont cela serait possible ou comment ils l'ont fait (très généralement), mais je n'ai trouvé aucun code ou conseil précis.

Je ne veux pas accéder à l'élément sécurisé ou faire des trucs de carte à puce qui doivent être approuvés par le vendeur/fournisseur. Je veux juste transférer la chaîne. Je sais également que cela pourrait être fait par les méthodes Android api via p2p, mais cela ne fonctionne pas bien avec la carte, donc j'essaie cette approche.

13
sinned

Pour un appareil fonctionnant en stock KitKat 4.4

Avec Android KitKat 4.4 la possibilité de faire agir le téléphone comme une NFC carte est intégrée au système d'exploitation vous n'avez donc plus à vous fier à CyanogenMod ou à une ROM personnalisée. Cela ne laissera pas le téléphone agir comme une balise Mifare Classic en soi, mais j'ai obtenu d'excellents résultats en faisant communiquer mon téléphone avec un lecteur ACR122 donc je recommanderais certainement cette option si vous le pouvez obtenez 4.4 sur votre appareil.

Si vous souhaitez exécuter en dessous de 4.4 et êtes prêt à utiliser Cyanogenmod

Il est possible de charger des applications sur votre appareil et de les faire communiquer avec un lecteur via NFC assez facilement mais vous devez exécuter Cyanogenmod , cette fonctionnalité est présent à partir de CM 9.1 .

Vouloir fonctionner sur Gingerbread (l'ancienne réponse)

Oui, c'est possible et il y a eu un correctif pour 2.3.4 pour l'activer, je posterai quelques liens pour que vous puissiez en lire.

Ils nécessitent de flasher un 2.3.4 Gingerbread ROM sur votre appareil ainsi que d'autres correctifs pour activer les fonctionnalités d'émulation de la carte, donc si vous n'êtes pas prêt à le faire, ils ne seront pas très utiles, mais autant que je sache, c'est le seul moyen de le faire fonctionner. Je ne l'ai pas testé moi-même, mais les commentaires des utilisateurs suggèrent que cela fonctionne.

Voici un lien vers un blog décrivant l'ensemble du processus: http://techshek4u.blogspot.co.uk/2012/01/applying-card-emulation-patch-to_03.html

Voici un lien vers le post original du forum avec le patch pour 2.3.4 pour l'activer:
http://forum.xda-developers.com/showthread.php?t=1281946

Et un lien vers la discussion originale où divers développeurs tentent de le faire fonctionner, selon vos connaissances techniques de Android et NFC cela pourrait être plus ou moins intéressant: https://groups.google.com/forum/#!msg/Android-developers/1fw1qfFqpGc/6dlzvTqExN4J

Attention: Selon NFCGuy de sa réponse "Ne vous embêtez pas à rétrograder votre téléphone en Go s'il exécute ICS. Vous ne pouvez pas rétrograder le firmware NFC pour qu'il soit à nouveau compatible avec GB, donc NFC ne fonctionnera tout simplement pas si vous flashez votre appareil avec Go. "

14
Peanut

L'émulation de la carte hôte est désormais officiellement prise en charge par Android, selon http://developer.Android.com/guide/topics/connectivity/nfc/hce.html

2
uploader33

Si vous rootez votre appareil, il est possible de créer une application qui active le mode d'émulation de carte. Ce n'est pas trop difficile, voir par ex. https://stackoverflow.com/a/10506299/1202968 .

Cependant, l'émulation de carte est entièrement gérée par l'élément sécurisé. Votre application n'a pas accès aux données en cours de transfert. La seule façon de contrôler cela serait de créer et d'installer une applet de carte Java sur l'élément sécurisé. Cependant, pour y parvenir, vous devez avoir accès à des clés d'authentification secrètes qui ne sont que connu de Google.

PS: ne vous embêtez pas à rétrograder votre téléphone en Go s'il exécute ICS. Vous ne pouvez pas rétrograder le firmware NFC pour être à nouveau compatible avec GB, donc NFC ne fonctionnera tout simplement pas si vous flashez votre appareil avec GB.

2
NFC guy