本文介绍了如何拍摄屏幕截图并以编程方式共享的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Android开发一个应用程序,其中必须拍摄我的一项活动的屏幕截图并将其作为附件邮寄.
I am making an application in Android in which I have to take screenshot of one of my activities and mail it as attachment.
我想获取当前页面的屏幕截图,然后通过电子邮件,蓝牙,Twitter或Facebook分享.
I want to take screenshot of the current page and then share it via email, Bluetooth, Twitter or Facebook.
我的代码如下:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menuselected1, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.ScreenShot: try { takeScreenShot(this); } catch (Exception e) { System.out.println(e); } return true; default: return super.onOptionsItemSelected(item); } } private static void savePic(Bitmap b, String strFileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { bpress(Bitmap.CompressFormat.PNG, 90, fos); System.out.println("b is:"+b); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void shoot(Activity a,String b) { //savePic(takeScreenShot(a), "sdcard/xx.png"); savePic(takeScreenShot(a), b); } private static Bitmap takeScreenShot(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay() .getHeight(); // Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455); Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; }推荐答案
尝试以下操作以获取当前活动的屏幕截图:
Try this for taking screenshot of current Activity:
Android 2.2:
Android 2.2 :
private static Bitmap takeScreenShot(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; DisplayMetrics displaymetrics = new DisplayMetrics(); mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int width = displaymetrics.widthPixels; int height = displaymetrics.heightPixels; Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } private static void savePic(Bitmap b, String strFileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { bpress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }更多推荐
如何拍摄屏幕截图并以编程方式共享
发布评论