Comment prendre une capture d'écran d'Android de la Surface d'Affichage?
Je veux en programmant prendre des capture d'écran de mon jeu, tout comme vous obtiendriez dans Eclipse DDMS.
Capture d'écran prises par la solution proposée ici: Procédure de programmation pour prendre une capture d'écran sur Android? et dans la plupart des autres de SORTE que des questions ont Vue sur des éléments visibles, mais pas le SurfaceView.
SCREENSHOTS_LOCATIONS = Environment.getExternalStorageDirectory().toString() + "/screenshots/";
//Get root view
View view = activity.getWindow().getDecorView().getRootView();
//Create the bitmap to use to draw the screenshot
final Bitmap bitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
//Get current theme to know which background to use
final Theme theme = activity.getTheme();
final TypedArray ta = theme
.obtainStyledAttributes(new int[] { android.R.attr.windowBackground });
final int res = ta.getResourceId(0, 0);
final Drawable background = activity.getResources().getDrawable(res);
//Draw background
background.draw(canvas);
//Draw views
view.draw(canvas);
//Save the screenshot to the file system
FileOutputStream fos = null;
try {
final File sddir = new File(SCREENSHOTS_LOCATIONS);
if (!sddir.exists()) {
sddir.mkdirs();
}
fos = new FileOutputStream(SCREENSHOTS_LOCATIONS
+ System.currentTimeMillis() + ".jpg");
if (fos != null) {
if (!bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos)) {
Log.d("ScreenShot", "Compress/Write failed");
}
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
Toute aide à ce sujet serait très apprécié. Merci.
si vous voulez capturer le point de vue qui ne sont pas visibles ou sous une autre vue?
Double Possible de Android Prendre une Capture d'écran de la Surface d'Affichage Montre l'Écran Noir
Double Possible de Android Prendre une Capture d'écran de la Surface d'Affichage Montre l'Écran Noir
OriginalL'auteur Tariq Mahmood | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
J'espère que cela est également utile pour vous. ici, peu de différence pour la réponse ci-dessus est
pour j'ai utilisé glsurfaceview de prendre les captures d'écran orsque je clique sur le bouton.
cette image est stockée dans la carte sd pour les cités de dossier :
sdcard/emulated/0/printerscreenshots/image/...les images
OriginalL'auteur harikrishnan
Le code de l'Usman Kurde réponse ne fonctionnera pas dans la plupart des cas.
Sauf si vous êtes rendu de H. 264 images vidéo dans le logiciel, avec de la Toile sur la Vue, le dessin-cache approche ne fonctionne pas (voir, par exemple, cette réponse).
Vous ne pouvez pas lire les pixels de la Surface de la partie de la SurfaceView. Le problème de base est que la Surface est une file d'attente de tampons avec un producteur-consommateur de l'interface, et votre application est sur le producteur. Le consommateur, généralement le système de compositing (SurfaceFlinger), est capable de capturer une capture d'écran parce que c'est à l'autre bout de la pipe.
Prendre une Capture d'écran de SurfaceView
OriginalL'auteur Kirill Vashilo