有没有任何巧妙的方式来访问Android设备的截图 编程。我正在寻找15-20fps。
我找到了一个代码
android\generic\frameworks\base\services\surfaceflinger\tests\screencap\scr eencap.cpp
,
我构建了可执行文件并将其放入/ data并更改了模式777
但是当我尝试使用adb shell执行它时会出现以下错误。
# chmod 777 test-screencap
chmod 777 test-screencap
# ./test-screencap test
./test-screencap test
screen capture failed: Function not implemented
我也知道我们可以访问fb0,但它不是建议的正确方法 由android团队。是否可以访问框架中的屏幕截图 层。我相信表面flinger组成单独的层并给它 framebuffer。究竟是这样做的?应用程序是否可以访问 这样的代码。
还有一些java应用程序也使用ddms来实际捕获它 没有root访问权限的framebuffer数据。但是fps真的很差。
我相信应该有一些或其他方式完成上述工作。 请建议我做一些巧妙的方法。欢迎提出建议。
答案 0 :(得分:1)
如果您没有root手机,那么您尝试做的事情是不可能的,那里有一个可以完成您尝试的应用程序,Screenshot ER。最新的OEM现在将它放入他们的/ system / apps中...因此您可以使用他们的应用程序,请查看此article以查找已启用此功能的设备。除了你真的卡住了,但有启用屏幕捕获的影响,因为这可能导致应用程序保存屏幕捕获并发送该信息,启用病毒类型的应用程序......
其他人的信息 .....通过Eclipse,您可以使用DDMS视角获取屏幕截图。如果您看一下Eclipse DDMS代码库,它实际上也是一个独立的应用程序。然后,您可以使用此Java代码。
AdbHelper.getFrameBuffer(AndroidDebugBridge.getSocketAddress(), this);
答案 1 :(得分:0)
看看droid VNC Server 这是一个开源项目,您可以将源代码克隆到您的私人PC。 (http://github.com/oNaiPs/droid-VNC-server)。我正在调查VNC如何做,但这样做真的很难。
Read framebuffer content也是一个很好的解决方案。但它只适用于android< 3.x。我不知道如何解决它在android 4.x上工作。如果您知道如何(在看到我的建议后)请在此处分享。通过我的研究,我发现很多人都在寻找这个。
希望这会有所帮助。 nguyenminhbinh1602@gmail.com。 Android自由职业者。