There is a long discussion of this on android-developers, but the short answer is: You can’t programatically take a screenshot of an android device’s screen at the moment, unless
- You have root access on that phone, or
- Your application is a system application
The Android Manifest permission READ_FRAME_BUFFER exists (see the api docs here), but can presently only be used by system applications.
There are various reasons for this, one being that it is a security risk. If an background can take a screenshot of the phone’s screen at any time, then people could use OCR techniques to sniff user’s passwords as they were typed in, among other private information. So no, a VNC application is not possible at the moment without root. To take a screenshot from your computer (while the phone is plugged in via usb) you can use DDMS.
You can try the following library: http://code.google.com/p/android-screenshot-library/ Android Screenshot Library (ASL) enables to programmatically capture screenshots from Android devices without requirement of having root access privileges. Instead, ASL utilizes a native service running in the background, started via the Android Debug Bridge (ADB) once per device boot.
ASL utilizes background native service which performs screen capturing on demand from an application that uses the library. This service has to be started using Android Debug Bridge (ADB), which is an utility program bundled with Android SDK. The service provides screenshot-taking functionality for any application that uses ASL for as long as the phone isn’t rebooted, regardless of whether or not it is connected to the PC.
Not an app, but if you have a USB cable, you can install the Android SDK on a PC and take screenshots from the PC with androidscreencast, without having to root your phone.