我有这段代码来截取Android中的布局截图。它不会引发任何错误,但屏幕截图也没有被删除。有人可以帮我弄清楚我在做错了什么吗?我是Eclipse的新手,我很难搞清楚事情。此外,如果有任何其他方式来截取屏幕截图,你可以发布它作为这个线程的答案吗?谢谢你的时间!
private void getScreenshot()
{
View content = findViewById(R.id.testView);
content.setDrawingCacheEnabled(true);
content.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(content.getDrawingCache());
content.setDrawingCacheEnabled(false);
File file = new File( Environment.getExternalStorageDirectory() + "image.png");
try
{
file.createNewFile();
FileOutputStream ostream = new FileOutputStream(file);
bitmap.compress(CompressFormat.PNG, 100, ostream);
ostream.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
答案 0 :(得分:2)
您是否需要在文件中添加路径分隔符?即。
File file = new File(Environment.getExternalStorageDirectory() +
File.separator + "image.png");
您应该在代码中添加更多日志和测试,以检查它是否像您期望的那样表现,例如。
记录您要创建的文件的详细信息,以确保其正确无误。
创建文件后,请测试它是否存在,例如: if (!file.exists())
Bitmap.compress函数返回一个布尔值,因此您应该检查返回值并记录它以查看它是否成功。
另一个想法:也许你需要调用ostream.flush()(API docs here)来确保缓冲的数据被写入文件?
我假设您正在编写此代码以便在您的应用中使用。您可能已经知道这一点,但DDMS提供了一种截取屏幕截图的方法,以防您只想自己拍摄。只需确保选择设备以启用屏幕截图菜单选项。