Comment envoyer un tag NFC sous Android

DarkRecolteur

Habitué
Salut les amis,

Voici mon astuce pour envoyer un taf NFC sous Android de manière très simple et rapide:
Lire un Tag est devenu une tâche quotidienne et simple, voici maintenant comment en envoyer un via l'API 10 du SDK, car la version 9 ne supporte pas le Ndef Push.
Vérifiez au préalable que vos prériphériques sont bien compatibles avec l'algorithme de Google.
Si vous avez un Android alors pas de problème.
- Obtenez l’autorisation d’utilisez le capteur NFC, pour cela ajoutez à votre Manifest cette ligne de code

CODE:
<uses-permission android:name="android.permission.NFC" />
- Récupérer l'objet Java le représentant.
CODE:
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this)
- Placé le code dans votre Activité.
La partie "données" d'un TAG est un NdefMessage, constitué d'un ou plusieurs NdefRecord.
Les données transitent sous forme de Bytes, pour les lire :
- il faut encoder votre texte,
- il faut aussi encoder le Charset pour que l'application en lecture puisse savoir comment décoder les données.
CODE:
NdefRecord creerRecord(String message)
{
byte[] langBytes = Locale.ENGLISH.getLanguage().getBytes(Charset.forName("US-ASCII"));
byte[] textBytes = message.getBytes(Charset.forName("UTF-8"));
char status = (char) (langBytes.length);
byte[] data = new byte[1 + langBytes.length + textBytes.length];
data[0] = (byte) status;
System.arraycopy(langBytes, 0, data, 1, langBytes.length);
System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length);
return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data);
}

Le texte est simple donc utilisé comme TNF la constante :
TNF_WELL_KNOW
Ce qui veut dire que vous connaissez les données à lire.
Ensuite utilisez RTD_TEXT pour le type.

- Utilisez ce NdefRecord pour créer notre NdefMessage :
CODE:
NdefMessage creerMessage(NdefRecord record)
{
NdefRecord[] records = new NdefRecord[1];
records[0] = record;
NdefMessage message = new NdefMessage(records);
return message;
}

Pour envoyer vos messages utilisez la méthode enableForegroundNdefPush(Context, NdefMessage) de la classe NfcAdapter.
Rappel : Il est obligatoire d'appeler cette méthode dans le OnResume() de votre Activity.
Arrêtez ensuite l’envoi du message lorsque votre Activity n'est plus au premier plan.
CODE:
protected void onPause()
{
super.onPause();
nfcAdapter.disableForegroundNdefPush(this);
}

protected void onResume()
{
super.onResume();
NdefRecord record = creerRecord("Exemple de message à envoyer");
NdefMessage message = creerMessage(record);
nfcAdapter.enableForegroundNdefPush(this, message);
}

Voilà c’est fini ! Vous pouvez faire dialoguer 2 smartphones équipés d'un capteur NFC simplement en les approchant l’un de l’autre.

Bonne journée :)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 131
Messages
6 717 958
Membres
1 586 383
Dernier membre
potofeu
Partager cette page
Haut