I am developing an application which helps user to capture android screen shot (Android 4.x) . I know that framebuffer is broken on android ICS. I hear that we can use ScreenShotClient to do this as below.
ScreenshotClient screenshotClient = new ScreenshotClient();
screenshotClient->update();
But, what library I have to import to use it? Is it available to use under jni code?
The library you need is called libsurfaceflinger_client.so. You can pull it from any device running Gingerbread
or higherversion of Android, with commandOn ICS or JB, class ScreenshotClient is part of
libgui.so. The makefile for screencap which is the example of using ScreenshotClient, suggests that linker may need other libraries:Also, the code of
screencap.cppgoes as follows:This means that at least you must check that update() succeed. Unfortunately, unless teh device is rooted, the apps cannot be granted permission to read from
/dev/graphics/fb0and use the fallback of/system/bin/screencapor/system/bin/screenshot.