private void getPic() {
Bitmap mScreenBitmap;
Matrix mDisplayMatrix;
mDisplayMatrix = new Matrix();
DisplayMetrics metrics = new DisplayMetrics();
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
if (wm == null) {
Log.d(TAG,"getPic() wm = null");
return;
}
wm.getDefaultDisplay().getRealMetrics(metrics);
float[] dims = {metrics.widthPixels, metrics.heightPixels};
float degrees = getDegreesForRotation(wm.getDefaultDisplay().getRotation());
boolean requiresRotation = (degrees > 0);
if (requiresRotation) {
// Get the dimensions of the device in its native orientation
mDisplayMatrix.reset();
mDisplayMatrix.preRotate(-degrees);
mDisplayMatrix.mapPoints(dims);
dims[0] = Math.abs(dims[0]);
dims[1] = Math.abs(dims[1]);
}
mScreenBitmap = SurfaceControl.screenshot((int) dims[0], (int) dims[1]);
if (mScreenBitmap == null) {
Log.d(TAG,"getPic() mScreenBitmap = null");
return;
}
if (requiresRotation) {
// Rotate the screenshot to the current orientation
Bitmap ss = Bitmap.createBitmap(metrics.widthPixels, metrics.heightPixels, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(ss);
c.translate(ss.getWidth() / 2, ss.getHeight() / 2);
c.rotate(degrees);
c.translate(-dims[0] / 2, -dims[1] / 2);
c.drawBitmap(mScreenBitmap, 0, 0, null);
c.setBitmap(null);
// Recycle the previous bitmap
mScreenBitmap.recycle();
mScreenBitmap = ss;
}
// Optimizations
mScreenBitmap.setHasAlpha(false);
mScreenBitmap.prepareToDraw();
}
2014年9月27日 星期六
[android] 抓螢幕截圖 java code
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言