Advertisement
thibthibaut

Untitled

Oct 19th, 2015
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.28 KB | None | 0 0
  1. /**
  2.  * CLASSE JAVA QUI VA CHERCHER LES TAUX SUR L'API FIXER.IO (http://fixer.io) AU FORMAT JSON (Je préfère ça que XML)
  3.  * Cette classe peut aussi être utilisée pour récupérer du XML sur l'API de la BCE
  4.  *
  5.  * COMMENT UTILISER?
  6.  *
  7.  * Créez une nouvelle classe, appellez là comme vous voulez et copiez-collez le code ci dessous,
  8.  * modifiez le nom du package et le nom de la classe et du constructeur si vous avez changé le nom
  9.  *
  10.  * Dans la MainActivity, au moment du onTouch sur le bouton convertir faire:
  11.  *
  12.  *  JSONAsyncTask task = new JSONAsyncTask( this , v, in, out); //Pour voir en détail les paramètre, voir la doc du constructeur
  13.  *
  14.  *  Et ensuite :
  15.  *
  16.  *  task.execute();
  17.  *
  18.  *
  19.  *  Vous pouvez avoir besoin de cette liste de monaie
  20.  *  String[] currencyList = new String[] {"EUR","USD","AUD","BGN","BRL","CAD","CHF","CNY","CZK","DKK","GBP","HKD","HRK","HUF","IDR","ILS","INR","JPY","KRW","MXN","MYR","NOK","NZD","PHP","PLN","RON","RUB","SEK","SGD","THB","TRY","ZAR"};
  21.  *
  22.  *  code sous licence beerware (https://fr.wikipedia.org/wiki/Beerware)
  23.  */
  24.  
  25.  
  26. package com.example.thibaut.tp1; //Changez ça avec le nom de votre package
  27.  
  28. import android.app.Activity;
  29. import android.media.MediaPlayer;
  30. import android.os.AsyncTask;
  31. import android.util.Log;
  32. import android.widget.TextView;
  33.  
  34. import org.json.JSONException;
  35. import org.json.JSONObject;
  36.  
  37.  
  38. import java.io.BufferedInputStream;
  39. import java.io.BufferedReader;
  40. import java.io.InputStream;
  41. import java.io.InputStreamReader;
  42. import java.net.HttpURLConnection;
  43. import java.net.URL;
  44.  
  45.  
  46.  
  47. class JSONAsyncTask extends AsyncTask<String, String, String> {
  48.  
  49.  
  50.     Activity mActivity;
  51.     TextView out;
  52.     String input;
  53.     String output;
  54.     Float v_in;
  55.  
  56.  
  57.     /**
  58.      * Constructor
  59.      * @param a MainActivity, on peut utilsier les methodes de l'activité principale grace à l'objet mActivity
  60.      * @param v La valeur entrée dans l'EditText, elle pourrait aussi être récupéré via l'objet mActivity
  61.      * @param in Le nom de la monnaie de départ
  62.      * @param out Le nom de la monnaie d'arrivée
  63.      */
  64.     public JSONAsyncTask(Activity a,float v,  String in, String out) {
  65.         this.mActivity = a;
  66.         this.v_in = v;
  67.         this.input = in;
  68.         this.output = out;
  69.  
  70.  
  71.     }
  72.  
  73.  
  74.     @Override
  75.     protected void onPreExecute() {
  76.         super.onPreExecute();
  77.  
  78.     }
  79.  
  80.     @Override
  81.     protected String doInBackground(String... args) {
  82.  
  83.         StringBuilder result = new StringBuilder();
  84.  
  85.         HttpURLConnection urlConnection = null;
  86.  
  87.  
  88.         try {
  89.             URL url = new URL("http://api.fixer.io/latest?base="+ this.input +"&symbols=" + this.output); //Appel à l'api Fixer.io, on peut aussi utiliser la BCE
  90.             urlConnection = (HttpURLConnection) url.openConnection();
  91.             InputStream in = new BufferedInputStream(urlConnection.getInputStream());
  92.  
  93.             BufferedReader reader = new BufferedReader(new InputStreamReader(in));
  94.  
  95.             String line;
  96.             while ((line = reader.readLine()) != null) {
  97.                 result.append(line);
  98.             }
  99.  
  100.         }catch( Exception e) {
  101.             e.printStackTrace();
  102.         }
  103.         finally {
  104.             assert urlConnection != null;
  105.             urlConnection.disconnect();
  106.         }
  107.  
  108.  
  109.         return result.toString();
  110.     }
  111.  
  112.  
  113.     protected void onPostExecute(String result) {
  114.  
  115.  
  116.         try {
  117.             JSONObject data = new JSONObject(result); //Récuparation de l'objet JSON
  118.  
  119.             String tx = data.getString("rates");
  120.  
  121.             JSONObject currency = new JSONObject(tx);
  122.  
  123.             double value = currency.getDouble(output);
  124.  
  125.             value *= v_in; //Calcul de la valeur de la nouvelle monaie
  126.  
  127.  
  128.             out = (TextView) mActivity.findViewById(R.id.output_value); //Récupération de la vue pour l'affichage
  129.  
  130.             MediaPlayer mediaPlayer = MediaPlayer.create(this.mActivity, R.raw.soundcash); //Petit bruit de "Cling Ging!" (Necessite un fichier MP3 dans res/raw)
  131.             mediaPlayer.start();
  132.  
  133.             out.setText( Double.toString(value).substring(0,7)); //Affichage du texte avec troncature pour pas que ça dépasse et que ce soit tout pas beau
  134.  
  135.         } catch (JSONException e) {
  136.             e.printStackTrace();
  137.         }
  138.  
  139.  
  140.  
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement