Généralités
Cycle de vie d’une activité
Multimédia
Jouer un son
MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.beep_caisse); mediaPlayer.start(); // no need to call prepare(); create() does that for you
Le fichier son doit se trouver dans app/res/raw. Créer le répertoire « raw » s’il n’existe pas
Tout sur mediaplayer : https://developer.android.com/guide/topics/media/mediaplayer.html
Format pris en charge : https://developer.android.com/guide/topics/media/media-formats.html
Retourner une image
Matrix matrix = new Matrix(); matrix.postRotate(90); // anti-clockwise by 90 degrees Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
Composants visuels
ListView : Récupérer la position courante (du scroll) puis la remettre
Ce morceau de code permet de récupérer la position courante d’un listview puis de replacer le listview dans la dernière position.
// Récupère position int index = listview.getFirstVisiblePosition(); View v = listview.getChildAt(0); int position_affichage = (v == null) ? 0 : (v.getTop() - listview.getPaddingTop());
// Code intermédiaire //...
//repositionne la position du listview listview.setSelectionFromTop (index,position_affichage);
Empêcher la veille d’écran sur une activité
Mettre la propriété android:keepScreenOn= »true »
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true" >
ou en ligne de code :
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Base de données
Mysql : exemple de requêtage
Pré-requis : télécharger le fichier .jar MysqlConnector
Exemple d’une requête :
Connection conn = null; Statement stmt = null; // Nom du JDBC driver + URL de la base de données String JDBC_DRIVER = "com.mysql.jdbc.Driver"; String DB_URL = "jdbc:mysql://localhost/open_food"; // Database credentials String USER = "root"; String PASS = ""; try { Class.forName("com.mysql.jdbc.Driver"); // Ouvrir une connexion conn = DriverManager.getConnection(DB_URL,USER,PASS); //Executer une requête stmt = conn.createStatement(); String sql = un_doc.Get_SQL_insert(); int rs = stmt.executeUpdate(sql); //Fermer les connexions/objets ouverts stmt.close(); conn.close(); } catch (Exception ex) { System.out.println("ERREUR --> " + ex); }
Pour des requêtes de type « Select », il faut utiliser la méthode « executeQuery » qui va renvoyer un objet de type ResultSet. Ce dernier contiendra les éléments trouvés.
Exemple :
// Execution d'une requête de sélection ResultSet rs = stmt.executeQuery(sql); //Parcours du résultats while(rs.next()){ //Récupération des données des colones int id = rs.getInt("id"); int age = rs.getInt("age"); String first = rs.getString("first"); String last = rs.getString("last"); } //fermeture du resultset rs.close();
Gestion fichiers
Android : Gestion de fichiers
en cours …
Il y a deux possibilités qui s’offre à nous :
- écrire dans la carte SD du téléphone (si elle existe) :
- il n’y pas de limitation particulières concernant l’emplacement de stockage ;
- toutes les applications peuvent voir les données
- écrire dans la mémoire interne du téléphone :
- c’est limité au seul répertoire de l’application
- seule l’application peut accéder aux données.
Bref il faut faire un choix …
Exemple de code :
le code ci-dessous montre comment lire et écrire. Il tente d’abord d’écrire sur la carte SD et le cas échéant sur la mémoire interne du téléphone.
JSON : Objet to JSON et inversement [GSON]
Dans Android la bibliothèque org.json n’est pas tout à fait la même que celle de JAVA.
Notamment dans le constructeur de la classe JSONObject qui permet en paramètre de transformer un objet (complexe) en json. Ce qui n’existe pas dans la librairie sous ANDROID (bien qu’elle porte le même nom).
A savoir Google met à disposition une libraire supplémentaire nommée GSON qui permet de faire cela très simplement. Elle est donc spécialisé sur la sérialisation et sérialisation classe vers Json
Cette libraire est disponible sur https://github.com/google/gson.
Exemple de code :
public String Utilisateur_to_Json(Utilisateur un_utilisateur) { String String_JSON =""; Gson gson = new Gson(); String_JSON = gson.toJson(un_utilisateur); return String_JSON; }
Ce qui donne un résultat suivant :
{"Id":1,"Mail":"union31xh@free.fr","Nom":"UNION","Prenom":"31xh","Profils":[{"Id":1,"Libelle":"Maison","Stocks":[{"Id":1,"Libelle":"StockA","Produits":[{"Id":2,"Id_Stock":1,"CODE_EAN":"Code EAN Produit B","date_ajout":"Apr 21, 2017 9:57:53 AM","date_retrait":"Apr 21, 2017 9:57:53 AM","Present_referentiel":false}]},{"Id":2,"Libelle":"StockB","Produits":[{"Id":1,"Id_Stock":2,"CODE_EAN":"EAN produit A","date_ajout":"Apr 21, 2017 9:57:53 AM","date_retrait":"Apr 21, 2017 9:57:53 AM","Present_referentiel":false}]}]}]}
Pour une structure de classes suivante :
A l’inverse le code est le suivant :
Gson gson = new Gson(); Utilisateur un_utilisateur = gson.fromJson(Texte_JSON, Utilisateur.class); return un_utilisateur;
JAVA Technique
HashMap : tri
Un HashMap ne se trie pas en soit. Néanmoins il est possible d’obtenir très facilement un TreeMap trié à partir d’un HaspMap. Seule condition, passer par un « comparator ».
Exemple de code épuré tiré du site chicoré
import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.TreeMap; public class Tri { public static void main(String[] args) { HashMap map = new HashMap(); Comparateur comp = new Comparateur(map); TreeMap map_apres = new TreeMap(comp); map.put("A",49); map.put("B",18); map.put("C",92); map.put("D",37); map.put("E",62); System.out.println("Avant le tri: "+map); map_apres.putAll(map); System.out.println("Après le tri: "+map_apres); } } class Comparateur implements Comparator { Map tuple; public Comparateur(HashMap map) { this.tuple = map; } //ce comparateur ordonne les éléments dans l'ordre décroissant @Override public int compare(Object o1, Object o2) { // TODO Auto-generated method stub if ((int) tuple.get(o1) >= (int) tuple.get(o2)) { return -1; } else { return 1; } } }