2011-09-26 56 views
3

是否有访问Android设备 的截图编程的任何简洁的方式。我正在寻找一些15-20fps。Android截图 - 如何?

我发现一个代码 android\generic\frameworks\base\services\surfaceflinger\tests\screencap\scr eencap.cpp, 我建的可执行文件,并把它放在/数据,改变了模式777

但是当我试图使用ADB shell来执行它,它给了下面的错误。

# chmod 777 test-screencap 
chmod 777 test-screencap 
# ./test-screencap test 
./test-screencap test 
screen capture failed: Function not implemented 

我也知道,由Android团队建议 我们可以访问FB0但它不是一个正确的方法。是否可以访问框架 图层的屏幕截图。我beleive面护圈组成单独的层并且给它 framebuffer.Where正是这样做?应用程序能否访问 这样的代码。

有一些Java应用程序也使用它DDMS真正抓住这个 的帧缓冲器数据没有root权限。但fps真的很差。

我beleive应该有一些或做上述工作的其他方式。 请给我建议一些干净的做法。欢迎提出建议。

+0

那么你想写一个手机应用程序,试图拍摄手机的屏幕截图,或者这是一个PC程序在通过USB连接时拍摄手机的屏幕截图? – JPM

+0

这是一个手机应用程序,我想通过它获取屏幕截图。 – junky

回答

1

如果您没有固定电话,那么您尝试做的事情是不可能的,有一个应用程序在那里做你正在尝试的,Screenshot ER。最新的OEM的是把它变成自己的/系统/应用程序现在...所以你可以使用他们的应用程序,看看这个article对于已启用此功能的设备。除此之外,你与屏幕很坚持,但也有意义撷因为这使可能会导致应用程序保存屏幕捕获和发送这些信息出来,使病毒类型的应用程序...

他人信息通过..... Eclipse可以获得DDMS视角的屏幕截图。如果你看看Eclipse DDMS代码库,它实际上也是一个独立的应用程序。您可能可以使用此Java代码。

AdbHelper.getFrameBuffer(AndroidDebugBridge.getSocketAddress(), this); 
0

看看droid VNC Server 这是一个开源项目,它可以复制源代码到你的私人电脑。 (http://github.com/oNaiPs/droid-VNC-server)。我正在调查VNC如何做,但要做到这一点真的很难。

Read framebuffer content是一个很好的解决方案也。但它只适用于android < 3.x。我不知道如何解决它在Android 4.x上的工作。如果您知道如何(看到我的建议后),请在此分享。通过我的研究,我发现有很多人在寻找这个。

希望这会有所帮助。 [email protected]。 Android的自由撰稿人。

+1

更新:在android 4.x(也许在android 3.x上),fb0只包含引导时的设备映像。我的意思是启动后,dev/graphics/fb0不再包含精确的屏幕内容。 –