无法截屏

时间:2011-11-02 17:58:28

标签: android eclipse screenshot

我有这段代码来截取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();
                    }

                    }

1 个答案:

答案 0 :(得分:2)

您是否需要在文件中添加路径分隔符?即。

File file = new File(Environment.getExternalStorageDirectory() + 
                     File.separator + "image.png");

您应该在代码中添加更多日志和测试,以检查它是否像您期望的那样表现,例如。

  • 记录您要创建的文件的详细信息,以确保其正确无误。

  • 创建文件后,请测试它是否存在,例如: if (!file.exists())

  • Bitmap.compress函数返回一个布尔值,因此您应该检查返回值并记录它以查看它是否成功。

另一个想法:也许你需要调用ostream.flush()(API docs here)来确保缓冲的数据被写入文件?

我假设您正在编写此代码以便在您的应用中使用。您可能已经知道这一点,但DDMS提供了一种截取屏幕截图的方法,以防您只想自己拍摄。只需确保选择设备以启用屏幕截图菜单选项。