Android toma una captura de pantalla por código

Esto no debería ser una pregunta demasiado dura. Quiero la capacidad de tomar una captura de pantalla de mi diseño (vista) y enviarla a través de sms. ¿Puede alguien caminarme por los escalones?

¡Gracias!

Edición: no tiene que ser una “captura de pantalla”, supongo, siempre que podamos obtener todos los píxeles renderizados de una vista de alguna manera.

Alrededor de la web encontré algunos fragmentos de código que pude trabajar juntos.

Aquí hay una solución que funciona bien:

Configuración de su diseño de raíz:

View content = findViewById(R.id.layoutroot); content.setDrawingCacheEnabled(true); 

Función para obtener la vista representada:

 private void getScreen() { View content = findViewById(R.id.layoutroot); Bitmap bitmap = content.getDrawingCache(); File file = new File("/sdcard/test.png"); try { file.createNewFile(); FileOutputStream ostream = new FileOutputStream(file); bitmap.compress(CompressFormat.PNG, 100, ostream); ostream.close(); } catch (Exception e) { e.printStackTrace(); } }