Я пытаюсь внедрить систему, в которой, если возникает неперехваченное исключение, мой обработчик исключений сделает снимок экрана активности, который будет сохранен и отправлен как часть отчета об ошибке. Возможно ли это в Android? Я передаю действие обработчику исключений в конструкторе, но каждая попытка, которую я использовал до сих пор, чтобы получить скриншот, вернула значение null.Сделайте снимок экрана в UncaughtExceptionHandler
Я попробовал следующее:
Покушение One:
private Bitmap screenshot() {
View view = activity.getWindow().getDecorView(); //also tried getDecorView().getRootView()
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap image = view.getDrawingCache();
Rect windowbounds = new Rect();
view.getWindowVisibleDisplayFrame(windowbounds);
int width = activity.getWindowManager().getDefaultDisplay().getWidth();
int height = activity.getWindowManager().getDefaultDisplay().getHeight();
Bitmap secondaryBitmap = Bitmap.createBitmap(image, 0, 0, width, height);
view.destroyDrawingCache();
return secondaryBitmap;
}
Покушение Два:
private Bitmap screenshot2()
{
View view = activity.getWindow().getDecorView(); //also tried getDecorView().getRootView()
view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Bitmap viewBmp = Bitmap.createBitmap(view.getWidth(),view.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(viewBmp);
view.draw(canvas);
return viewBmp;
}
В попытке # 1 view.getDrawingCache() возвращает null, а в попытке # 2 Bitmap.createBitmap возвращает null.
У любого разработчика Android есть идеи о том, как сделать снимок экрана в UncaughtExceptionHandler?
второй возвращает null, потому что вы пытаетесь создать растровое изображение с размером -1 или -2 – Blackbelt
О, хорошо, как это так? – user2459186
view.getLayoutParams(). Width возвращает один из fill_parent и wrap_content – Blackbelt