[JAVA] Faire une capture d’écran d’une Android Activity et la partager

Une fonctionnalité intéressante à implémenter à votre application Android est d’ajouter un bouton de partage. Dans ce petit tutoriel je vais partager le code que j’ai implémenté et qui permet de faire une capture d’écran de l’activité courante et la partager vers les réseaux sociaux, par SMS, mail etc…

1. Manifest

La première étape de est de modifier le fichier Manifest (VOTREPROJET/AndroidManifest.xml). Ajoutez simplement la ligne suivante :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Cette ligne permettra d’enregistrer la capture d’écran.

2. Le code Java

La capture d’écran est faite au format bitmap.

// Capture d'ecran
Bitmap bitmap;
View v1 = v.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

La sauvegarde du fichier sur le téléphone (stockage externe) :

// Creation du dossier de destination
OutputStream output;
File filepath = Environment.getExternalStorageDirectory();
File dir = new File(filepath.getAbsolutePath() + "/Captures de mon Appli/");
dir.mkdirs();

// Creation du fichier
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
Calendar cal = Calendar.getInstance();
File file = new File(dir, "capture" + dateFormat.format(cal.getTime()) + ".png");

Premièrement on ouvre l’Intent de partage qui regroupe les applications disponibles sur le téléphone de l’utilisateur, ensuite on convertit l’image au format .PNG et on la partage avec l’application (Hangouts, Twitter ou Facebook par exemple)


try {
// Intent de partage
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
output = new FileOutputStream(file);

// Convertion au format PNG
screenshot.compress(Bitmap.CompressFormat.PNG, 100, output);
output.flush();
output.close();

// Recuperation de l'image à partager
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(share, getResources().getString(R.string.share_tweet)));
} catch (Exception e) {
e.printStackTrace();
}

Voilà, recopiez tout ce code dans la classe Java de votre Activity, appliquez ces actions à un bouton et votre application est prête à partager des captures d’écran!