Невозможно сделать скриншоты - PullRequest
1 голос
/ 02 ноября 2011

У меня есть этот код, чтобы делать скриншоты макетов в 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 Ответ

2 голосов
/ 02 ноября 2011

Вам нужно добавить разделитель пути в ваш файл? т.е.

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

Вы должны добавить намного больше журналов и тестов в свой код, чтобы проверить, ведет ли он себя так, как вы ожидаете, например,

  • Запишите сведения о файле, который вы пытаетесь создать, чтобы убедиться, что он правильный.

  • После того, как вы создали файл, проверьте, существует ли он, например, if (!file.exists())

  • Функция Bitmap.compress возвращает логическое значение, поэтому вы должны проверить возвращаемое значение и записать его в журнал, чтобы убедиться в его успешности.

Еще одна мысль: может быть, вам нужно вызвать ostream.flush () ( API документы здесь ), чтобы гарантировать, что буферизованные данные записываются в файл?

Я предполагаю, что вы пишете этот код для использования в вашем приложении. Вы, вероятно, уже знаете это, но DDMS предоставляет способ делать скриншоты на тот случай, если вы захотите сделать это самостоятельно. Просто выберите устройство, чтобы включить опцию меню «Снимок экрана».

...