Mais comment lances-tu ton application ? En cliquant sur l'icone ou un scannant un Tag ?
Mais comment lances-tu ton application ? En cliquant sur l'icone ou un scannant un Tag ?
Bon, j'ai un nouveau problème que je n'ai pas vu venir :
j'ai systématiquement un message me disant que "this device does not have NFC support", alors que l'application NFC Demo fonctionne très bien sur ce même émulateur...
PS: Je la lance grâce à Eclipse (pas en présentant un tag car, pour le moment, je n'ai pas de matériel. Je dois tout faire avec l'emulateur)
EDIT : Etes vous arrivé à faire fonctionner un processus complet de lecture, juste avec l'émulateur? (présentation de tag, lecture de son contenu)
Bon!
Après plusieurs heures à m'arracher les cheveux, j'ai décidé d'utiliser la technique Sherlock Holmes : quand tout ce qui semble plausible a été écarté, il faut se rabattre vers l'impensable.
J'ai commencé à "jouer" avec NFC Demo et la surprise est venue de ma tentative de déclarer un NfcAdapter
Et bien, même avec NFC Demo le constat reste inchangé : "this device doesn't have NFC support"
C'est normal, l'émulateur ne dispose pas d'un capteur NFC ...
Et NFC Démo fonctionne tout de même car il ne se sert pas du capteur NFC, mais simule l'arrivée d'un TAG "à la main".
Bon,
Et bien merci pour votre aide, je vais me procurer un téléphone NFC dans les prochains jours, ainsi que des tags : on verra
En attendant, je fais des tests avec Rhomobile.
Je vous le conseil, c'est plutot sympa.
Bonjour Viish,
Merci beaucoup pour ce tutoriel simple, clair et concis.
Les informations concernant le protocole NDEF sont bien résumées.
Habitué au dev mobile NFC ( Nokia 6212, 6131 )
Débutant sous dev Android, je me suis procuré un NEXUS S et j'assaye de faire un peu mumuse avec.
Effectivement le sample NFCDemo emule des Tags, du coup pas tres utile pour quelqu'un qui veut vraiment utiliser le chip NXP,
Cependant pas mal d'applications commencent à voir le jour sur le Market.
J'en ai testé quelqu’une et c'a marche plutot bien ( Mifare ISO_A principalement ).
Du coup je me suis amusé à envoyer des commandes aux ISO_B et j'arrive bien à recuperer quelques informations ( via des APDU ).
Par contre les ISO_B' ne sont pas detectés ( c'est tres tres dommage )
donc (certains) PassNAVIGO à oublier.
En tout cas merci encore pour ce bon petit tutoriel
Cordialement,
Moulefrite
Bonjour moulefrite,
En fait, j'en suis rendu au même point, ou pas loin, que toi, mais à un détail près : je travail avec un Nokia C7, je suis donc passé sur Qt, mais je n'arrive pas à détecter les cartes ISO B (Le B' ne sera jamais traité car beaucoup trop marginal dans son utilisation et surtout voué à la disparition dans les deux trois prochaines années. La RATP est en train de travailler à la migration)
Enfin bref, es-tu arrivé à faire une simple détection ou as tu été obligé d'envoyer des apdu "dans le vent" pour pouvoir avoir une réaction de la carte?
Merci d'avance de ton aide ou de l'aide de qui que ce soit qui pourrait avoir des informations intéressantes.
Bonjour,
Je recherche un source complete de projet eclipse pour la lecture NFC.
zegade
Bonjour fantomchris,
Désolé pour la réponse tardive.
Pour la detection sur un phone Android, tu configure ton application pour prendre la main sur le chip NFC ( via les intent) du coup, cela te permettra d'utiliser une fonction dedié ( un genre de callBack ) et a partir de la, celle-ci sera appelé dès que ton smartPhone aura detecté une carte.
ensuite tu enchaine tes APDUs pour faire mumuse avec.
Bonjour,
j'ai suivi le tuto a la lettre...
Tout fonctionne bien sauf que... l'appli tags fournie sur mon nexus s'ouvre directement sans que j'ai le choix de l'appli que je souhaite utiliser pour la lecture du tag.
On dirait une ouverture par defaut...
J'ai meme compilé l'appli demo nfc et ça fait pareil...
Pourtant j'ai bien placé dans le manifest les lignes d'intent-filter pour le tag_discovered et le ndef_discovered.
Une idée? Merci par avance...
Bonjour,
j'essaye de développer une petite application à l'aide de ton tuto et de la doc de google en //.
j'ai suivi tes indications mais lors d'une lecture d'un tag mon application cesse de fonctionner.
je veux que celle-ci lise un tag meme lorsqu'elle est fermée (d'ou le code dans onResume) et afficher le texte ainsi que l'ID du tag.
et mon manifest
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public class MainActivity extends Activity { private Intent intent; private NdefMessage[] msgs; private EditText mEditText; private EditText mID; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mEditText = (EditText) findViewById(R.id.editText_msgs); mEditText.setText("coucou"); mID = (EditText)findViewById(R.id.editText_id); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())){ Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMsgs != null){ msgs = new NdefMessage[rawMsgs.length]; for (int i = 0; i<rawMsgs.length; i++){ msgs[i]= (NdefMessage) rawMsgs[i]; NdefRecord record = msgs[i].getRecords()[i]; byte[] id = record.getId(); //mEditText.setText(id, id[0], id.length); short tnf = record.getTnf(); byte[] type = record.getType(); String message = getTextData(record.getPayload()); //mEditText.setText(message); } } } //process the msgs array } String getTextData(byte[] payload) { String texteCode = ((payload[0] & 0200) == 0) ? "UTF-8" : "UTF-16"; int langageCodeTaille = payload[0] & 0077; try { return new String(payload, langageCodeTaille + 1, payload.length - langageCodeTaille - 1, texteCode); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return ""; }
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" /> <uses-permission android:name="android.permission.NFC" /> <uses-feature android:name="android.hardware.nfc" android:required="true" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.dinec.nfc.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter > <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> </intent-filter> <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:scheme="http" android:host="developer.android.com" android:pathPrefix="/index.html" /> </intent-filter> </activity> </application>
la partie pour afficher le texte et l'id dans les EditText respectifs n'est pas encore faite...
Merci d'avance
Bonjour,
Je sais que ce tutoriel est paru il y a longtemps, mais il n'est jamais trop tard pour découvrir les nouveautés.
J'essaie donc d'implémenter une application pilotant l'interface NFC en python sur Android / Samsung S4. Mon premier essai est la lecture d'un tag NFC.
Je m'inspire du code suivant : http://python-for-android.readthedoc...droid.activity.
J'utilise le lanceur de programme KIVY, j'utilise PYJNIUS pour l'accès aux objets android, j'arrive à accéder au lecteur NFC (je vérifie qu'il est 'enabled' ou non), mais je n'arrive pas à recevoir de notification 'onNewIntent' lorsque je 'tap' un tag.
Je ne cherche pas à lancer une application sur détection d'un tag, mais je veux positionner une "callback" dans mon application "in front" qui sera appelée lorsqu'un tag sera lu par l'interface NFC.
Voila un résumé du code: Ce n'est pas un problème de codage que je cherche à résoudre, mais un problème de conception / compréhension du pilotage du NFC :
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 import time g_app = None global PythonActivity PythonActivity = None global Intent Intent = None global NfcAdapter NfcAdapter = None global NdefMessage NdefMessage = None import android.activity from jnius import autoclass from jnius import cast PythonActivity = autoclass('org.renpy.android.PythonActivity') Intent = autoclass('android.content.Intent') NfcAdapter = autoclass("android.nfc.NfcAdapter") NdefMessage = autoclass("android.nfc.NdefMessage") # ========== def log(msg) : # logging.etc... #EndDef # ========== def on_new_intent_received(intent): log("on_new_intent_received > enters..." + intent.getAction()) #EndDef currentActivity = cast('android.app.Activity', PythonActivity.mActivity) nfcAdapter = NfcAdapter.getDefaultAdapter() if nfcAdapter.isEnabled() == True : log("nfcAdapter.isEnabled() == True") android.activity.bind( on_new_intent = on_new_intent_received) intent = Intent() intent.setAction( NfcAdapter.ACTION_TAG_DISCOVERED) intent.setFlags( Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP) currentActivity.startActivity( intent) while True : time.sleep(1.0) #EndWhile else: log("nfcAdapter.isEnabled() == False") #EndIf
Bonsoir tout le monde;
Je voudrais savoir si il était possible de programmer l'ouverture d'un onglet dans une application uniquement par le signal nfc, ou autre signal du genre. C'est à dire que je puisse ouvrir certaines onglets de mon application juste en touch, mais que d'autres uniquement en présence du signal nfc, ou rfid.
Ca me fait penser un peu au système que utilise la RATP avec le pass navigo, mais donc mon cas, juste un un signal pour pouvoir ouvrir un onglet spécifique dans mon application.
J'espere que j'ai ete assez claire .
Merci de votre compréhension et bonne soirée à tous .
Partager