2016-08-07 24 views
2

Ich bin auf der Suche nach einer Möglichkeit, Screenshots von Android-Gerät programmgesteuert zu machen. Ich habe mir verschiedene Lösungen im Stackoverflow angeschaut, die einen Screenshot der laufenden Aktivität beinhalten. Ich möchte das Verhalten vortäuschen, das standardmäßig in Android ausgelöst wird, indem Sie Lautstärke und Strom gleichzeitig drücken. Bitte beachten Sie, dass ich keinen Screenshot meiner eigenen Aktivität oder laufenden Aktivität machen möchte. Ich möchte zum Beispiel eine Dialogaktivität mit einer Schaltfläche starten, und wenn ich auf die Schaltfläche klicke, beende ich meine Aktivität und starte eine Hintergrundaufgabe, die einen Screenshot des sichtbaren Bereichs inkl. Statusleiste erstellt und macht es. Wie erreiche ich das?Welcher Android-Code ahmt die Bildschirmfotofunktion nach (Lautstärke runter und Power-Taste gleichzeitig)?

Antwort

-1

Wenn Sie einen Screenshot einer anderen Aktivität machen, müssen Sie irgendwie einen Verweis auf die Ansicht erhalten, die den Bildschirmbereich umfasst, den Sie screenshot ODER einfach den gesamten Bildschirm erfassen möchten. Wenn es der gesamte Bildschirm ist, können Sie bekommen, dass mit

// get the top level view from the activity in this context 
View theView = getWindow().getDecorView(); 

dann diese Ansicht als Bitmap erfassen Sie

// Take the Screen shot of a View 
public static Bitmap takeScreenshot(final View theView) { 
    theView.setDrawingCacheEnabled(true); 
    return theView.getDrawingCache(); 
}  

// Release the drawing cache after you have captured the Bitmap 
// from takeScreenshot() 
public static void clearScreenshotCache(final View theView) { 
    theView.setDrawingCacheEnabled(false); 
} 

Von dort können Sie die Bitmap in eine JPEG oder PNG speichern kann durch den Aufruf .compress auf der Bitmap.

Wie zum Ausführen einer Aufgabe auf einem Hintergrund-Thread gibt es genug Dokumentation auf verschiedene Arten, wie here zu tun.

Hoffe, dass Sie loslegen!