Программно сделать снимок экрана из сервиса

легко этот код

Bitmap bitmap;
View v1 = MyView.getRootView();
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

и он отлично работает, но это так, если есть активность.

Как я могу сделать снимок экрана из службы?

моя цель сделать скриншот в течение часа, e.i, чтобы каждый раз закрывать экран каждый час, например, в 12, затем в 1, затем в 2.... и так далее.

Ответы

Ответ 1

Чтобы захватить ScreenShot для вашей деятельности, вам потребуется View вашей деятельности, а какая нет в вашей службе, поэтому вам нужно сделать TimerTask, который будет вызывать вашу активность на каждый час, и ваша деятельность реагирует на него с текущим представлением, и вы можете захватить ScreenShot. (Я думаю, что это единственное решение для вашей проблемы.)

Или Если вы хотите снять ScreenShot вашего экрана вашего устройства (любое приложение), тогда вы должны разрешить root и прочитайте framebuffer для того, что даст необработанные данные текущего экрана, тогда конвертировать его в растровое изображение или любой файл изображения, который вы можете сделать в своей службе.

Ответ 2

Android Screenshot Library (ASL) предоставляет средства для снятия снимков экрана телефона без необходимости подписывать ваше приложение или иметь привилегированный (корневой) доступ к системе Android Нажмите здесь для ASL