c8059613
JLo'w
Re-fonte de l'app...
|
1
2
3
|
package com.example.app_10p5;
import android.app.Activity;
|
6feece85
JLo'w
ajout NFC
|
4
5
|
import android.app.PendingIntent;
import android.content.Intent;
|
6feece85
JLo'w
ajout NFC
|
6
7
8
|
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
|
c8059613
JLo'w
Re-fonte de l'app...
|
9
|
import android.os.Bundle;
|
6feece85
JLo'w
ajout NFC
|
10
11
|
import android.widget.Toast;
|
520cecde
JLo'w
Un petit plus, un...
|
12
13
|
import org.json.JSONObject;
|
520cecde
JLo'w
Un petit plus, un...
|
14
15
|
import java.net.URL;
import java.util.HashMap;
|
c8059613
JLo'w
Re-fonte de l'app...
|
16
17
18
19
|
/**
* Created by beaus on 24/04/2016.
*/
|
520cecde
JLo'w
Un petit plus, un...
|
20
|
public class CarteActivite extends Activity implements ASyncResponse {
|
6feece85
JLo'w
ajout NFC
|
21
22
|
private NfcAdapter mNfcAdapter;
|
520cecde
JLo'w
Un petit plus, un...
|
23
24
25
26
|
private HashMap<String, String> mParam;
private String mAPI;
public static final String HOST = "https://10p5.clubinfo.frogeye.fr/";
|
6feece85
JLo'w
ajout NFC
|
27
|
|
c8059613
JLo'w
Re-fonte de l'app...
|
28
29
30
31
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_carte);
|
6feece85
JLo'w
ajout NFC
|
32
|
|
d57b6aad
JLo'w
Oups paramètres n...
|
33
|
mParam = new HashMap<String, String>();
|
520cecde
JLo'w
Un petit plus, un...
|
34
|
|
d57b6aad
JLo'w
Oups paramètres n...
|
35
|
switch (getIntent().getIntExtra("state", MainActivite.STATE_RIEN)) {
|
520cecde
JLo'w
Un petit plus, un...
|
36
|
case MainActivite.STATE_COMMANDE:
|
f775eb7e
JLo'w
Toast cancers + p...
|
37
38
|
//TODO: XOR du cancer
//mParam.put("quantite", String.valueOf(getIntent().getIntExtra("quantite", -1)));
|
520cecde
JLo'w
Un petit plus, un...
|
39
|
mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
|
f775eb7e
JLo'w
Toast cancers + p...
|
40
|
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
41
42
43
|
mAPI = "api/client/payer";
break;
case MainActivite.STATE_CREATION_COMPTE:
|
f775eb7e
JLo'w
Toast cancers + p...
|
44
45
|
mParam.put("solde", String.valueOf(getIntent().getFloatExtra("montant", -1)));
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
46
47
48
|
mAPI = "api/client/ajouter";
break;
case MainActivite.STATE_RECHARGEMENT:
|
f775eb7e
JLo'w
Toast cancers + p...
|
49
50
|
mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
51
52
53
|
mAPI = "api/client/recharger";
break;
case MainActivite.STATE_VIDANGE:
|
f775eb7e
JLo'w
Toast cancers + p...
|
54
|
//pas de paramètre
|
520cecde
JLo'w
Un petit plus, un...
|
55
56
|
mAPI = "api/client/vidange";
break;
|
f775eb7e
JLo'w
Toast cancers + p...
|
57
|
case MainActivite.STATE_CONNEXION: //Impossible c'est pas géré ici
|
520cecde
JLo'w
Un petit plus, un...
|
58
59
60
61
62
63
64
|
case MainActivite.STATE_RIEN:
default:
Toast.makeText(this, "WTF, le cancer est dans l'application!!", Toast.LENGTH_LONG).show();
finish();
return;
}
|
6feece85
JLo'w
ajout NFC
|
65
66
|
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
|
93f90e35
JLo'w
NFC et foreground
|
67
68
69
70
71
|
if (mNfcAdapter == null) {
// Stop here, we definitely need NFC
Toast.makeText(this, "This device doesn't support NFC.", Toast.LENGTH_LONG).show();
finish();
return;
|
6feece85
JLo'w
ajout NFC
|
72
|
}
|
6feece85
JLo'w
ajout NFC
|
73
|
|
93f90e35
JLo'w
NFC et foreground
|
74
|
handleIntent(getIntent());
|
6feece85
JLo'w
ajout NFC
|
75
76
|
}
|
93f90e35
JLo'w
NFC et foreground
|
77
78
|
@Override
protected void onResume() {
|
6feece85
JLo'w
ajout NFC
|
79
|
super.onResume();
|
93f90e35
JLo'w
NFC et foreground
|
80
|
setupForegroundDispatch(this, mNfcAdapter);
|
6feece85
JLo'w
ajout NFC
|
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
}
// Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63").
private String ByteArrayToHexString(byte [] inarray) {
int i, j, in;
String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
String out= "";
for(j = 0 ; j < inarray.length ; ++j)
{
in = (int) inarray[j] & 0xff;
i = (in >> 4) & 0x0f;
out += hex[i];
i = in & 0x0f;
out += hex[i];
}
return out;
}
@Override
|
93f90e35
JLo'w
NFC et foreground
|
100
101
102
103
|
protected void onNewIntent(Intent intent) {
handleIntent(intent);
}
|
93f90e35
JLo'w
NFC et foreground
|
104
105
106
107
108
109
110
111
|
@Override
protected void onPause() {
stopForegroundDispatch(this, mNfcAdapter);
super.onPause();
}
private void handleIntent(Intent intent){
if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
|
6feece85
JLo'w
ajout NFC
|
112
|
String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
|
f775eb7e
JLo'w
Toast cancers + p...
|
113
|
mParam.put("idCarte", id_carte);
|
6feece85
JLo'w
ajout NFC
|
114
115
116
117
118
119
120
121
122
123
|
//Lecture des données
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareClassic mfc = MifareClassic.get(tag);
byte[] data;
String prenom = null, nom = null, login = null;
if (mfc != null) {
try {
mfc.connect();
|
6feece85
JLo'w
ajout NFC
|
124
125
126
127
|
//Clé A
byte[] cleA = new byte[]{(byte) 0xa0, (byte) 0xa1, (byte) 0xa2,
(byte) 0xa3, (byte) 0xa4, (byte) 0xa5};
|
93f90e35
JLo'w
NFC et foreground
|
128
|
|
6feece85
JLo'w
ajout NFC
|
129
130
|
//On veut juste lire le secteur 12
boolean estConnecte = mfc.authenticateSectorWithKeyA(12, cleA);
|
93f90e35
JLo'w
NFC et foreground
|
131
|
|
6feece85
JLo'w
ajout NFC
|
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
if (estConnecte) {
//Il y a 4 blocs dans le secteur 12 -> INE, numéro étudiant, prénom, nom
//On ne veut que prénom et nom, donc on passe les deux premiers
for (int i = 2, bIndex = mfc.sectorToBlock(12) + i; i < 4; i++, bIndex++) {
//sectorToBlock : Renvoie l'indice (global, parmis tous les blocs de
// tous les secteurs) du premier bloc du secteur 12
//Lit les données du bloc
data = mfc.readBlock(bIndex);
//Convertit les bytes en String
String dataStr = new String(data);
if (i == 2) //Prénom
prenom = dataStr;
else if (i == 3) //Nom
nom = dataStr;
|
6feece85
JLo'w
ajout NFC
|
147
148
|
}
} else {
|
f775eb7e
JLo'w
Toast cancers + p...
|
149
|
Toast.makeText(this, "Impossible de lire le secteur 12", Toast.LENGTH_LONG).show();
|
6feece85
JLo'w
ajout NFC
|
150
151
|
}
mfc.close();
|
f775eb7e
JLo'w
Toast cancers + p...
|
152
|
} catch (Throwable t) {
|
bb05919b
JLo'w
import inutile et...
|
153
|
Toast.makeText(this, "WTF, le cancer est dans l'application!! Autodéstruction dans 5 secondes !!!!!!!!!" + t.toString(), Toast.LENGTH_LONG).show();
|
6feece85
JLo'w
ajout NFC
|
154
155
156
157
158
159
|
}
//Concaténation des données récupérées en login
login = prenom;
login.concat(".");
login.concat(nom);
|
6feece85
JLo'w
ajout NFC
|
160
|
} else {
|
f775eb7e
JLo'w
Toast cancers + p...
|
161
|
Toast.makeText(this, "Pas de Mifare Classic", Toast.LENGTH_SHORT).show();
|
6feece85
JLo'w
ajout NFC
|
162
163
|
}
|
6feece85
JLo'w
ajout NFC
|
164
|
//Éxécution de la fonction
|
520cecde
JLo'w
Un petit plus, un...
|
165
166
|
clientAPI();
}
|
6feece85
JLo'w
ajout NFC
|
167
|
}
|
c8059613
JLo'w
Re-fonte de l'app...
|
168
|
|
93f90e35
JLo'w
NFC et foreground
|
169
170
171
172
173
|
public static void setupForegroundDispatch(final Activity activity, NfcAdapter adapter){
final Intent intent = new Intent(activity.getApplicationContext(), activity.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
final PendingIntent pendingIntent = PendingIntent.getActivity(activity.getApplicationContext(), 0, intent, 0);
adapter.enableForegroundDispatch(activity, pendingIntent, null, null);
|
6feece85
JLo'w
ajout NFC
|
174
175
|
}
|
93f90e35
JLo'w
NFC et foreground
|
176
177
|
public static void stopForegroundDispatch(final Activity activity, NfcAdapter adapter) {
adapter.disableForegroundDispatch(activity);
|
6feece85
JLo'w
ajout NFC
|
178
|
}
|
520cecde
JLo'w
Un petit plus, un...
|
179
180
181
182
183
|
public void clientAPI() {
try {
URL url = new URL(HOST + mAPI);
NetworkThread nt = new NetworkThread(url, mParam);
|
6230c012
JLo'w
Correction sur le...
|
184
|
nt.delegate = this;
|
520cecde
JLo'w
Un petit plus, un...
|
185
186
187
|
nt.execute();
}
catch (Throwable t){
|
8ff199b1
JLo'w
Ajout info except...
|
188
|
Toast.makeText(this, "WTF, le cancer est dans l'application!! " + t.toString(), Toast.LENGTH_LONG).show();
|
520cecde
JLo'w
Un petit plus, un...
|
189
190
191
192
193
194
195
196
197
|
finish();
return;
}
}
/* Retour du NetworkThread */
@Override
public void processFinish(JSONObject output) {
|
f775eb7e
JLo'w
Toast cancers + p...
|
198
199
200
201
202
203
204
205
206
207
208
209
|
try {
if (output.get("status").equals("ok")) {
Toast.makeText(this, "Tout c'est bien passé: " + output.get("status").toString(), Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "Erreur lors du traitement de la requête: " + output.get("status").toString(), Toast.LENGTH_LONG).show();
}
} catch (Throwable t) {
Toast.makeText(this, "WTF, le cancer est dans l'application!! " + t.toString(), Toast.LENGTH_LONG).show();
}
finish();
return;
|
520cecde
JLo'w
Un petit plus, un...
|
210
|
}
|
c8059613
JLo'w
Re-fonte de l'app...
|
211
|
}
|