From 6ff8ec9bde3b88385d23d62df7b9ac4befb87924 Mon Sep 17 00:00:00 2001 From: JLo'w Date: Sat, 7 May 2016 21:19:19 +0200 Subject: [PATCH] Système d'héritage gérer NFC plusieurs fragments --- PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java | 33 +++++++++++++++++++++++++++------ PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java | 13 ++++++++++--- PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java | 29 +++++++++++++++++++++++++++++ PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java | 36 +++++------------------------------- 4 files changed, 71 insertions(+), 40 deletions(-) create mode 100644 PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java diff --git a/PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java b/PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java index 22e7232..f4ca320 100644 --- a/PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java +++ b/PremiereActivite/app/src/main/java/com/example/app_10p5/ConnectionFragment.java @@ -1,23 +1,44 @@ package com.example.app_10p5; -import android.app.Fragment; +import android.content.Intent; +import android.content.SharedPreferences; +import android.nfc.NfcAdapter; import android.os.Bundle; +import android.preference.PreferenceManager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Toast; + +import java.net.URL; +import java.util.HashMap; /** * Created by Jean-loup Beaussart on 05/05/2016. */ -public class ConnectionFragment extends Fragment { - @Override - public void onCreate(Bundle savedInstanceState){ - super.onCreate(savedInstanceState); - } +public class ConnectionFragment extends NFC { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View ret = inflater.inflate(R.layout.layout_connection, container, false); return ret; } + + @Override + public void handleIntent(Intent intent) { + try{ + SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); + URL url = new URL(settings.getString("server_address", null) + "api/utilisateur/connexion"); + HashMap param = new HashMap(); + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + param.put("idCarte", id_carte); + NetworkThread nt = new NetworkThread(url, param); + nt.delegate = (MainActivite) getActivity(); + nt.execute(); + } + catch (Throwable t) { + Toast.makeText(getActivity(), "Erreur: " + t.toString(), Toast.LENGTH_LONG).show(); + System.out.println("Exception: " + t.toString()); + } + } } diff --git a/PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java b/PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java index c269c80..c925850 100644 --- a/PremiereActivite/app/src/main/java/com/example/app_10p5/MainActivite.java +++ b/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 super.onNewIntent(intent); Fragment frag = getFragmentManager().findFragmentById(R.id.fragment_container); - if(mState != STATE_RIEN && frag instanceof NFCFragment){ - NFCFragment nfc = (NFCFragment) frag; - nfc.handleIntent(intent); + if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){ + if(mState != STATE_RIEN && frag instanceof NFCFragment){ + NFCFragment nfc = (NFCFragment) frag; + nfc.handleIntent(intent); + } + else if(mState == STATE_RIEN && frag instanceof ConnectionFragment){ + mState = STATE_CONNEXION; + ConnectionFragment co = (ConnectionFragment) frag; + co.handleIntent(intent); + } } } diff --git a/PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java b/PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java new file mode 100644 index 0000000..b9bb437 --- /dev/null +++ b/PremiereActivite/app/src/main/java/com/example/app_10p5/NFC.java @@ -0,0 +1,29 @@ +package com.example.app_10p5; + +import android.app.Fragment; +import android.content.Intent; + +/** + * Created by Jean-loup Beaussart on 07/05/2016. + */ +public abstract class NFC extends Fragment { + + // Convertit l'array de byte en chaîne hexadécimale (si le byte = 0x63, str = "63"). + public 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; + } + + + public abstract void handleIntent(Intent intent); +} diff --git a/PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java b/PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java index 89cfd9f..15d8ee5 100644 --- a/PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java +++ b/PremiereActivite/app/src/main/java/com/example/app_10p5/NFCFragment.java @@ -1,6 +1,5 @@ package com.example.app_10p5; -import android.app.Fragment; import android.content.Intent; import android.content.SharedPreferences; import android.nfc.NfcAdapter; @@ -19,16 +18,11 @@ import java.util.HashMap; /** * Created by Jean-loup Beaussart on 05/05/2016. */ -public class NFCFragment extends Fragment { +public class NFCFragment extends NFC { private HashMap mParam; private String mAPI; @Override - public void onCreate(Bundle savedInstanceState){ - super.onCreate(savedInstanceState); - } - - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View ret = inflater.inflate(R.layout.layout_carte, container, false); @@ -76,34 +70,14 @@ public class NFCFragment extends Fragment { return ret; } - // 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 public void handleIntent(Intent intent){ - if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) { - String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); - mParam.put("idCarte", id_carte); - clientAPI(); - } + String id_carte = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); + mParam.put("idCarte", id_carte); + clientAPI(); } - public void clientAPI() { try { SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity().getApplicationContext()); -- libgit2 0.21.2