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;
  }
}

}

 

 

 

Android/ Java : lignes de codes pratiques

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *