Holen Sie sich einen Screenshot von surfaceView in Android

In meiner Anwendung habe ich mit einigen Schaltflächen und SurfaceView angezeigt. Ich muss einen Screenshot dieser Ansicht machen, aber anstelle von SurfaceView gibt es nur ein schwarzes Feld. Ich probiere Lösungen aus, die ich bei Stackoverflow gefunden habe, aber sie funktionieren bei mir nicht.

Dies ist mein Code, den ich normalerweise screenshots mache:

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

Vielleicht kann jemand helfen.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage