Summary from longer answer:
Normal Android apps lack permission to capture the frame buffer (specifically, they aren't members of the AID_GRAPHICS group) so you CANNOT capture the screen from an Android app without some way of getting around the privilege issue. Apps do this in one of two ways: either by root or by starting a server via the ADB interface. So, it can be done without root, but you need to start you own server and connect to it from your app (and, obviously, safely handle the security implications of this)