安卓手机如何截屏?

3

有没有一种简便的方法以编程方式访问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团队建议的正确方法。在框架层面上,是否有可能访问屏幕截图?我相信surface flinger会合成单个图层并将其提供给帧缓冲区。这是在哪里完成的?一个应用程序能否访问这些代码?
有一些Java应用程序也使用ddms来捕获此帧缓冲区数据而无需root访问权限。但帧率真的很差。
我相信应该有一种或另一种方法来完成上述工作。请为我提供一些简洁的方法。 欢迎提出建议。

你是想编写一个手机应用程序来截取手机屏幕截图,还是想通过 USB 连接拍摄手机屏幕截图的 PC 程序? - JPM
这是一个手机应用程序,我想通过它获取屏幕截图。 - junky
2个回答

1
您试图做的事情如果您没有root权限的手机是不可能的,有一个应用程序可以实现您想要的功能,Screenshot ER。最新的OEM现在将其放入他们的/system/apps中...所以您可以使用他们的应用程序,查看此article以获取启用此功能的设备信息。除此之外,您真的很难解决问题,但是启用屏幕截图存在某些影响,因为这可能会导致应用程序保存屏幕截图并发送该信息,从而启用病毒类应用程序...

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

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

0

请看droid VNC Server 这是一个开源项目,您可以将源代码克隆到您的私人电脑上。(http://github.com/oNaiPs/droid-VNC-server)。我正在研究VNC如何工作,但是这真的很难做到相同。

读取帧缓冲区内容也是一个不错的解决方案。但它只适用于android <3.x。我不知道如何修复它以在android 4.x上运行。如果您知道如何(在看到我的建议后),请在此分享。通过我的研究,我发现有很多人在寻找这个。

希望这有所帮助。 nguyenminhbinh1602@gmail.com。 Android自由职业者。


1
更新:在Android 4.x上(也许在Android 3.x上),fb0仅包含设备启动时的图像。我的意思是,在启动后,dev/graphics/fb0不再包含屏幕内容。 - Nguyen Minh Binh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接