我们需要找到一种方法来捕捉Android屏幕,而不使用任何可在非root电话上运行的外部软件。
我的研究表明,没有办法做到这一点。无论如何,您应具有root权限,以便能够捕获设备的屏幕。
然而,进一步的研究表明,有一种方法可以在没有root权限的情况下为有限数量的设备做到这一点。作为证据,我可以在Android市场上推出以下应用程序:屏幕截图UX。它声称,该应用不需要root权限来捕获以下设备上的屏幕:
有人说,Tegra设备也支持它。
任何人都可以指出一些文档,至少在特定设备上,所以我们至少可以支持HTC手机。
编辑:目前我们正在尝试使用“/ system / bin / screencap”,但在模拟器上没有成功。 在某些设备上截取屏幕截图的可用性是否意味着它们允许使用“/ system / bin / screencap”或直接从/ dev / graphics / fb0读取?
或者他们为截取屏幕提供了一些API?
感谢。
答案 0 :(得分:0)
屏幕截图是关于android的一个古老且讨论得很多的话题。 在过去几年中,开发了几个主要选项:
在root设备上运行screencap,但你已经知道了。
运行screencap并使用系统证书签名您的应用程序:
有一个权限READ_FRAME_BUFFER但您只能在应用程序作为系统应用程序签名时获取。
But Since Android 5 things have changed.
Android 5.0允许您添加屏幕捕获和屏幕共享 使用新的android.media.projection API为您的应用程序提供的功能。 例如,如果要启用此功能,则此功能非常有用 视频会议应用中的屏幕共享。
新的createVirtualDisplay()方法允许您的应用捕获 主屏幕的内容(默认显示)进入Surface 对象,然后您的应用可以通过网络发送。仅限API 允许捕获非安全屏幕内容,而不是系统音频。至 开始屏幕捕获,您的应用必须首先请求用户 通过使用Intent启动屏幕捕获对话框来获得权限 通过createScreenCaptureIntent()方法获得。
你提到的设备已经很老了,我怀疑他们得到了android 5的正式更新,这让你有了第二个选项。