我正在开发一款Android应用程序,该程序可以将屏幕共享到另一个Android设备上。此应用将作为服务在后台运行。
我想捕获屏幕(当前屏幕),将其保存为JPEG格式,并不断通过UDP发送到其他Android设备。
但我的问题是如何通过捕获帧缓冲区来捕获当前屏幕。
请帮忙解决。
我正在开发一款Android应用程序,该程序可以将屏幕共享到另一个Android设备上。此应用将作为服务在后台运行。
我想捕获屏幕(当前屏幕),将其保存为JPEG格式,并不断通过UDP发送到其他Android设备。
但我的问题是如何通过捕获帧缓冲区来捕获当前屏幕。
请帮忙解决。
Android framebuffer(以及其他Linux系统)可以通过打开/dev/graphics/fb0设备来访问。这需要root权限,即使拥有root权限,也不能在所有设备上正常工作。大多数设备使用一对framebuffer并在它们之间切换。更大的问题是,即使有了root权限,Dalvik机器的用户ID也没有权限访问帧缓冲区(fb0)设备。这意味着你将永远无法直接从Java代码中打开和读取fb0设备。你需要运行一个原生的Linux应用程序作为root,并获得用户的允许才能访问fb0。我成功地做到了这一点,虽然这相当具有挑战性,但谷歌并不赞成。我仍然可能把它变成商业应用程序,但是限制和不兼容性降低了概率。