Obteniendo Bitmap desde SurfaceView personalizado

Tengo este código en una clase que amplía la vista de superficie e implementa ejecutable. Soy capaz de usar la clase, básicamente, le permite dibujar en el lienzo con diferentes colores y demás. Estoy tratando de obtener un método que me permita guardar la imagen después de dibujarla y este es el método. No importa lo que haga, solo obtengo una imagen negra sin nada en ella. ¿Algunas ideas?

Tengo el dibujo de caché habilitado

Objetivo: obtener una imagen de mapa de bits de un SurfaceView personalizado. He agotado las opciones de ver otras publicaciones aquí y no encontré nada para trabajar. Aquí se espera que haya una nueva solución para esto. Muchas gracias

public Bitmap getImage() {
            Bitmap bitmap = Bitmap.createBitmap(this.getWidth(),
                    this.getHeight(), Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bitmap);
            this.draw(canvas);
            return bitmap;
        }

Respuestas a la pregunta(1)

Su respuesta a la pregunta