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;
|
2681581a
JLo'w
menu pour changer...
|
6
|
import android.graphics.drawable.ColorDrawable;
|
6feece85
JLo'w
ajout NFC
|
7
8
9
|
import android.nfc.NfcAdapter;
import android.nfc.Tag;
import android.nfc.tech.MifareClassic;
|
c8059613
JLo'w
Re-fonte de l'app...
|
10
|
import android.os.Bundle;
|
6feece85
JLo'w
ajout NFC
|
11
12
|
import android.widget.Toast;
|
520cecde
JLo'w
Un petit plus, un...
|
13
14
|
import org.json.JSONObject;
|
520cecde
JLo'w
Un petit plus, un...
|
15
16
|
import java.net.URL;
import java.util.HashMap;
|
c8059613
JLo'w
Re-fonte de l'app...
|
17
18
19
20
|
/**
* Created by beaus on 24/04/2016.
*/
|
520cecde
JLo'w
Un petit plus, un...
|
21
|
public class CarteActivite extends Activity implements ASyncResponse {
|
6feece85
JLo'w
ajout NFC
|
22
23
|
private NfcAdapter mNfcAdapter;
|
520cecde
JLo'w
Un petit plus, un...
|
24
25
26
|
private HashMap<String, String> mParam;
private String mAPI;
|
2681581a
JLo'w
menu pour changer...
|
27
|
public static String HOST = "https://10p5.clubinfo.frogeye.fr/";
|
6feece85
JLo'w
ajout NFC
|
28
|
|
c8059613
JLo'w
Re-fonte de l'app...
|
29
30
31
32
|
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_carte);
|
2681581a
JLo'w
menu pour changer...
|
33
|
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.colorPrimary)));
|
6feece85
JLo'w
ajout NFC
|
34
|
|
d57b6aad
JLo'w
Oups paramètres n...
|
35
|
mParam = new HashMap<String, String>();
|
520cecde
JLo'w
Un petit plus, un...
|
36
|
|
d57b6aad
JLo'w
Oups paramètres n...
|
37
|
switch (getIntent().getIntExtra("state", MainActivite.STATE_RIEN)) {
|
520cecde
JLo'w
Un petit plus, un...
|
38
|
case MainActivite.STATE_COMMANDE:
|
f775eb7e
JLo'w
Toast cancers + p...
|
39
40
|
//TODO: XOR du cancer
//mParam.put("quantite", String.valueOf(getIntent().getIntExtra("quantite", -1)));
|
520cecde
JLo'w
Un petit plus, un...
|
41
|
mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
|
f775eb7e
JLo'w
Toast cancers + p...
|
42
|
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
43
44
45
|
mAPI = "api/client/payer";
break;
case MainActivite.STATE_CREATION_COMPTE:
|
f775eb7e
JLo'w
Toast cancers + p...
|
46
47
|
mParam.put("solde", String.valueOf(getIntent().getFloatExtra("montant", -1)));
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
48
49
50
|
mAPI = "api/client/ajouter";
break;
case MainActivite.STATE_RECHARGEMENT:
|
3c5d3089
JLo'w
Work in progress ...
|
51
|
System.out.println("bite");
|
f775eb7e
JLo'w
Toast cancers + p...
|
52
53
|
mParam.put("montant", String.valueOf(getIntent().getFloatExtra("montant", -1)));
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
54
55
56
|
mAPI = "api/client/recharger";
break;
case MainActivite.STATE_VIDANGE:
|
8d573e63
JLo'w
Mise en place de ...
|
57
|
mParam.put("jeton", getIntent().getStringExtra("token"));
|
520cecde
JLo'w
Un petit plus, un...
|
58
59
|
mAPI = "api/client/vidange";
break;
|
f775eb7e
JLo'w
Toast cancers + p...
|
60
|
case MainActivite.STATE_CONNEXION: //Impossible c'est pas géré ici
|
520cecde
JLo'w
Un petit plus, un...
|
61
62
63
64
65
66
67
|
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
|
68
69
|
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
|
93f90e35
JLo'w
NFC et foreground
|
70
71
72
73
74
|
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
|
75
|
}
|
6feece85
JLo'w
ajout NFC
|
76
|
|
93f90e35
JLo'w
NFC et foreground
|
77
|
handleIntent(getIntent());
|
6feece85
JLo'w
ajout NFC
|
78
79
|
}
|
93f90e35
JLo'w
NFC et foreground
|
80
81
|
@Override
protected void onResume() {
|
6feece85
JLo'w
ajout NFC
|
82
|
super.onResume();
|
93f90e35
JLo'w
NFC et foreground
|
83
|
setupForegroundDispatch(this, mNfcAdapter);
|
6feece85
JLo'w
ajout NFC
|
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
}
// 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
|
103
104
105
106
|
protected void onNewIntent(Intent intent) {
handleIntent(intent);
}
|
93f90e35
JLo'w
NFC et foreground
|
107
108
109
110
111
112
113
114
|
@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
|
115
|
String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID));
|
f775eb7e
JLo'w
Toast cancers + p...
|
116
|
mParam.put("idCarte", id_carte);
|
6feece85
JLo'w
ajout NFC
|
117
118
119
120
121
122
123
124
125
126
|
//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
|
127
128
129
130
|
//Clé A
byte[] cleA = new byte[]{(byte) 0xa0, (byte) 0xa1, (byte) 0xa2,
(byte) 0xa3, (byte) 0xa4, (byte) 0xa5};
|
93f90e35
JLo'w
NFC et foreground
|
131
|
|
6feece85
JLo'w
ajout NFC
|
132
133
|
//On veut juste lire le secteur 12
boolean estConnecte = mfc.authenticateSectorWithKeyA(12, cleA);
|
93f90e35
JLo'w
NFC et foreground
|
134
|
|
6feece85
JLo'w
ajout NFC
|
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
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
|
150
151
|
}
} else {
|
f775eb7e
JLo'w
Toast cancers + p...
|
152
|
Toast.makeText(this, "Impossible de lire le secteur 12", Toast.LENGTH_LONG).show();
|
6feece85
JLo'w
ajout NFC
|
153
154
|
}
mfc.close();
|
f775eb7e
JLo'w
Toast cancers + p...
|
155
|
} catch (Throwable t) {
|
bb05919b
JLo'w
import inutile et...
|
156
|
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
|
157
158
159
160
161
162
|
}
//Concaténation des données récupérées en login
login = prenom;
login.concat(".");
login.concat(nom);
|
6feece85
JLo'w
ajout NFC
|
163
|
} else {
|
f775eb7e
JLo'w
Toast cancers + p...
|
164
|
Toast.makeText(this, "Pas de Mifare Classic", Toast.LENGTH_SHORT).show();
|
6feece85
JLo'w
ajout NFC
|
165
166
|
}
|
6feece85
JLo'w
ajout NFC
|
167
|
//Éxécution de la fonction
|
520cecde
JLo'w
Un petit plus, un...
|
168
169
|
clientAPI();
}
|
6feece85
JLo'w
ajout NFC
|
170
|
}
|
c8059613
JLo'w
Re-fonte de l'app...
|
171
|
|
93f90e35
JLo'w
NFC et foreground
|
172
173
174
175
176
|
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
|
177
178
|
}
|
93f90e35
JLo'w
NFC et foreground
|
179
180
|
public static void stopForegroundDispatch(final Activity activity, NfcAdapter adapter) {
adapter.disableForegroundDispatch(activity);
|
6feece85
JLo'w
ajout NFC
|
181
|
}
|
520cecde
JLo'w
Un petit plus, un...
|
182
183
184
|
public void clientAPI() {
try {
|
520cecde
JLo'w
Un petit plus, un...
|
185
186
|
URL url = new URL(HOST + mAPI);
NetworkThread nt = new NetworkThread(url, mParam);
|
6230c012
JLo'w
Correction sur le...
|
187
|
nt.delegate = this;
|
520cecde
JLo'w
Un petit plus, un...
|
188
189
190
|
nt.execute();
}
catch (Throwable t){
|
8ff199b1
JLo'w
Ajout info except...
|
191
|
Toast.makeText(this, "WTF, le cancer est dans l'application!! " + t.toString(), Toast.LENGTH_LONG).show();
|
520cecde
JLo'w
Un petit plus, un...
|
192
193
194
195
196
197
198
199
200
|
finish();
return;
}
}
/* Retour du NetworkThread */
@Override
public void processFinish(JSONObject output) {
|
4ef24041
JLo'w
Retour du JSONObj...
|
201
202
203
|
Intent intent = new Intent(this, CarteActivite.class);
intent.putExtra("json", output.toString());
setResult(0, intent);
|
f775eb7e
JLo'w
Toast cancers + p...
|
204
|
finish();
|
520cecde
JLo'w
Un petit plus, un...
|
205
|
}
|
c8059613
JLo'w
Re-fonte de l'app...
|
206
|
}
|