J'écris une application pour lire les infos binaires de tags NFC. Voici le code de la fonction de gestionnaire intention NFC:Android NfcV obtenir la commande d'information retourne un seul octet
protected void onNewIntent(@NonNull Intent intent)
{
try
{
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV nfcV = NfcV.get(tag);
byte[] cmdInfo = new byte[]{(byte) 0x02, (byte) 0x2b}; // 'Get info' command
byte[] answer = nfcV.transceive(cmdInfo); // Read info from tag.
...
}
catch(IOException e)
{
...
}
}
Si je lance cette fonction la lecture d'un tag NFC sur tout Samsung S3 Neo fonctionne très bien, la variable de réponse est remplie avec les données attendues:
00 04 4B A0 14 01 00 A0 07 E0 F3 07
Howewer si je lance la même fonction lisant le même tag NFC sur un Huawei P8lite la variable de réponse est remplie d'un seul octet:
03
en cas d'erreur, l'ISO 1569 La norme 3-3 dit que je devrais recevoir quelque chose comme
01 03
I.e. au moins deux octets, où le deuxième octet est le code d'erreur. Donc, la réponse que je reçois est théoriquement impossible.
Qu'est-ce que je fais mal? Cela dépend-il du matériel mobile? Et comment puis-je le réparer?
L'utilisation de la version adressée de la commande a résolu le problème. Merci beaucoup! – Carlo
@CarloCe Avez-vous également essayé différents paramètres pour le Data_rate_flag? Il pourrait être intéressant pour les autres lecteurs SO de savoir si les deux options sont supportées sur la P8lite ... –
Si j'utilise la commande adressée, elle accepte à la fois l'ensemble data_rate et l'ensemble – Carlo