In meiner Situation habe ich RenderSurfaceView nicht verwendet. Ich möchte eine Bildschirmaufnahme meiner Szene machen. Aber wenn ich den Screenshot speichern zeigt es Spiegelbild auf dem Kopf. Kann nicht verstehen, was ich hier falsch mache.Screen Capture in einer Engine ergibt das umgekehrte Spiegelbild
Hier ist mein Code
attachChild(screenCapture);
share_clicked = 1;
final int viewWidth = (int)camera.getWidth();
final int viewHeight = (int)camera.getHeight();
Log.d("camera width", "View width :" + viewWidth);
Log.d("camera height", "View height :" + viewHeight);
File direct = new File(
Environment.getExternalStorageDirectory()
+ "/Word");
if (!direct.exists()) {
if (direct.mkdir())
; // directory is created;
}
screenCapture.capture(
viewWidth,
viewHeight,
direct.getAbsolutePath() + "/word"
+ System.currentTimeMillis() + ".png",
new IScreenCaptureCallback() {
public void onScreenCaptured(
final String pFilePath) {
activity
.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(
activity,
"Image Successfully saved to 'Word' folder in SD Card.",
Toast.LENGTH_SHORT)
.show();
}
});
}
public void onScreenCaptureFailed(
final String pFilePath,
final Exception pException) {
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(
activity,
"Failed saving the image! Please check SD card.",
Toast.LENGTH_SHORT)
.show();
}
});
}
});
! [Dies ist der Screenshot i bekommt 1
Es wäre eine große Hilfe, wenn jemand dies für mich gesucht konnte aus. Danke.
Dank für dieses Zeug. – Siddharth
Tatsächlich gibt es einen Fehler, wenn pGrabY anders als 0 ist, gibt es eine ArrayOutOFBoundsException. Die Zeile sollte 'pixels [x + (pGrabHeight - y - 1) * pGrabWidth] = pixelsARGB_8888 [x + y * pGrabWidth];' ohne pGrabY im zweiten Teil des assign sein. – Orgmir