Снимок экрана черный - PullRequest
       10

Снимок экрана черный

0 голосов
/ 09 декабря 2011

Я пытаюсь сделать снимок экрана и сохранить его в виде файла png на SD-карте.Мой файл сохраняется с размером файла 1,57 Кб, но он черный.Я использую следующий код:

View content = findViewById(R.id.id_ll_SurfaceView);
content.setDrawingCacheEnabled(true);
Bitmap b = content.getDrawingCache();
b.createBitmap(800, 480, Config.ARGB_8888);
File file = new File("/sdcard/test.png");
try
{
    file.createNewFile();
    FileOutputStream fos = new FileOutputStream(file);
    FileOutputStream(
        Environment.getExternalStorageDirectory().getAbsoluteFile()+"/test.jpg"));
    b.compress(CompressFormat.PNG, 100, fos);
    fos.close();
    Toast.makeText(getApplicationContext(), "Saved", 0).show();
}
catch (Exception e)
{
    e.printStackTrace();
}

Ответы [ 3 ]

2 голосов
/ 09 декабря 2011

Делаете ли вы снимок экрана с помощью onCreate () .. Вам нужно подождать, пока представление полностью не отобразится на экране. Используйте ViewTreeObserver, чтобы получить обратный вызов, когда представление полностью нарисовано на экране.

добавить этот код в onCreate ..

ViewTreeObserver vto = yourView.getViewTreeObserver();

vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
    layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
    yourScreenshotFunction();
  }
});

Теперь реализуйте эту функцию

public void yourScreenshotFunction(){
 //Add your screenshot taking code here..
}

См. Мой вопрос здесь .. Я объяснил процедуру под заголовком Окончательный результат ..

1 голос
/ 09 декабря 2011

Я просто делаю,

main.setDrawingCacheEnabled(true);
screenshot = Bitmap.createBitmap(main.getDrawingCache());
File file = new File("/sdcard/test.png");
        try
        {
            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            screenshot.compress(CompressFormat.PNG, 100, fos);
            fos.close();
            Toast.makeText(getApplicationContext(), "Saved", 0).show();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }   

Здесь main - это вид вашей деятельности ..

EDIT: Посмотрите на этот урок Android снимок экрана с кодом

0 голосов
/ 19 декабря 2011

Перейти к затмению ...

  1. Перейти к Windows
  2. Открыть перспективу
  3. DDMS
  4. Выберите эмулятор или телефон слевастороны.
  5. Нажмите на значок камеры чуть выше на панели инструментов.
  6. ЛЕГКО КАК ТО:)
...