在android中的屏幕捕获
我想开发一个应用程序,将android屏幕截图..任何人知道如何做到这一点..? 这是类似于koushik duttas屏幕截图..但用out根本没有任何人有koushik dutta截图应用程序正在工作..? 是不是为我工作..请让我知道..提前感谢。
假设你点击了一个button:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = takeScreenshot(); saveBitmap(bitmap); } });
之后,你需要这两个方法:
public Bitmap takeScreenshot() { View rootView = findViewById(android.R.id.content).getRootView(); rootView.setDrawingCacheEnabled(true); return rootView.getDrawingCache(); } public void saveBitmap(Bitmap bitmap) { File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png"); FileOutputStream fos; try { fos = new FileOutputStream(imagePath); bitmap.compress(CompressFormat.PNG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { Log.e("GREC", e.getMessage(), e); } catch (IOException e) { Log.e("GREC", e.getMessage(), e); } }
你可以尝试这样的事情
private RelativeLayout view; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); view = (RelativeLayout)findViewById(R.id.relativeView); View v1 = view.getRootView(); v1.setDrawingCacheEnabled(true); Bitmap bm = v1.getDrawingCache(); }
方法view.getDrawingCache()将首先尝试检索先前caching的图像。 这可能会导致问题,如果你想保证你的屏幕截图是最新的。 例如,如果您的用户点击您的屏幕截图button,然后更改用户界面,然后再次单击它,第二个屏幕截图将与第一个屏幕截图相同,除非您擦除caching。 我发现以下方法更方便:
public Bitmap takeScreenshot() { View rootView = findViewById(android.R.id.content).getRootView(); Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); rootView.draw(canvas); return bitmap; }
我认为这是不可能没有根或SDK,对不起。
我很想被certificate是错误的。
不是一个应用程序,但如果你有一个USB电缆,你可以在个人电脑上安装Android SDK,并使用androidscreencast从个人电脑截图,而不必根植你的手机。