非rootがベストだけれど、APIとしては用意されてないのでどうしても特殊な方法になってしまうらしい。
framebufferを直接読み込むことでキャプチャを実現しているが、機種によってRGBがRBGになってたりエンディアンが異なったり色々。
2.3.3になってroot不要のキャプチャが可能になった!という話も流れているようだけど、結局システムアプリと同じ署名であれば可能で、サードパーティのアプリからはできないようだ。
逆に言えばメーカ製のアプリであればOKということで、機種によってはその機種専用のボタンショートカットなどでスクリーンキャプチャ出来るようになっていたりするようだ。
個人的にはmalwareの餌食になりそうな気がするので、ADBやDDMS経由で取得できれば十分だと思う。
APIを用意するにしても、専用のpermissionを準備して制限をかけるとか。
他、adbからの画面キャプチャ関連: