Bonjour,
Après une semaine de test, je n'arrive toujours pas à réaliser un programme simple de lecture de tag NFC en python sur Android / Samsung S4.
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, mais à détecter moi-même un tag).
Voila un résumé du code: Ce n'est pas un problème de d’exécution que je cherche, mais un problème de conception / compréhension du pilotage du NFC) :
Avez vous des suggestions ?
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 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
Cordialement.
Partager