Commit 6ff8ec9bde3b88385d23d62df7b9ac4befb87924
1 parent
f5fd15ef
Système d'héritage gérer NFC plusieurs fragments
Donc connexion possible avec carte directement
Showing
4 changed files
with
71 additions
and
40 deletions
Show diff stats
PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java
1 | 1 | package com.example.app_10p5; |
2 | 2 | |
3 | -import android.app.Fragment; | |
3 | +import android.content.Intent; | |
4 | +import android.content.SharedPreferences; | |
5 | +import android.nfc.NfcAdapter; | |
4 | 6 | import android.os.Bundle; |
7 | +import android.preference.PreferenceManager; | |
5 | 8 | import android.view.LayoutInflater; |
6 | 9 | import android.view.View; |
7 | 10 | import android.view.ViewGroup; |
11 | +import android.widget.Toast; | |
12 | + | |
13 | +import java.net.URL; | |
14 | +import java.util.HashMap; | |
8 | 15 | |
9 | 16 | /** |
10 | 17 | * Created by Jean-loup Beaussart on 05/05/2016. |
11 | 18 | */ |
12 | -public class ConnectionFragment extends Fragment { | |
13 | - @Override | |
14 | - public void onCreate(Bundle savedInstanceState){ | |
15 | - super.onCreate(savedInstanceState); | |
16 | - } | |
19 | +public class ConnectionFragment extends NFC { | |
17 | 20 | |
18 | 21 | @Override |
19 | 22 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { |
20 | 23 | View ret = inflater.inflate(R.layout.layout_connection, container, false); |
21 | 24 | return ret; |
22 | 25 | } |
26 | + | |
27 | + @Override | |
28 | + public void handleIntent(Intent intent) { | |
29 | + try{ | |
30 | + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); | |
31 | + URL url = new URL(settings.getString("server_address", null) + "api/utilisateur/connexion"); | |
32 | + HashMap<String, String> param = new HashMap<String, String>(); | |
33 | + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); | |
34 | + param.put("idCarte", id_carte); | |
35 | + NetworkThread nt = new NetworkThread(url, param); | |
36 | + nt.delegate = (MainActivite) getActivity(); | |
37 | + nt.execute(); | |
38 | + } | |
39 | + catch (Throwable t) { | |
40 | + Toast.makeText(getActivity(), "Erreur: " + t.toString(), Toast.LENGTH_LONG).show(); | |
41 | + System.out.println("Exception: " + t.toString()); | |
42 | + } | |
43 | + } | |
23 | 44 | } | ... | ... |
PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java
... | ... | @@ -391,9 +391,16 @@ public class MainActivite extends Activity implements ASyncResponse, main_tab_fr |
391 | 391 | super.onNewIntent(intent); |
392 | 392 | Fragment frag = getFragmentManager().findFragmentById(R.id.fragment_container); |
393 | 393 | |
394 | - if(mState != STATE_RIEN && frag instanceof NFCFragment){ | |
395 | - NFCFragment nfc = (NFCFragment) frag; | |
396 | - nfc.handleIntent(intent); | |
394 | + if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){ | |
395 | + if(mState != STATE_RIEN && frag instanceof NFCFragment){ | |
396 | + NFCFragment nfc = (NFCFragment) frag; | |
397 | + nfc.handleIntent(intent); | |
398 | + } | |
399 | + else if(mState == STATE_RIEN && frag instanceof ConnectionFragment){ | |
400 | + mState = STATE_CONNEXION; | |
401 | + ConnectionFragment co = (ConnectionFragment) frag; | |
402 | + co.handleIntent(intent); | |
403 | + } | |
397 | 404 | } |
398 | 405 | } |
399 | 406 | ... | ... |
PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java
0 → 100644
... | ... | @@ -0,0 +1,29 @@ |
1 | +package com.example.app_10p5; | |
2 | + | |
3 | +import android.app.Fragment; | |
4 | +import android.content.Intent; | |
5 | + | |
6 | +/** | |
7 | + * Created by Jean-loup Beaussart on 07/05/2016. | |
8 | + */ | |
9 | +public abstract class NFC extends Fragment { | |
10 | + | |
11 | + // Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63"). | |
12 | + public String ByteArrayToHexString(byte [] inarray) { | |
13 | + int i, j, in; | |
14 | + String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; | |
15 | + String out= ""; | |
16 | + for(j = 0 ; j < inarray.length ; ++j) | |
17 | + { | |
18 | + in = (int) inarray[j] & 0xff; | |
19 | + i = (in >> 4) & 0x0f; | |
20 | + out += hex[i]; | |
21 | + i = in & 0x0f; | |
22 | + out += hex[i]; | |
23 | + } | |
24 | + return out; | |
25 | + } | |
26 | + | |
27 | + | |
28 | + public abstract void handleIntent(Intent intent); | |
29 | +} | ... | ... |
PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java
1 | 1 | package com.example.app_10p5; |
2 | 2 | |
3 | -import android.app.Fragment; | |
4 | 3 | import android.content.Intent; |
5 | 4 | import android.content.SharedPreferences; |
6 | 5 | import android.nfc.NfcAdapter; |
... | ... | @@ -19,16 +18,11 @@ import java.util.HashMap; |
19 | 18 | /** |
20 | 19 | * Created by Jean-loup Beaussart on 05/05/2016. |
21 | 20 | */ |
22 | -public class NFCFragment extends Fragment { | |
21 | +public class NFCFragment extends NFC { | |
23 | 22 | private HashMap<String, String> mParam; |
24 | 23 | private String mAPI; |
25 | 24 | |
26 | 25 | @Override |
27 | - public void onCreate(Bundle savedInstanceState){ | |
28 | - super.onCreate(savedInstanceState); | |
29 | - } | |
30 | - | |
31 | - @Override | |
32 | 26 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { |
33 | 27 | View ret = inflater.inflate(R.layout.layout_carte, container, false); |
34 | 28 | |
... | ... | @@ -76,34 +70,14 @@ public class NFCFragment extends Fragment { |
76 | 70 | return ret; |
77 | 71 | } |
78 | 72 | |
79 | - // Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63"). | |
80 | - private String ByteArrayToHexString(byte [] inarray) { | |
81 | - int i, j, in; | |
82 | - String [] hex = {"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"}; | |
83 | - String out= ""; | |
84 | - for(j = 0 ; j < inarray.length ; ++j) | |
85 | - { | |
86 | - in = (int) inarray[j] & 0xff; | |
87 | - i = (in >> 4) & 0x0f; | |
88 | - out += hex[i]; | |
89 | - i = in & 0x0f; | |
90 | - out += hex[i]; | |
91 | - } | |
92 | - return out; | |
93 | - } | |
94 | - | |
95 | - | |
96 | - | |
73 | + @Override | |
97 | 74 | public void handleIntent(Intent intent){ |
98 | - if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { | |
99 | - String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); | |
100 | - mParam.put("idCarte", id_carte); | |
101 | - clientAPI(); | |
102 | - } | |
75 | + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); | |
76 | + mParam.put("idCarte", id_carte); | |
77 | + clientAPI(); | |
103 | 78 | } |
104 | 79 | |
105 | 80 | |
106 | - | |
107 | 81 | public void clientAPI() { |
108 | 82 | try { |
109 | 83 | SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); | ... | ... |