Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 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)
- * Cette classe peut aussi être utilisée pour récupérer du XML sur l'API de la BCE
- *
- * COMMENT UTILISER?
- *
- * Créez une nouvelle classe, appellez là comme vous voulez et copiez-collez le code ci dessous,
- * modifiez le nom du package et le nom de la classe et du constructeur si vous avez changé le nom
- *
- * Dans la MainActivity, au moment du onTouch sur le bouton convertir faire:
- *
- * JSONAsyncTask task = new JSONAsyncTask( this , v, in, out); //Pour voir en détail les paramètre, voir la doc du constructeur
- *
- * Et ensuite :
- *
- * task.execute();
- *
- *
- * Vous pouvez avoir besoin de cette liste de monaie
- * 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"};
- *
- * code sous licence beerware (https://fr.wikipedia.org/wiki/Beerware)
- */
- package com.example.thibaut.tp1; //Changez ça avec le nom de votre package
- import android.app.Activity;
- import android.media.MediaPlayer;
- import android.os.AsyncTask;
- import android.util.Log;
- import android.widget.TextView;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.BufferedInputStream;
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- class JSONAsyncTask extends AsyncTask<String, String, String> {
- Activity mActivity;
- TextView out;
- String input;
- String output;
- Float v_in;
- /**
- * Constructor
- * @param a MainActivity, on peut utilsier les methodes de l'activité principale grace à l'objet mActivity
- * @param v La valeur entrée dans l'EditText, elle pourrait aussi être récupéré via l'objet mActivity
- * @param in Le nom de la monnaie de départ
- * @param out Le nom de la monnaie d'arrivée
- */
- public JSONAsyncTask(Activity a,float v, String in, String out) {
- this.mActivity = a;
- this.v_in = v;
- this.input = in;
- this.output = out;
- }
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- }
- @Override
- protected String doInBackground(String... args) {
- StringBuilder result = new StringBuilder();
- HttpURLConnection urlConnection = null;
- try {
- 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
- urlConnection = (HttpURLConnection) url.openConnection();
- InputStream in = new BufferedInputStream(urlConnection.getInputStream());
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- String line;
- while ((line = reader.readLine()) != null) {
- result.append(line);
- }
- }catch( Exception e) {
- e.printStackTrace();
- }
- finally {
- assert urlConnection != null;
- urlConnection.disconnect();
- }
- return result.toString();
- }
- protected void onPostExecute(String result) {
- try {
- JSONObject data = new JSONObject(result); //Récuparation de l'objet JSON
- String tx = data.getString("rates");
- JSONObject currency = new JSONObject(tx);
- double value = currency.getDouble(output);
- value *= v_in; //Calcul de la valeur de la nouvelle monaie
- out = (TextView) mActivity.findViewById(R.id.output_value); //Récupération de la vue pour l'affichage
- MediaPlayer mediaPlayer = MediaPlayer.create(this.mActivity, R.raw.soundcash); //Petit bruit de "Cling Ging!" (Necessite un fichier MP3 dans res/raw)
- mediaPlayer.start();
- 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
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement