Obtener captura de pantalla de surfaceView en Android

En mi aplicación tengo vista con algunos botones y SurfaceView. Debo tomar una captura de pantalla de esta vista, pero en lugar de SurfaceView solo hay un campo negro. Intento con las soluciones que encontré en stackoverflow, pero no funcionan para mí.

Este es mi código que normalmente tomo capturas de pantalla:

File folder = new File(Environment.getExternalStorageDirectory().getPath() + "/folder");
if (!folder.exists()) {
    folder.mkdir();
}
String path = folder.getAbsolutePath() + "snapshot.png";
File file = new File(path);
file.createNewFile();

View view = this.findViewById(android.R.id.content).getRootView();
view.setDrawingCacheEnabled(true);
Bitmap drawingCache = view.getDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(drawingCache);

FileOutputStream fos = null;
try {
    fos = new FileOutputStream(file);
    bitmap.compress(CompressFormat.PNG, 100, fos);
} finally {
    bitmap.recycle();
    view.setDrawingCacheEnabled(false);
    if (fos != null) {
        try {
            fos.close();
        } catch (IOException e) {
            Log.e(TAG, e.getMessage(), e);
        }
    }
}

Tal vez alguien pueda ayudar.

Respuestas a la pregunta(0)

Su respuesta a la pregunta